DOUG LLOYD: Jadi dalam kita video pada PHP sintaks, kita bercakap banyak tentang bagaimana PHP boleh digunakan pada baris arahan untuk menjalankan program dengan cara yang kami cukup biasa dengan dari C. Tetapi seperti yang saya juga menyebut kerana video, PHP pada mulanya dibangunkan untuk melaksanakan pengaturcaraan web, laman web. Dan sebagainya dalam video ini kami akan bercakap tentang bagaimana kita menggunakan PHP dalam konteks pembangunan web. Kita tahu, sudah, dari video kami pada HTML, bahawa laman web yang dibina daripada satu set tag HTML bahawa semantik menentukan struktur laman web. Tetapi laman web yang dibina dengan tulen HTML mengalami yang sangat, batasan yang sangat serius. Dan untuk menggambarkan had ini, mari kita mempertimbangkan berikut. Jadi sekarang saya mahu untuk membina laman web itu, apabila pengguna lawatan itu, ia memberikan saya semasa masa di Cambridge, Mass., memaparkan ia ke minit terkini. Jika saya telah membuat hak ini sekarang, Saya mungkin berkata sesuatu seperti ini. Masa semasa di Cambridge-- jadi saya perlu Tag, tag kepala, tag tajuk, badan tags-- semasa masa di Cambridge adalah 14:08, mencetak masa tentera. Apakah yang akan berlaku jika ia kini 02:09, 14:09? Baik setakat ini, dengan HTML, saya mempunyai untuk masuk dan menukar kepada 14:09. Dan kemudian satu minit kemudian, Saya perlu menukar sekali lagi. Dan kemudian satu minit kemudian, Saya perlu menukar sekali lagi. Dan seperti yang anda boleh bayangkan, itu mungkin kerja yang paling teruk pernah. Anda webmaster untuk laman web, dan setiap minit, 24 jam sehari, anda perlu mengemas kini masa semasa oleh secara manual membuka time.html dan menukar hanya itu coretan kod untuk mengatakan masa semasa dalam jam dan minit. Itu mungkin tidak yang sangat baik menggunakan sumber, kedua-dua manusia dan pengiraan. Laman web yang semua HTML benar-benar statik. Satu-satunya cara anda boleh mengemas kini kandungan, seperti yang kita telah lihat, adalah untuk membuka secara manual sumber mereka fail, mengedit, dan menyelamatkan mereka. Dan kemudian apabila pengguna menyegarkan halaman, atau melawat halaman tersebut untuk pertama masa, mereka akan mendapat kandungan terbaru. Tetapi hanya kerana kita ada manual menyuntingnya. Jika kita bermula untuk campuran beberapa PHP di sana, kod kami boleh mendapatkan banyak yang lebih fleksibel. Dan kita boleh mempunyai cara untuk halaman kami menjadi dinamik, atau mengemas kini diri mereka sendiri, tanpa memerlukan miskin kami webmaster dalam contoh sebelum ini menjadi manual mengemaskini sesuatu. Mereka boleh melakukannya secara automatik. Kami tidak perlu campur tangan. Kita boleh mendapatkan beberapa tidur. Yang mungkin satu perkara yang baik jika yang anda lakukan banyak pengaturcaraan web. Jadi dalam CS50 IDE, kami menjalankan pelayan web dipanggil Apache. Ia adalah sangat biasa digunakan, sumber terbuka sistem pelayan web. Sistem ini mempunyai keupayaan untuk mentafsir PHP, yang akan menjadi berguna jika anda mahu melakukan apa-apa pengaturcaraan PHP. Dan dalam CS50 IDE, kita mempunyai arahan yang untuk membuat ini sangat mudah untuk dilakukan, apache50 bermula. Dan kemudian palang yang jalan, slash ke, slash dir, itu hanya satu cara yang benar-benar biasa menunjukkan apa yang telah dinyatakan di sini adalah laluan kepada sesuatu direktori yang anda mahu menjadi akar lokasi, atau halaman akar, atau folder dari mana pelayan web anda akan mula memeriksa fail dan berkhidmat mereka kepada pelanggan yang meminta mereka. Jadi mari kita pop ke CS50 IDE, hanya untuk menunjukkan kepada anda, benar-benar cepat, bagaimana ini berfungsi. Jadi di sini dalam CS50 IDE, saya dalam satu direktori dipanggil Minggu Zero Nine. Dan saya mempunyai two-- Saya mempunyai menyempurnakan suatu perintah LS hanya di atas menunjukkan bahawa saya mempunyai dua direktori di sini, PHP, yang merupakan set fail yang saya digunakan dalam video sintaks PHP, dan kemudian PHP-laman web yang merupakan set fail yang saya ingin menggunakan dalam video ini. Dan saya ingin memulakan contoh pelayan web dengan kandungan folder PHP-web kerana fail-fail tersebut disampaikan ke atas. Jadi apa yang saya akan lakukan? Saya akan menaip ruang apache50 mula, PHP ruang, dash web. Itulah laluan ke direktori dari mana saya kini am. Kemudian aku tekan Enter. Ia akan melakukan sedikit sedikit barangan di sini. Dan kemudian ia akan berkata, Apache bermula dengan jayanya. Laman web anda adalah kini boleh didapati at-- dan kemudian ada URL untuk laman web ini. Jadi apa yang saya akan lakukan? Saya akan cepat menyalin ini. Dan saya akan membuka up-- dan Saya akan zum keluar sedikit sini-- Saya akan membuka tab baru dalam Chrome. Dan saya akan melawat URL tersebut. Saya akan tekan Enter. Ia akan memuatkan. Dan saya akan zum keluar lagi. Dan kita boleh lihat di sini adalah yang kandungan direktori web PHP saya. Jadi sekarang apa yang pada asasnya berlaku di sini ialah, contoh saya CS50 IDE berkhidmat sehingga fail-fail ke sesiapa yang meminta mereka. Dan sepanjang video ini, kami akan menyusun daripada kita lihat pada sekumpulan ini fail yang berbeza dalam konteks. Untuk menguji bahawa Apache anda pelayan sedang bekerja, yang biasanya akan menjadi kes dalam CS50 IDE, tetapi jika anda melakukan ini lebih umum, dan anda mula membina web anda sendiri pelayan, ada benar-benar jenis biasa analog kepada, "Dunia hello," yang biasanya digunakan untuk pembangunan PHP web. Iaitu untuk mempunyai fail yang yang terdiri daripada hanya code-- ini sebuah pemisah PHP ditetapkan dengan PHP info, kurungan, koma bertitik di antara. Yang pada dasarnya yang istimewa PHP fungsi yang memberitahu anda apakah versi PHP anda jalankan. Jadi dalam CS50 IDE, saya mempunyai fail yang didapati hanya untuk menunjukkan kepada anda apa ini akan kelihatan seperti. Jadi, saya melihat indeks saya daripada contoh PHP saya. Contoh Apache saya berjalan kandungan PHP-Web. Dan saya mempunyai fail yang di sini dipanggil info.php. Saya akan klik, zum keluar. Ini adalah apa yang anda akan untuk melihat, cukup banyak. Ini hanya memberitahu saya bahawa server Apache saya bekerja. Dan ini adalah, nampaknya, versi PHP yang saya berjalan. Ini adalah analog saya untuk "hello dunia." Jadi saya tahu perkara-perkara yang operasi. Oleh itu, kita baik untuk pergi. Kita boleh meneruskan dari sini. Jadi mari kita melihat semula yang contoh masa kita bercakap mengenai dengan webmaster miskin kami yang terpaksa mengemas kini halaman sentiasa. Ini mungkin menjadi satu penyelesaian untuk bagaimana Saya akan melaksanakan perkara-perkara supaya webmaster tidak perlu terus mengemas kini masa. Ia akan hanya jenis berlaku secara automatik. Ke bawah di bawah, HTML, ia agak sama, dengan satu pengecualian. Tetapi di sini saya telah mendapat beberapa PHP di bahagian atas. Saya, nampaknya, dipanggil ini fungsi date_default_timezone_set. Dan kita tidak bercakap mengenai semua fungsi-fungsi ini dalam CS50, kerana PHP mempunyai mungkin puluhan ribu. Yang mungkin menjadi sedikit yang keterlaluan, tetapi ia tidak mungkin. Ia mempunyai banyak fungsi-fungsi terbina dalam. Dan sebagainya ini adalah fungsi yang pada zahirnya menetapkan zon masa saya sebagai US / Timur, yang merupakan zon masa di mana saya kini dalam membuat video ini. Kemudian saya membuat panggilan kepada fungsi dipanggil, setakat ini. Dan, nampaknya, saya menyimpan HIS sesuatu yang dinamakan, masa. Jadi apa yang berlaku di sini? Nah, pada dasarnya apa yang berlaku ialah, saya membuat panggilan kepada beberapa pelayan yang akan beritahu saya apa masa yang masa ini. Dan saya ditukarkan kepada format yang jam, minit, saat. Dan sebab itu modal H adalah ini yang akan memberi saya masa 24 jam, bukan 12 masa jam, yang akan menjadi huruf kecil h. Dan saya hanya menyimpan yang dalam pembolehubah yang dipanggil, masa. Supaya baris kedua PHP sana, panggilan ke majlis itu, Setakat ini, hanya mendapat beberapa rentetan, iaitu akan memberikan saya tarikh, dan masa, dan mempunyai banyak maklumat lain. Dan hujah pertama di sana, bahawa NYA, hanya mengeluarkan bahagian yang penting yang saya sayang untuk contoh ini, yang merupakan jam, minit, dan kedua. Jadi itu sahaja yang yang berlaku. Jadi saya menyimpan bahawa dalam $ masa yang berubah-ubah. Dan kemudian turun di sangat bawah di sana, saya mempunyai bahawa singkatan untuk mencetak masa semasa. Jadi saya hanya akan mencetak apa masa semasa. Jadi mari kita lihat ini dalam IDE CS50 dan melihat bagaimana kami kini penjimatan webmaster yang banyak masalah. Baiklah, jadi di sini saya lagi kembali pada direktori akar Contoh yang Apache saya. Dan saya mempunyai fail yang di sini dipanggil time.php. Saya hanya akan klik pada itu. Dan saya akan tatal ke atas, kerana kita dizum dalam cantik ini. Masa sekarang ialah 14:20:34. Jadi, saya melakukannya jam, minit, dan saat. Dan saya boleh menyegarkan halaman dan mendapatkan masa baru. --41. Saya akan muat semula halaman ini dan mendapatkan masa baru, 44, 46, 47. Jadi, saya jelas tidak mengubah apa-apa diri saya sendiri. Saya di sini semula halaman. Jadi saya tidak boleh kembali ke sana menyuntingnya. Dan saya berjanji kepada anda, saya tidak mempunyai apa-apa menentang kebenaran yang mengedit fail bagi pihak saya di sebelah. Saya hanya menggunakan fungsi PHP, masa, untuk menjana masa untuk saya secara automatik. Supaya walaupun jika saya tidur, dan pelayan web saya sedang berjalan, pengguna yang melawat laman tersebut masih akan mendapatkan tepat masa semasa. Jadi, itu cukup baik. Saya telah membuat laman saya lebih dinamik dengan kod PHP tidak terlalu banyak. Ia hanya dua baris kod dan kemudian sedikit kenyataan cetak. Dan sudah saya mempunyai Laman web yang lebih dinamik daripada itu contoh pertama kita lihat pada awal video. Jadi, ingat dari video pada PHP sintaks bahawa apabila jurubahasa PHP berjalan program kami, ia mengabaikan segala-galanya itu bukan di dalam pembatas PHP, meludah keluar. Dalam contoh itu, apa perkara yang bahawa ia telah meludah keluar HTML. Dan ini bermakna saya boleh sekarang diselang seli HTML dan PHP bersama-sama. Kerana jurubahasa akan hanya mengabaikan HTML dan benar-benar outputnya. Yang baik, bukan? Kerana mungkin, pada akhir hari, Saya mahu laman web saya untuk dibina HTML. Supaya mana-mana pelayar web boleh mentafsir , atau memahami HTML pada halaman dan menjadikannya sebagai sesuatu yang kita benar-benar dapat memahami sebagai manusia. Dan saya hanya boleh menggunakan PHP untuk bahagian-bahagian laman saya yang memerlukan dinamisme, yang memerlukan saya mempunyai perkara-perkara yang mengemas kini sentiasa. Maklumat yang statik boleh tinggal yang sama. OK, jadi itulah denda. Tetapi mengapa saya akan lakukan ini? Mengapa saya akan bercampur HTML dan PHP? Saya hanya boleh mencetak semua HTML, menggunakan fungsi PHP cetak. Kenapa saya tidak berbuat demikian? Fikirkanlah untuk kali kedua. Mengapa, apabila saya hanya boleh mencetak out-- Saya boleh mempunyai baris PHP yang hanya berkata, cetak HTML tag, kepala cetak. Kenapa saya tidak berbuat demikian? Kenapa saya mencampurkan PHP dan HTML? Nah, jika anda berfikir mengenainya untuk kali kedua. PHP, jurubahasa mempunyai untuk mentafsir apa yang ia lihat. Dan maka ia akan mempunyai untuk melaksanakan baris kod. Cetak HTML. Mencetak tag kepala terbuka. Mencetak tag tajuk terbuka. Ia akan perlu melaksanakan dan mentafsir bahawa setiap langkah dari jalan. Mengapa tidak hanya membiarkan jurubahasa hanya menyembunyikan perkara yang ia tidak memahami dan melakukannya secara automatik? Ia akan menyelamatkan saya banyak masa untuk bergaul HTML saya dan PHP saya bersama-sama. Dan itulah sebabnya mengapa kita tidak hanya perlu terbuka PHP pembatas dan kemudian hanya mencetak keseluruhan kandungan laman kami sebagai salah PHP gergasi panggilan kepada fungsi, Cetak, dan kemudian berhampiran PHP pembatas dan kami selesai. Jadi itulah sebabnya kita campuran mereka bersama-sama. Setakat ini, kami tidak melihat terlalu banyak perbezaan dari umum PHP sintaks. Ia adalah agak mudah. Kami telah melihat tanda tanya, sama. Kami melihat beberapa panggilan fungsi baru, tetapi tiada apa yang benar-benar mewah berlaku. Mari kita mungkin membuat perkara sedikit pelamun. Bagaimana jika kita mahu memberikan maklumat antara fail PHP yang berbeza, supaya mungkin pengguna boleh mengemukakan maklumat kepada saya. Dan kemudian saya boleh melakukan sesuatu dengan pada laman lain. Jadi PHP mempunyai sokongan untuk sesuatu yang dinamakan Super Global Pembolehubah, yang berbunyi cukup menggerunkan. Mereka benar-benar hanya array bersekutu gergasi yang membantu melaksanakan ini fungsi yang berlalu maklumat antara PHP fail yang yang sedia ada pada pelayan web kami. Pertama super ini globals dipanggil $ _GET. Dan ia mungkin paling mudah untuk difahami. Apa yang berlaku dengan $ _GET? Nah, pada dasarnya, pengguna adalah akan menaip maklumat tambahan pada akhir URL kami. Dan apa sahaja yang mereka menaip, dengan andaian ia diformat dengan cara yang tertentu dipanggil rentetan pertanyaan, yang hanya satu set pasangan nilai utama dipisahkan oleh ampersands. Mereka pasangan nilai utama adalah disimpan dalam $ _GET pelbagai bersekutu. Dan dari video kami di PHP sintaks, kita tahu bagaimana untuk bekerja dengan array bersekutu sudah. Jadi di sini adalah satu contoh beberapa PHP, mana mungkin saya mengekstrak semua pasangan nilai utama untuk setiap pengguna yang dibekalkan dalam URL. Jadi saya perlu Terbuka PHP pembatas saya. Saya mempunyai gelung foreach. Saya iterating seluruh Super Array global dipanggil $ _GET. Dan saya mahu dapat untuk merujuk kepada kedua-dua utama dan nilai. Dan saya hanya mencetak mereka keluar, masing-masing satu di nampaknya tag perenggan sendiri di sini. Saya mencetak beberapa HTML dan interpolasi nilai kunci dan nilai ke dalam kenyataan itu. Oleh itu, mari kita lihat bagaimana ini sebenarnya akan bekerja pada IDE kami. Dan mungkin ini akan membantu menggambarkan sedikit apa DAPATKAN sebenarnya lakukan. Jadi saya kembali ke sini dalam akar web saya. Dan saya akan zum dalam sedikit untuk menunjukkan kepada anda bahawa saya mempunyai fail yang dipanggil, get1.php. Jadi mari kita klik pada get1.php. Dan saya tidak melihat apa-apa kandungan. Itu yang pelik, bukan? Well, tidak benar-benar sebenarnya. Kerana saya tidak membekalkan apa-apa dalam URL. Saya akan get1.php, tetapi saya tidak membekalkan apa-apa pasangan nilai utama sebagai sebahagian daripada rentetan pertanyaan saya. Jadi mari kita menambah rentetan pertanyaan dan ketahui fail ini boleh lakukan. Untuk memulakan rentetan pertanyaan anda hanya menaip tanda tanya. Maka mungkin saya akan mengatakan name = Doug & tahun = 2015. Dan kemudian saya akan tekan Enter. Sekarang perhatikan apa yang berlaku. Saya masih dalam get1.php. Tetapi sekarang saya telah dibekalkan pasangan nilai utama, dan saya mencetak mereka keluar sendiri nama paragraph--, tahun Doug--, 2015. Itulah kod yang kami hanya melihat pada slaid sebentar tadi. Dan jika saya ingin menambah satu lagi mungkin pasangan nilai utama, & class = CS50. Sekarang saya mempunyai satu lagi nilai utama pasangan yang yang dicetak apabila saya melihat semula URL yang lagi. Sekarang mungkin ini tidak diformat betul-betul juga. Jadi saya mempunyai satu lagi versi get.php. Ia get2.php. Perbezaan dalam ini satu adalah saya mempunyai fail CSS, dan ia format perkara-perkara yang sedikit lebih baik untuk saya. Ia mungkin bukan yang paling CSS indah di dunia. Tetapi ia hanya satu lagi cara untuk melakukannya. Oleh itu, saya masih boleh mendapatkan akses kepada pembolehubah saya menggunakan $ _GET. Dan dalam kes ini, saya hanya jenis membuat CSS lebih sedikit mewah. Dan jika kita pop ke IDE saya untuk kali kedua, Saya akan menunjukkan kepada anda dalam PHP web saya direktori sini, get2.php. Kami akan membukanya, beberapa HTML di sini. Rupa-rupanya saya menghubungkan kerana Fail CSS saya bercakap tentang. Saya membuka tag jadual. Dan kemudian di sini adalah gelung foreach saya. Di sini ialah, apa yang saya menunjukkan pada slaid sebelum ini. Satu-satunya perbezaan adalah saya mempunyai kunci ini dan nilai CSS gaya yang saya memohon kepadanya. Tetapi itu sahaja yang saya lakukan, adalah saya iterating seluruh $ _GET untuk mendapatkan semua pasangan nilai utama. Dan saya mencetak mereka keluar kerana meja. Dan, nampaknya, saya memformat kekunci dalam satu cara, dengan