DOUG LLOYD:だから私たちの中で PHPの構文のビデオ、 私たちはどのようにPHPについて多くのことを話しました コマンドラインで使用することができ なるようにプログラムを実行します 我々はCからではかなり精通しています しかし、私も述べたように そのビデオで、PHP 最初にするために開発されました Webプログラミング、ウェブサイトを実装します。 だから、このビデオでは、我々はしています どのように私たちの話をするつもりは Web開発コンテキストでPHPを使用しています。 我々は、から、すでに知っています、 HTML上の私たちのビデオ、 ウェブサイトが構築されていること HTMLタグのセットのうち それは意味的に定義します ウェブページの構造。 しかし、ウェブサイトであること 純粋なHTMLで構築 非常に苦しみます、 非常に重大な制限。 この制限を説明するために、 それでは、次のことを考えてみましょう。 だから今私は、Webページを構築したいです ユーザーがそれを訪問するたびに、その、 それは私に電流を提供します マサチューセッツ州ケンブリッジの時間。、 最新分にそれを表示します。 私は今、この権利を作っていた場合は、 私はこのような何かを言うかもしれません。 私が持っているので、Cambridge--の現在時刻 HTMLタグ、ヘッドタグ、タイトルタグ、 本体は、電流をtags-- ケンブリッジでの時間は、14時08分です 軍用時間をプリントアウトします。 それは今14:09、14時09分だ場合はどうなりますか? さて、これまで、HTMLで、私が持っています 行くと午後2時09分に変更します。 そして、1分後、 私は再びそれを変更する必要があります。 そして、1分後、 私は再びそれを変更する必要があります。 あなたが想像できるように、それはです これまでおそらく最悪の仕事。 あなたは、Webページのウェブマスターなら、 1分ごと、1日24時間、 あなたがして、現在の時刻を更新する必要があります 手動tim​​e.htmlを開き、変更 言うべきコードのちょうどそのスニペット 時間と分で現在の時刻。 それはおそらく非常にではありません 経営資源の有効利用、 両方の人間と計算。 すべてのHTMLあるサイト 完全に静的です。 あなたが更新できる唯一の​​方法 コンテンツ、私たちは見てきたように、 手動でそれらのソースを開くことです ファイルは、それらを編集し、それらを保存します。 そして、ときにユーザー ページを更新し、 または最初のページを訪問 時間、彼らは最新のコンテンツを取得します。 しかし、我々はしましたという理由だけで それを手動で編集しました。 私たちはそこにいくつかのPHPを混合するために起動した場合、 我々のコードは、多くはより柔軟な得ることができます。 そして、私たちは私達のページのための方法を持つことができます 動的に、または自分自身を更新し、 私たちの貧困層を必要とせず 前の例のウェブマスター 手動で物事を更新します。 彼らは自動的にそれを行うことができます。 私たちが介入する必要はありません。 我々はいくつかの睡眠を得ることができます。 どのおそらく良いことであればあります あなたは、Webプログラミングをたくさんやっています。 だからCS50 IDEで、我々は実行します Webサーバは、Apacheと呼ばれます。 これは、非常に一般的に使用される情報 オープンソースのWebサーバシステム。 このシステムは、持っています 解釈する能力 場合に有用であることが起こっている、PHP、 あなたは、任意のPHPプログラミングをしたいです。 そして、CS50 IDEで、我々はコマンドを持っています 行うにはこれは非常に簡単にするために、 開始apache50。 そして、そのスラッシュ パスにスラッシュ、スラッシュ DIRは、それはの本当に一般的な方法です あなたがここで指定したものを示します 特定のパスです ディレクトリあなたに ルートになりたいです サイト、またはルートページ、 またはフォルダからWebサーバー ファイルを検査し、提供するために開始されます それらを要求するクライアントにまで。 それでは、ちょうどに、CS50 IDEにオーバーポップましょう これがどのように機能するか、本当に迅速に、あなたを示しています。 だからここCS50のIDEで、私がいますよ 週ゼロナインと呼ばれるディレクトリ。 そして私は私が持っているtwo--持っています 単にlsコマンドを実行 上記の私が持っていることを示すために ここに2つのディレクトリ、PHP、 私が使用したファイルのセットがあります PHPの構文ビデオ、その後、PHP-ウェブ、 ファイルのセットはである私 このビデオで使用したいと思います。 そして、私は開始したいと思います Webサーバインスタンス PHP-webフォルダの内容 ファイルがアップサービスされているとおりです。 だから私は何をするつもり? 私はapache50スペース​​を入力しようとして 、宇宙PHP、ダッシュウェブを開始します。 それはディレクトリへのパスです 私は現在、午前場所から。 それから私は、Enterキーを押します。 これは何をするだろう ここでものを少し。 そして、それは言うために起こっています、 Apacheが正常に起動しました。 あなたのサイトはat--使用可能になり、 その後、サイトのURLがあります。 だから私は何をするつもり? 私はすぐにこれをコピーするつもりです。 そして、私はup--開き、するつもりです 私は少しズームアウトしますhere-- 私は開くつもりです Chromeで新しいタブ。 そして、私はそのURLを訪問するつもりです。 私はEnterキーを押しますするつもりです。 これは、ロードするために起こっています。 そして私は再びズームアウトします。 そして、私たちはここで見ることができますです 私のPHPのWebディレクトリの内容。 だから今は基本的に何が起こっているのか ここCS50 IDEの私のインスタンスがあり、 これらのファイルを提供しています それらを要求します誰。 そしてもちろん、オーバー このビデオでは、我々は一種のよ これらの束を見てみましょう コンテキスト内の異なるファイル。 あなたのApacheのことをテストするには サーバが動作しています、 一般的に起こっています CS50 IDEのケースのように、 しかし、あなたはより一般的にこれを行う場合、 あなたは、あなた自身のウェブの構築を開始 サーバーは、本当にあります アナログの共通の並べ替え、 通常の "Hello World" PHPのWeb開発のために使用。 ファイルを持つことです ちょうどこのcode--から成ります PHP情報を設定し、PHPの区切り文字、 括弧、間にセミコロン。 どちらが、基本的には特別です 示していますPHPの関数 あなたが実行しているPHPのバージョン。 だからCS50 IDEで、私が持っています 利用可能なそのファイルだけ これがどのように見えるかをお見せします。 だから、私は、インデックスで探しています 私のPHPインスタンスから。 私のApacheインスタンスが実行されています PHP-ウェブの内容。 そして、私は、ファイルがここにinfo.phpを呼ばれています。 私はそれをクリックし、ズームアウトするつもりです。 これは、あなたが行っているものです かなり多く、確認してください。 これはちょうどことを私に語っています 私のApacheサーバが動作しています。 そして、これは、明らかに、あります 私が実行しているPHPのバージョン。 これはに私のアナログでの "Hello World。" だから私は物事が動作している知っています。 だから我々は行ってもいいです。 我々はここから進むことができます。 それでは、それを再検討しましょう 私たちがした時の例 私たちの貧しいウェブマスターとの話 誰が常にページを更新しなければなりませんでした。 これは、どのようにのための修正であるかもしれません 私は物事を実装するだろう ウェブマスターはしませんでしたように、 時間を更新し続ける必要があります。 それはちょうど一種のだろう 自動的に行われます。 以下のダウン、HTML、それはです 1つの例外を除いて、かなり類似しました。 しかし、ここで私が一番上にあるいくつかのPHPを持っています。 私は、明らかに、これを求めています 関数date_default_timezone_set。 そして、我々はについてのすべての話をしません CS50でこれらの機能、 PHPはおそらく持っているので、 数万。 それが少しあるかもしれません 誇張が、それができない場合があります。 それが組み込まれ多くの機能を持っています。 そして、これは明らかに関数であります 米国/東部としての私のタイムゾーンを設定し、 これは私はタイムゾーン 現在、この動画を作りました。 それから私は、呼び出しを行います 日付、呼び出される関数です。 そして、どうやら、私は記憶しています 彼の時間、と呼ばれるものの。 それでは、ここで起こっているの? まあ、基本的には何が されて起こって、私は電話を作ってるんです に起こっているいくつかのサーバに 時間は、現在あるものを私に教えてください。 そして、私は形式に変換してい 時間、分、秒。 そして、それは資本Hだ理由はこれです 12、私は24時間の時間を与えないだろう 小文字の時間になる時間の時間、。 そして、私はちょうどそれを格納しています 時間と呼ばれる変数です。 だから、PHPの2行目 そこに、関数の呼び出し、 日付、ちょうどなっています いくつかの文字列であり、 私に日付を与えるつもり、と 時間、およびその他の情報の束。 そして、そこに最初の引数は、彼のこと、 ただ重要な部分を抽出しています 私はこの例の気にすることを、 その時、分、秒です。 だから、起こっていることすべてです。 だから私は、格納する変数$時間のこと。 そして、ダウン時 私は、そこに非常に底 そのための速記を持っています 現在の時刻をプリントアウトします。 だから、僕は印刷するつもりです 現在の時刻が何であるかを。 それでは、この中を見てみましょう CS50 IDEと私たちが今しているかを確認 そのウェブマスターに多くの問題を節約できます。 すべての権利なので、ここで私は再び午前 バックルートディレクトリで 私のApacheインスタンスの。 そして、私はここにファイルと呼ばれるtime.phpを持っています。 私はちょうどそれをクリックするつもりです。 そして、私はので、上にスクロールします 私たちはかなり遠くにズームしています。 現在の時刻が午前14時20分34秒です。 だから私はそれを時間をやっています、 分、秒。 そして、私はリフレッシュすることができます ページと新しい時間を取得します。 --41。 私はページを更新するつもりです そして、新しい時間、44、46、47を得ます。 だから、私は明らかにないです 自分は何も変更。 私はこちらのページを更新しています。 だから私はそれを編集して戻ってそこにすることはできません。 そして、私はあなたを約束し、私はしないでください いずれかの同盟国を持っています ファイルを編集している人 側の私に代わって。 私はちょうど、そのPHPの関数を使用しています 私のための時間を生成するための時間、 自動的に。 、私は眠ってる場合でも、だから そして、私のWebサーバが実行されています、 そのページを訪れたユーザーはまだです 正確に現在の時刻を取得するつもり。 だから、かなり良いです。 私のサイトは、よりダイナミック作りました 過言ではないPHPコードと。 これは、コードの2行だけだったと print文を少し。 そして、すでに私が持っています はるかにダイナミックなサイト その最初の例よりも、私たちは見ました ビデオの冒頭に。 だから、PHPの構文のビデオからリコール PHPインタプリタの実行時にその 私たちのプログラムは、それがすべてを無視します それは、PHPの区切り文字の中にはありません それを吐き。 その例では、どのようなもの それが吐きれたことを、HTMLました。 そして、これは私が今できることを意味します 一緒にHTMLとPHPをまき散らします。 インタプリタはちょうどなるため HTMLと文字通り出力それを無視します。 右、良いどれですか? おそらく、 一日の終わりに、 私はに私のサイトを希望します HTMLで構成すること。 任意のWebブラウザが解釈できるように、 それは、ページのHTMLを理解します 私たちのものとしてそれをレンダリング 実際に人間として理解することができます。 そして、私はPHPを使用することができます 私のサイトの部品の 私を必要とする必要ダイナミズム、 常に更新し、物事を持っています。 静的情報 同じ滞在することができます。 [OK]を、ので、それは大丈夫です。 しかし、なぜ私はこれをしますか? なぜ私は、HTMLやPHPを混ぜるでしょうか? 私は、すべてのプリントアウトができました HTML、PHPの印刷機能を使用して。 なぜ私はそれをやっていないのですか? 第二のためにそれについて考えてみよう。 なぜ、私はちょうど私がout--印刷することができたとき ちょうど言うPHPの行を持つことができ、 印刷HTMLタグ、プリントヘッド。 なぜ私はそれをやっていないのですか? なぜ私はPHPとHTMLを混合していますか? さて、あなたは思われる場合 それについて秒。 PHPは、インタプリタが持ちます それは見るものを解釈します。 そしてそれは、持っているために起こっています コー​​ドの行を実行します。 HTMLを出力します。 オープンヘッドタグを出力します。 オープンタイトルタグを出力します。 それはしているつもりです 実行し、解釈 方法の一つ一つのステップという。 理由だけではなくせありません インタプリタは、ちょうどごまかします それは理解していないもの そして、、自動的にそれを行いますか? それは私に多くの時間を節約するために起こっています 一緒に私のHTMLとPHPを混合します。 我々がない理由となるようです ちょうどオープンPHPの区切り文字を持っています して、ちょうど全体を印刷 1つの巨大なPHPなどのページの内容 その後、機能への印刷を呼び出し、 近くにPHPの区切り文字と我々が行っています。 私たちは一緒にそれらをミックスだから、なぜです。 これまでのところ、我々はあまりにも多くのを見ていません 一般的なPHPの構文との違い。 これは非常に単純されています。 我々はすでに見てきました 疑問符、同等。 私たちは、新しい関数呼び出しのカップルを見て、 本当に空想何が起こっていません。 のは多分ものを作ってみましょう 少し手の込んだ。 私たちは、情報を渡す場合 別のPHPファイルとの間に、 多分ユーザーはできるように 私に情報を送信します。 そして、私は何かを行うことができます それ別のページ上で。 だから、PHPはをサポートしています スーパーグローバルと呼ばれるもの かなり素晴らしいですね変数、。 彼らは本当にしています 巨大な連想配列 それは、この実装を支援 通過の機能 そのPHPファイル間の情報 弊社のWebサーバー上に存在しています。 これらのスーパーの最初の グローバルは、$ _GETと呼ばれています。 そして、それはおそらくです 理解するための最も簡単な。 何が$ _GETとどうなりますか? まあ、基本的には、ユーザーがあります 余分な情報を入力しようとして 私たちのURLの末尾に。 そして、彼らはどのようなタイプ、と仮定すると それは、特定の方法でフォーマットされています ちょうどである、クエリ文字列と呼ばれます キー値ペアのセットを分離 アンパサンドで。 これらのキーと値のペアは次のようになります $ _GET連想配列に格納されています。 そして、上の私たちのビデオから PHPの構文は、我々は知っています を操作する方法 すでに連想配列。 だからここの例であり、 多分私はいくつかのPHP、 キーと値のペアのすべてを抽出します ユーザーがURLに供給されます。 だから、私はオープンPHPの区切り文字を持っています。 私は、foreachループを持っています。 私はスーパー渡って反復処理してい グローバル配列は、$ _GETと呼ばれます。 そして、私は参照できるようにしたいです キーと値の両方に。 そして、私はちょうどそれらを印刷しています うち、上の各1明らかに ここに、独自の段落タグ。 私はいくつかのHTMLをプリントアウトしています そして、値を補間 その文にキーと値の。 それでは、どのようにこれを見てみましょう 実際に私たちのIDEで動作します。 そして多分これは役立ちます 少し説明 実際にやっている何を得るの。 だから私はここに私のWebルートに戻ってきました。 そして、私はズームインよ 少しはあなたを表示します 私は、get1.phpというファイルを持っています。 それでは、get1.phpをクリックしてみましょう。 そして、私は、任意のコンテンツを見ていませんよ。 それは右、奇妙な? まあ、それは本当に実際に。 私は提供しなかったため、 URLで何か。 私はget1.phpに行くが、私です 任意のキーと値のペアを提供していませんでした 私のクエリ文字列の一部として。 それでは、クエリ文字列を追加してみましょう このファイルには何ができるかを参照してください。 クエリ文字列を開始するには、あなた ただ疑問符を入力します。 その後、多分私は名前=ダグ&年= 2015を言いますよ。 そして私は、Enterキーを押します。 今何が起こっているかがわかります。 私はget1.phpまだです。 しかし、今、私は与えてきました キーと値のペアは、と私はよ 自分自身でそれらをプリントアウト paragraph--名、Doug--年、2015年。 それはまさに、コードだけで私たちです 少し前のスライドで見ました。 そして、私は多分別のものを追加したい場合 キーと値のペア、およびクラス= CS50。 今、私は別のキー値を持ちます プリントアウトしていますペア とき、私はもう一度、URLを再訪。 今、多分これではありません ものすごくよくフォーマットされています。 だから私はget.phpの別のバージョンがあります。 それはget2.phpです。 この差 一つは、私はCSSファイルを持っています、 それがAのものをフォーマット もう少しうまく私のため。 それは、多分ほとんどありません 世界の美しいCSS。 しかし、それはそれを行うためのもうひとつの方法です。 だから私はまだアクセスを得ることができます $ _GETを使用して、私の変数へ。 そして、この場合には、私は一種のです CSSはもう少し凝った作り。 そして、我々はにオーバーポップ場合 第二のための私のIDE、 私はPHPのWebであなたを紹介します ここでは、ディレクトリ、get2.php。 ここでは、いくつかのHTMLをそれを開くでしょう。 どうやら私はそれにリンクしてい 私が話していたCSSファイル。 私は、テーブルタグを開きます。 そして、ここに私のforeachループです。 ここで、その何 前のスライドに示しました。 唯一の違いは、私です このキーと値のCSSを持っています 私はそれに適用していたスタイリング。 しかし、それは、私がやっているすべての私はされるのです すべて取得するために$ _GET渡って繰り返し処理 キーと値のペアの。 そして、私はテーブルとして、それらをプリントアウトしています。 そして、どうやら、私はキーをフォーマットしてい 片道で、