[Powered by Google Translate] [Minggu 8] [David J Malan] [Universiti Harvard] [Ini adalah CS50.] [CS50.TV] Selamat kembali. Ini adalah CS50, dan ini adalah permulaan 8 minggu. Beberapa peluang minggu ini, di kalangan mereka ini bercakap di sini, di mana sesetengah makanan akan dihidangkan. Untuk maklumat lanjut lihat slaid yang berada dalam talian. Dan juga satu lagi acara minggu ini oleh Thomas Carriero kita sendiri. Beliau adalah salah satu daripada felo bekas CS50 pengajaran kepala yang kini berada di Dropbox, dan dia lelaki yang ketagih kita dengan anda tahu apa, jadi jika anda mahu lebih kepala itu ceramah mereka petang ini untuk Dropbox dan banyak lagi. CS50 makan tengah hari Jumaat ini. Adakah menyertai kami jika anda mampu, 1:15, seperti biasa, di Bomba dan Ais. Dan sekarang kita menyelam ke dalam sesuatu yang dipanggil Seminar. Seminar CS50 kami, ingat, ini kelas pilihan yang diketuai oleh felo pengajaran kursus pembantu dan rakan-rakan kursus, orang dari kumpulan di kampus dipanggil ABCD, yang merupakan kumpulan technophiles di kampus, serta kumpulan yang dipanggil HCS, Persatuan Harvard Komputer, mahasiswa yang sama berminat dalam pengkomputeran. Jadual seminar tahun ini termasuk seminar mengenai Android dan IOS dan JavaScript dan PHP, Unix, Vim, dan banyak lagi, jadi sedar bahawa seminar ini akan datang. Jika anda ingin RSVP untuk mana-mana mereka pergi ke URL bahawa terdapat. Kami kemudian akan posting di laman web kursus masa dan tempat apabila mereka dimuktamadkan. Tetapi tahu bernilai ada 5 tahun seminar terdahulu boleh didapati dalam talian, ramai yang masih sangat banyak semasa dari segi teknologi anda mungkin mahu bermain dengan untuk projek akhir anda, jadi kepala di sana untuk beberapa video yang tersedia daripadanya. CSS, anda yang biasa dengan CSS sudah, apakah ia secara ringkas? Apakah CSS? Ia melata style sheet, dan apakah itu bermakna? Apakah yang lakukan untuk kita, CSS? Baiklah, mari kita memanaskan dengan satu yang lebih mudah, HTML, bahasa tokokan hiperteks. Apakah yang lakukan untuk kita? Sesiapa di semua? Ia semakin benar-benar janggal bertanya soalan-soalan ini. HTML, bahasa tokokan hiperteks. Ya? Tidak? [Sambutan pelajar didengar] Okay, baik, ia membolehkan kita untuk menandakan teks untuk dipaparkan dalam pelayar web. Ia bukan satu bahasa pengaturcaraan. Ia sememangnya bahasa markup, yang bermakna ia mengarahkan pelayar bagaimana untuk memaparkan maklumat, jadi penjelmaan mudah ini seperti yang kita telah melihat adalah sesuatu yang super mudah seperti boldfacing, terbuka kurungan b tertutup kurungan mengatakan membuat teks ini berani, dan itulah sebenarnya hanya salah satu daripada banyak cara di mana kita boleh berbuat demikian, dan sesungguhnya, hari ini pendekatan yang lebih baik stylizing laman web anda, membuat perkara yang berani dan italik dan berpusat dan dibenarkan dan sebagainya, tidak dilakukan melalui tag HTML sahaja tetapi dengan teknik yang dipanggil CSS, melata style sheet. Ini adalah satu bahasa kepada dirinya. Ia juga tidak merupakan bahasa pengaturcaraan tetapi- semua orang, ini adalah Dan, yang menyimpan menyertai kami hari ini. Beberapa masalah teknikal. Tidak menjadi masalah. CSS membolehkan kami untuk menyesuaikan dgn mode halaman dengan menetapkan apa yang dipanggil hartanah, jadi mari kita lihat ini dengan cara beberapa contoh asas. Biar saya pergi ke dalam perkakas hari ini. Saya mempunyai sumber 8 Isnin direktori di sini, dan saya akan pergi ke direktori yang dipanggil CSS di mana kita mempunyai sekumpulan keseluruhan fail yang menunggu kita di sini, dan dalam folder ini kita mempunyai, misalnya, search0.html dari masa lalu. Sekarang, ingat dengan search0 kami meninggalkan nota ini oleh jenis melaksanakan Google atau benar-benar hanya akhir hadapan untuk seminggu atau lebih yang lalu, dan notis bahawa kita mempunyai beberapa tag baru di sana. Kami mempunyai h1 untuk tajuk besar, berani, bentuk, yang membolehkan kita untuk benar-benar mempunyai bentuk HTML untuk input pengguna. Tindakan, apa makna atribut tindakan tag bentuk HTML? Apa makna tindakan ini,? Saya hanya akan melakukan ini hari ini. Tindakan adalah destinasi untuk mana borang itu akan diserahkan. Hakikat bahawa yang mengatakan tindakan = "google.com / carian" bermakna bahawa apabila pengguna mengklik butang Hantar atau setaraf apa-apa jua bentuk bidang yang mereka mengisi borang akan dihantar tidak kepada pelayan kami atau perkakas kita tetapi untuk URL yang tertentu di Google. Dan kaedah ia akan menggunakan dipanggil mendapatkan, dan mendapatkan, untuk sekarang, hanya satu teknik untuk lulus maklumat bersama-sama untuk pelayan web dengan cara URL, jadi mari kita lihat cepat kembali pada bagaimana kerja-kerja ini. Perhatikan bahawa terdapat input yang namanya q jenis yang teks dan kemudian input kedua jenis mengemukakan nilai yang CS50 Cari, dan sesungguhnya, jika kita membuka fail ini di sini, search0.html, ia adalah satu bentuk mudah super, dan jika saya mencari sesuatu seperti sains komputer dan kemudian tekan enter atau klik pada CS50 Search melihat bahawa apa yang berlaku adalah di luar untuk mendapatkan Google Saya telah khusus berakhir pada URL ini di atas, google.com / search? q = komputer + sains, dan sains komputer adalah jelas apa yang saya menaip masuk + Hanya bermakna yang mana aksara ruang, dan ia dilakukan oleh pelayar hanya untuk memastikan bahawa tidak ada kekeliruan dan ruang putih di URL sebenar. Dan kemudian q, sudah tentu, adalah nama parameter. Kami tidak pernah melihat bagaimana kita, pengaturcara, sebenarnya boleh mengakses q lagi. Kita boleh menganggap bahawa Google tahu apa yang perlu dilakukan dengan ini di sini, tetapi kita akan sampai ke sana dalam masa yang sewajarnya hari ini. Tetapi izinkan saya mengambil lihat sebaliknya pada search1.html, yang kelihatan sedikit berbeza kerana saya memutuskan bahawa borang ini di sini adalah hanya sedikit tempang. Maksud saya, ia adalah di sebelah kiri atas. Ada benar-benar tidak estetika ia, dan jadi saya mahu menyesuaikan dgn mode ini sedikit lebih seperti Google, yang homepage, ingat, walaupun anda mungkin tidak melawat yang kerap, kelihatan seperti ini hari ini pada Halloween. Jika kita sebaliknya membuka versi 1 fail ini, 1.html search, saya telah berpusat. Masih cantik hodoh, tetapi sekurang-kurangnya sekarang saya telah mula untuk mengawal estetika halaman ini, bukan sahaja menandakan daripadanya. Mari kita lihat di search 1, dan ada benar-benar hanya satu perbezaan di sini, yang mungkin melompat keluar pada anda, atau mungkin tidak, tetapi apa garis satu atau coretan perbezaan? Ada sifat ini gaya, jadi ia ternyata bahawa dalam HTML kebanyakan unsur, kebanyakan tags boleh mempunyai atribut gaya kepada mereka, dan dalam atribut gaya yang adalah rentetan dipetik, dan bahawa rentetan dipetik adalah CSS. Anda boleh meletakkan lembaran gaya melata di sana dengan menyatakan ia sebagai nama harta diikuti oleh kolon diikuti oleh nilai. Ini adalah jenis keputusan reka bentuk malang beberapa tahun lalu CSS adalah bahasa kepada dirinya, tetapi syntactically ia sangat berbeza dari HTML. Dalam kes ini, kita lihat bahawa di dalam laman web, saya yang ditulis dalam HTML, Saya mempunyai CSS di dalam petikan ini, dan konvensyen untuk CSS adalah bahawa anda mempunyai apa yang dipanggil harta yang diikuti oleh, sekali lagi, kolon, diikuti oleh nilai harta itu, jadi tidak ada tanda yang sama. Tiada petikan tambahan. Ia hanya nilai ini kolon dipisahkan pasangan kunci, dan garis teks tidak apa yang dikatakan. Ia menjajarkan teks dalam badan halaman, yang benar-benar berani halaman, di tengah-tengah. Okay, keputusan akhir maka, perlu jelas, ini. Tidak semua seksi itu, tetapi sekurang-kurangnya ia berpusat dan sedikit lebih seperti Google sebenar. Tetapi bagaimana jika saya bukannya membuka versi 2 ini dan menunjukkan turun di sini tag baru sama sekali? Sekarang di kepala halaman saya, yang sebelum ini hanya mempunyai yang tag dalam semua contoh-contoh terdahulu? Ia hanya mempunyai ini, tajuk. Sebentar ago tag kepala kelihatan seperti ini. Sekarang sebaliknya ia mempunyai dalam tag gaya, dan ini juga, saya memohon maaf, syntactically kelihatan sangat berbeza dari HTML, tetapi anda mendapat digunakan untuk ia, di mana di dalam tag gaya Saya kini boleh faktor apa yang seketika lalu sifat, atribut gaya, dan saya boleh meletakkan ia di bahagian paling atas halaman saya. Mengapa? Nah, ini adalah satu langkah ke arah pembersihan perkara, sama seperti dalam penulisan kod C kadang-kadang kita akan menulis fungsi faktor fungsi biasa. Ia hanya pembersih yang sedikit untuk memulakan pemfaktoran keluar perkara-perkara seperti estetika kepada satu lokasi pusat bukannya mempunyai semua menyebar di seluruh HTML anda. Ini juga melakukan apa yang ia berkata, walaupun terdapat sedikit sintaks baru. Ini sini adalah pemilih, dan badan hanya bermakna pilih unsur badan dan memohon sifat berikut kepada ia. Nah, harta itu adalah sama. Untuk mengukur baik saya telah ditambah dengan koma bernoktah di hujung, yang cenderung untuk menjadi konvensyen, dan saya telah dibalut seluruh harta pendakap kerinting kerana saya sebenarnya boleh mempunyai perkara yang berbeza di sini. Saya sebenarnya boleh mengatakan sesuatu seperti warna: biru; Sekarang ini juga tidak akan menjadi satu langkah ke arah apa-apa semua yang cantik, tetapi jika saya kini kembali ke versi 2 saya sekurang-kurangnya sekarang membuat badan saya halaman teks biru semua. Butang tetap sama kerana itulah input. Ia bukan teks tulen. Tetapi segala-galanya yang teks, seperti CS50 Cari top up, adalah dalam biru fakta. Sekali lagi, semua yang kita lakukan sekarang adalah membuang dari tag tubuh, notis, atribut gaya, dan kita telah difaktorkan it out di sini. Ini bukan satu peningkatan yang besar, tetapi jika kita mengambil langkah ini satu lagi notis apa yang boleh kita lakukan dalam versi ketiga ini di sini. Pada search3.html laman web adalah hampir sama kecuali untuk apa yang tag baru sekarang? Link, jadi yang satu ini tidak sangat tepat dinamakan kerana anda tidak menghubungkan dalam erti hyperlink diklik. Sebaliknya, anda apapun melakukan bersamaan # termasuk dalam C mana link tag dengan sifat href dan atribut rel mengatakan pergi ke hadapan dan salinan tampal kandungan fail yang dipanggil search3.css di sini, pada asasnya. Ia tidak cukup berbuat demikian, tetapi itulah semangat ia. Ia mengatakan pergi terbuka yang fail, search3.css, dan merawat ia seolah-olah pengguna telah ditaip betul di sini di kepala halaman hanya seperti yang saya lakukan dalam contoh sebelum ini. Search3.css Sementara itu, adalah agak mudah. Ia benar-benar hanya mengandungi tepat apa yang seketika lalu tag gaya, tetapi saya telah difaktorkan ia keluar di sini untuk fail tersendiri. Walaupun kita telah tidak menghabiskan banyak masa pada semua dalam HTML atau pengaturcaraan web hanya intuitif apa motivasi, mungkin, untuk pemfaktoran keluar coretan kecil walaupun CSS ke dalam fail tersendiri dan kemudian termasuk dengan tag pautan ini di sini? [Sambutan pelajar didengar] Okay, ia adalah lebih mudah untuk membaca dalam erti kata bahawa anda mempunyai CSS anda dalam fail CSS. Anda mempunyai HTML anda dalam fail HTML anda, jadi ia adalah lebih mudah dibaca dalam erti kata itu. Apa lagi yang mungkin menarik? Yeah. [Sambutan pelajar didengar] Ya, jadi anda boleh termasuk ia banyak kali, jadi sekarang kita melakukan ini contoh asas dengan fail individu, tetapi andaikan anda sebenarnya membuat sebuah laman web yang sebenar seperti anda akan untuk pset 7 atau projek akhir anda mungkin, dan anda mahu mempunyai pelbagai laman web, seperti yang sudah pasti biasa pada Dunia sebenar Wide Web, dan ia akan menjadi jenis tempang perlu salin dan tampal warna biru yang sama dan teks yang sama sejajar pusat dalam setiap satu daripada halaman tersebut. Sebaliknya, ia masuk akal yang lebih faktor, sama seperti kita telah dilakukan dalam C dengan fail h, meletakkan ia di satu tempat pusat, dalam kes ini search3.css, dan kemudian membenarkan sebarang fail di laman web anda untuk benar-benar termasuk fail tersebut dengan cara tag ini di sini dalam 16 baris. Seperti biasanya kes itu, kita bermula dengan versi 0, yang jenis kerja tetapi tidak semestinya yang terbaik, dan dengan setiap langkah, 1 search, search 2, dan kini carian 3 kita telah mengambil langkah-langkah bayi ke arah reka bentuk yang pembersih sedikit dan lebih persediaan muka surat yang lebih kompleks yang kita boleh lakukan di hujung jalan. Izinkan saya membuka satu contoh lepas di sini hanya untuk menunjukkan halaman yang lebih bergaya, tetapi pada mulanya, mari kita melihat HTML. Ini adalah search4.html, dan notis bahawa struktur ia adalah hampir sama kecuali untuk pengenalan tag baru, Div. Div adalah tag yang memperkenalkan pembahagian halaman. Anda boleh berfikir ini sebagai segi empat tepat yang tidak kelihatan. Ia semacam mewujudkan petak kawasan di dalam laman web bahawa anda boleh menyesuaikan dgn mode semua sekali gus. Apa yang saya lakukan di sini adalah seperti berikut. Dalam tag badan saya, yang telah berada di sana sepanjang, Saya katakan mewujudkan satu bahagian halaman di sini melalui talian 45 melalui 47, dan ini bermakna asasnya memberi saya sebuah segiempat tepat yang tidak dapat dilihat di sepanjang bahagian atas halaman. Kemudian memberi saya sebuah segiempat tepat yang kedua, walaupun tidak dapat dilihat, di bawah bahawa, dan mengenal pasti dengan kandungan nama, dan kemudian akhir sekali, berikan saya bahagian ketiga halaman di bawah dipanggil ID. Kita akan melihat mengapa saya telah melakukan ini dalam hanya seketika, tetapi konsep saya mempunyai satu bahagian header. Saya mempunyai satu bahagian kandungan, dan saya mempunyai satu bahagian footer halaman walaupun ini adalah hanya dalam markup. Pengguna tidak akan melihat 3 segiempat tepat, tetapi jenis struktur sana di sebalik tabir mereka sebenarnya hadir. Sekarang, siapa peduli? Mengapa sebenarnya melakukan ini? Segala-galanya pada halaman yang sama seperti yang kita telah melihat sebelum ini. Berikut adalah borang saya. Berikut adalah input saya, input saya, satu baris dan sebagainya. Berikut adalah imej, walaupun, jadi kita akan melihat di mana ini datang dari dalam hanya seketika. Berikut adalah kaki, yang baru, hanya kerana saya mahu memperkenalkan beberapa kandungan lanjut di sini. Jika kita tatal ke atas notis bahawa ID div ini adalah header. ID div ini adalah kandungan, dan ID yang satu ini adalah footer. Dan seperti namanya, apabila anda mempunyai sifat ID dalam HTML, oleh definisi ia unik mesti mengenal pasti salah satu elemen, salah satu tag dalam halaman anda. Beban sepenuhnya pada anda untuk ingat bahawa anda mempunyai ID pengepala sudah. Anda mempunyai pengaki. Anda mempunyai ID kandungan sudah. Komputer tidak akan memikirkan apa ID yang ada adalah untuk anda, jadi anda secara tidak sengaja boleh memberi 2 tag ID header, dan yang hanya akan menjadi salah. Anda perlu ingat apa yang anda telah mencipta, tetapi sebaik sahaja anda telah dilakukan bahawa notis apa yang kita boleh lakukan di sini. Saya kini boleh menentukan di tag gaya saya di atas atau sebandingnya dalam fail CSS saya, jika saya masih menggunakan versi itu, Saya boleh mengatakan # header, dan apa yang bermakna adalah bahawa apa sahaja tag di dalam laman web ini mempunyai ID header dan #, hanya dengan konvensyen manusia, mewakili ID. Tanda tajam atau paun tanda mewakili ID. Header adalah nama yang saya berikan. Ini bermakna memohon harta CSS apa jua tag dalam halaman ini menanggung ID header. Perjanjian yang sama di sini. Memohon ini harta, yang berlaku untuk menjadi sama, pada sebarang elemen yang ID adalah kandungan, dan kemudian turun di sini notis saya mendapat sedikit penjaga dengan nota kaki. Apa-apa unsur yang ID adalah pengaki, yang ada boleh hanya satu mengikut definisi, pergi ke hadapan dan membuat saiz fon yang kecil, berani font berat, margin 20 piksel. Apa maksudnya? Ia hanya margin pada bahagian atas, bawah, dan kiri dan kanan. Ini bermakna memberi saya margin 20 pixel tidak kelihatan di sekelilingnya hanya untuk menolak segala-galanya dari sedikit, seperti yang anda mungkin lakukan dalam Word, Microsoft Word atau Pages atau sebagainya. Dan kemudian teks menyelaraskan pusat. Mari kita lihat hasil akhir, dan kemudian kami akan kembali sehingga satu coretan baki CSS sana. Ini adalah versi 4, terakhir kami untuk contoh carian, dan ia banyak, seksi banyak. Kini, dalam keadilan, saya hanya Googled "google font logo penjana." Dan yang membenarkan saya untuk membuat GIF, format imej, yang kelihatan seperti bahawa terdapat. Malah, anda boleh melakukan ini juga. Kami mempunyai "google fon logo penjana." Mari kita lihat jika kita boleh lakukan ini. Okay, saya fikir ini adalah laman web saya digunakan. Kita boleh mengatakan Ec 10, misalnya, dan membuat mereka sendiri. Anda boleh bermain dengan hari ini semua lama dan kemudian klik kanan pada dan kemudian memuat turun GIF sebenar, yang adalah semua yang saya telah lakukan. Dan sesungguhnya, itulah sebabnya dalam HTML saya, ingat, di sini Saya mempunyai tag imej, yang kita lihat secara ringkas minggu lepas yang sumber logo.gif. Dan apa lagi adalah motivasi untuk mempunyai sifat ini alt, sifat ini alternatif? Yeah. [Sambutan pelajar didengar] Baik, jadi 2 sebab benar-benar, jika pelayar tidak boleh tarik sehingga imej kerana anda mempunyai sambungan rangkaian perlahan atau imej rosak atau sesuatu seperti itu sekurang-kurangnya manusia boleh melihat "CS50 carian," dan kemudian juga atas sebab-sebab kemudahan. Jika anda mempunyai pengguna yang buta dan menggunakan pembaca skrin dan oleh itu jelas tidak boleh melihat imej mereka boleh sekurang-kurangnya mendengar teks jika komputer mereka bercakap kepada mereka. Secara umum, ini adalah yang terbaik mengamalkan apabila ia datang kepada akses halaman supaya pengguna walaupun dalam keadaan yang boleh mendengar atau melihat, jadi untuk bercakap, apa yang ia adalah bahawa pada halaman anda. Ada satu perkara lain yang saya lakukan di sini yang sedikit menarik, dan kita akan melihat lebih lanjut mengenai ini dalam masalah menetapkan 7 melalui salah satu seluar pendek yang diketuai oleh salah seorang daripada felo pengajaran. Tetapi # kandungan merujuk kepada tag yang ID adalah kandungan, tetapi kemudian ada watak ruang, dan kemudian ada input perkataan. Nah, apa yang menarik tentang CSS adalah bahawa anda boleh merujuk kepada tag dalam jenis halaman hierarki, dan apa coretan cara CSS adalah mencari tag yang ID adalah kandungan, dan kemudian memohon sifat berikut semua tag input yang keturunan kandungan, itulah yang dilekukan di dalamnya. Indentasi, sekali lagi, adalah hanya penting untuk komputer, tidak kepada manusia, tetapi oleh konvensyen kita inden perkara seperti yang kita pergi lebih jauh ke dalam halaman, jadi ini bermakna memohon margin 5 piksel kepada mana-mana elemen input itulah tempat di dalam atau bersarang di dalam  elemen yang ID kandungan. Siapa yang yang diguna pakai? Nah, terdapat sebenarnya hanya 2 guys di sini. Perhatikan bahawa dalam borang ada adalah 2 input, sebagai telah ada untuk semua contoh-contoh ini. Tetapi notis bahawa mereka 2 input berlaku akan bersarang di dalam, walaupun sedikit mendalam, lapisan beberapa lekukan, dalam tag ID yang merupakan kandungan. Apa maknanya? Jika kita pergi ke pelayar sini anda boleh melihat pernah jadi sedikit- izinkan saya zoom dalam bahawa terdapat sedikit padding antara butang dan antara medan teks. Biar saya mematikan buat sementara waktu itu. Biar saya pergi sehingga CSS saya, dan biarlah saya pergi ke hadapan dan hanya menukar margin dari 5 piksel 0 piksel. Biar saya pergi ke hadapan dan kemudian menyimpan fail, pergi balik ke enjin carian dan menambah nilai, dan menonton pertengahan halaman. Semuanya mendapat dimampatkan bersama-sama, dan apabila saya mula-mula disebat contoh ini Saya fikir yang kelihatan bodoh dengan medan teks dan kemudian butang di bawah. Saya mahu ke pad sedikit, jadi saya memperkenalkan margin. Apa yang kita tidak akan melakukan dalam kuliah pergi melalui sedozen beberapa CSS sifat yang wujud kerana, sekali lagi, terdapat perkara-perkara seperti saiz fon, berat fon, margin, teks menyelaraskan, dan beberapa dozen yang lain, dan kami akan merujuk anda dalam masalah menetapkan 7 tutorial pelbagai talian dan rujukan yang membolehkan anda untuk memilih perkara-perkara ini sehingga. Tetapi apa yang benar-benar penting pada akhir hari adalah untuk memahami bagaimana perkara-perkara ini digunakan. Sekali lagi, jika kita mempunyai tag gaya dalam mana boleh pergi selectors, jenis pengenalan yang menentukan siapakah anda ingin memohon sifat-sifat, dan kemudian anda meletakkan harta sebagai sepasang nilai utama dipisahkan oleh noktah bertindih dan kemudian berakhir dengan semicolon, atau anda boleh rip semua daripada itu dan memasukkannya ke dalam fail CSS yang berasingan kepada dirinya. Baiklah, apa-apa soalan mengenai konsep atau gambar besar CSS? Anda sekali lagi akan melihat lebih daripada itu dalam pset 7, tetapi kita akan menyimpan ia secara amnya agak mudah. Tidak? Semua hak. Ia adalah masa untuk bahasa pengaturcaraan sebenar, dan kita akan kembali kepada sedikit CSS dalam bentuk contoh. PHP adalah sebenarnya bahasa yang hebat diakses bahawa ia adalah syntactically hampir bersamaan dengan C. Dalam erti kata lain, jika anda tahu C, anda tahu untuk PHP sebahagian besar, dengan sekurang-kurangnya syntactically, walaupun terdapat beberapa ciri-ciri baru dan beberapa konsep baru yang kita akan perlu untuk melihat. Tetapi bagi sebahagian besar, sekarang bahawa kita peralihan dari C PHP kebanyakan barangan yang baru adalah benar-benar dalam gambaran yang lebih besar, bagaimana anda menggunakan bahasa untuk program di Web yang bertentangan dengan pada baris arahan atau segera berkelip seperti yang kita telah lakukan setakat ini. Untuk rujukan, terutamanya dengan pset 7 dan seterusnya projek akhir, jangan mengambil kesempatan daripada URL ini di sini jika anda ingin untuk membaca sehingga pada formaliti PHP. Ia sebenarnya suka buku teks dalam talian percuma dengan berkesan, dan anda juga akan mendapati bahawa apa yang benar-benar baik tentang PHP adalah bahawa terdapat beratus-ratus fungsi yang datang dengan ia, manakala di C anda tidak semestinya mempunyai akses kepada lebih fungsi daripada berada di perpustakaan matematik, perpustakaan CS50. Dalam PHP dan banyak bahasa moden, Python dan Ruby di kalangan mereka, anda mendapat akses kepada supaya fungsi yang lebih banyak, yang bermakna anda mendapat untuk menulis banyak kod yang kurang kerana anda boleh berdiri di atas bahu orang lain yang telah menulis perkara-perkara tertentu untuk anda. Mari kita mengambil pelancongan cepat sintaks PHP dan kemudian menulis beberapa contoh. Apa yang baik tentang PHP pertama dan utama yang ada tiada fungsi utama. Jika anda mahu menulis program dalam PHP anda hanya mula menulis kod, dan anda tidak perlu bimbang tentang utama. Ada int tidak. Ada pulangan tidak. Tiada argv, argc yang diperlukan apabila anda menulis program. Sebaliknya anda hanya boleh mula menulis kod, dan ini adalah sebahagian kerana PHP adalah apa yang dipanggil bahasa ditafsirkan. C telah disusun, dan ia disusun dalam erti kata bahawa anda mula dengan kod sumber, jalankan melalui dilafaz, yang adalah pengkompil, dan akhirnya selepas beberapa beberapa langkah-langkah yang anda akan mendapat kod objek, 0 dan 1s. PHP dan Python dan Ruby dan Pearl dan lain-lain pelbagai jenis bahasa yang anda tidak menyusunnya. Anda tidak pergi dari kod sumber untuk 0 dan 1s. Anda hanya menjalankan kod sumber, dan anda menjalankan kod sumber dengan bertulis dalam fail teks biasa, berakhir. php dalam kes ini bukan c, dan apa program tidak pada komputer anda ia benar-benar menafsirkan garis kod anda oleh baris demi baris. Dalam erti kata lain, bukannya menulis program dan menjalankan program langsung anda dan bukannya menulis program dengan fail yang berakhir dalam php. Kemudian anda menjalankan program sebenar dipanggil php.exe, jika anda pada Windows, atau hanya PHP jika anda berada pada Mac OS atau Linux, dan anda berikan sebagai input kepada program PHP kod sumber anda sendiri, dan tujuan dalam hidup adalah untuk membaca atas kod anda ke bawah, kiri ke kanan, dan melakukan apa sahaja yang anda telah memberitahu ia lakukan. Mari kita lihat apa ini akan bermakna syntactically. Dalam PHP kita mempunyai keadaan. Slaid ini adalah sama dengan apa yang anda lihat kembali dalam 1 minggu kerana syntactically syarat, IFS dan IFS lain dan lain dalam PHP kelihatan sama seperti ini. Apabila ia datang kepada ungkapan boolean mereka pergi untuk melihat sama seperti ini. Apabila ia datang kepada Anding perkara-perkara bersama-sama sebagai booleans ia akan kelihatan sama seperti ini. Beralih kelihatan sama, dan anda mendapat manfaat tambahan dalam PHP bahawa suis dalam C hanya boleh menukar pada char atau int. Anda tidak boleh menghidupkan nilai rentetan. Dalam PHP anda sebenarnya boleh mempunyai satu ungkapan yang merupakan pembolehubah yang kandungannya adalah rentetan, dan anda sebenarnya boleh melakukan perbandingan rentetan dalam cara intuitif yang sebenar, tidak penunjuk perbandingan, untuk memutuskan sama ada untuk melakukan kes i atau j atau sesuatu yang lain. Kita akan melihat yang berpotensi sebelum panjang. Gelung terlalu hebat adalah sama. Untuk gelung mempunyai pengawalan, keadaan, dan beberapa bilangan update. Walaupun gelung juga wujud dalam PHP. Adakah manakala gelung juga wujud dalam PHP, dan array wujud dalam PHP, tetapi di sini mana sintaks bermula untuk mendapatkan sedikit berbeza, tetapi konsep adalah sama, dan konsep yang benar-benar adalah sama kerana mereka berada dalam 0 Minggu dengan Scratch. Pertama sekali ialah tanda $. Ini adalah keputusan reka bentuk dalam PHP di mana sebarang pemboleh ubah dalam PHP oleh reka bentuk bermula dengan tanda $. Tiada X, Y, lebih Z. Ia kini $ X, $ Y, $ Z hanya kerana. Ia adalah sesuatu yang perlu diingat, dan kini pada sebelah kanan ini kelihatan serupa dengan array, tetapi kita menggunakan kurungan persegi di sini. Dalam PHP dan JavaScript, kerana akhirnya kita akan melihat, untuk mengisytiharkan array anda lakukan kurungan persegi terbuka dan tertutup kurungan persegi, dan kemudian anda mempunyai senarai dipisahkan koma nilai, sama ada ints atau tali atau aksara, apa sahaja yang anda mahu, dalam ungkapan bahawa terdapat. Sekarang, bagaimana kita melakukan sesuatu seperti ini di C? Apakah sintaks untuk statik mengisytiharkan pelbagai nombor diketahui? Ia adalah pendakap kerinting, perbezaan begitu kecil di sini, tetapi dalam kedua-dua PHP dan akhirnya hidupkan ia hanya menggunakan kurungan persegi, jadi benar-benar detail hanya menarik di sini adalah tanda $ bagi nama pembolehubah dan juga kurungan persegi, dan ada satu perkara yang ingin tahu yang telah ditinggalkan serta di sebelah kiri tanda =. Apa yang hilang bahawa kita telah menghendaki untuk minggu sekarang? Yeah. [Sambutan pelajar didengar] Saiz, jadi tidak ada menyebut saiz array. Terus terang, tiada menyebut kurungan persegi di sebelah kiri tanda =, dan apa lagi hilang dari garisan? Yeah. >> [Sambutan pelajar didengar] Jenis, jadi apa yang menarik dalam tertentu mengenai PHP adalah bahawa ia bukan merupakan bahasa yang amat ditaip sebagai C, dan itu sangat ditaip dalam erti kata bahawa anda mesti mengatakan char, anda mesti mengatakan int, anda mesti mengatakan apungan. Bila-bila masa anda mahu pembolehubah anda perlu memberitahu dilafaz apa jenis. PHP adalah sedikit lazier. Ia longgar ditaip dalam erti kata yang anda boleh mempunyai terapung dan aksara dan rentetan dan ints dan sebagainya, tetapi bahasa itu sendiri tidak benar-benar peduli apa yang anda meletakkan di dalam pembolehubah. Anda tidak perlu untuk memaklumkan terlebih dahulu apa jenis data akan dalam pembolehubah. Ia terpulang kepada anda, jadi ini adalah bagus bahawa anda tidak perlu bimbang kerana banyak tentang menaip data dan bimbang apa hujah anda dan sebagainya. Ini juga bermakna akhirnya fungsi dalam PHP akan dapat kembali sama ada int an kebanyakan masa, dan mungkin sekali-sekala mereka akan kembali bool, palsu boolean, misalnya, untuk menandakan bahawa sesuatu yang silapnya. Ini memberikan kita beberapa upsides, tetapi ia juga akan menjadikan kita jenis oleh reka bentuk sedikit lazier apabila ia datang untuk menaip data. Apa lagi yang ada perlu diingat di sini? Pembolehubah kelihatan agak seperti ini, jadi $ s = "hello, dunia." Itulah mungkin inferable daripada contoh sebelumnya, dan kita mempunyai satu lagi jenis gelung. Yang satu ini kita sebenarnya akan melihat sekali-sekala kerana ia agak berguna, foreach membina. Dalam kes ini, gelung foreach mengambil dalam kurungan 3 perkataan biasanya, $ Sesuatu yang pertama, yang adalah apa yang pelbagai yang anda mahu untuk melelar lebih daripada ahli-ahli, maka benar-benar kata kunci sebagai, dan kemudian akhir sekali, ubah nama lain yang anda dapat untuk memilih. Ia boleh menjadi foo, bar, atau unsur, dan apa yang membina ini tidak jika array $ mengandungi 10 unsur pada setiap lelaran ini pelbagai-maaf, pada setiap lelaran gelung ini elemen pembolehubah yang dipanggil akan perlu dikemaskini untuk menjadi elemen pertama dalam array, maka elemen kedua dalam array, maka unsur ketiga array, sekali gus obviating keperluan untuk melakukan notasi kurungan persegi sedikit menjengkelkan dan $ I dalam untuk indeks ke dalam array. PHP melakukan semua kerja itu untuk anda dan pada setiap lelaran hanya tangan anda Elemen seterusnya dari pelbagai tanpa anda perlu tahu tentang atau mengambil berat tentang lokasi indeks angka. Dan kemudian akhir sekali, untuk sekarang, ada satu ciri lain PHP yang akan menjadi sangat berguna, terutamanya apabila kita mula pengaturcaraan di Web, dan yang dikenali sebagai array bersekutu. Array yang kita tahu setakat 20 saat yang lalu dan untuk 8 minggu yang lalu berangka diindeks array, jenis tatasusunan tradisional di mana indeks adalah ints, 0, 1, 2, semua cara sehingga. Array bersekutu adalah banyak lebih berkuasa. Mereka membenarkan anda untuk mempunyai kunci yang sewenang-wenangnya, indeks sewenang-wenangnya dan nilai-nilai yang sewenang-wenangnya. Manakala dalam pelbagai tradisional ia adalah 0, 1, 2, dalam pelbagai bersekutu anda boleh mempunyai indeks atau kekunci foo mana nilainya adalah bar. Anda kemudiannya boleh mempunyai satu lagi kunci yang namanya Baz dan yang nilai qux. Sekali lagi, bodoh sains komputer generik nama pemboleh ubah di sini, tetapi persoalannya adalah bahawa pelbagai ini tidak mempunyai kurungan 0 atau pendakap 1. Ia sebaliknya akan mempunyai pendakap foo dan pendakap Baz. Ini adalah banyak lebih versatil bahawa kita akan dapat mengaitkan perkataan dengan perkataan lain, kunci dengan nilai sepenuhnya sewenang-wenangnya, dan kita akan dapat untuk mendapatkan nilai-nilai kembali dalam masa yang berterusan kerana di bawah hood apa pelbagai bersekutu benar-benar adalah jadual hash. Ingatlah bahawa jadual hash membolehkan anda untuk dimasukkan ke dalam beberapa input suka meletakkan di David perkataan jika anda mahu memasukkan Daud ke dalam beberapa jenis kamus, dan kemudian anda mendapatkan kembali beberapa nilai biasanya. Dalam kes ejaan, benar atau palsu. Daud atau apa sahaja perkataan di dalam atau tidak ada di dalam kamus. Pelbagai bersekutu adalah benar-benar hanya satu jadual hash, tetapi ia adalah penjelmaan pengguna yang lebih mesra. Seperti yang kita akan lihat, ia akan membolehkan kita untuk melakukan beberapa perkara sangat, sangat mudah. Mari kita lihat pada beberapa asas PHP contoh dan lihat apa yang kita boleh lakukan dengan bahasa ini. Biar saya pergi ke hadapan dan membuka dalam direktori sumber kami hari ini fail dipanggil hello1.php. Fail ini komen lebih daripada ia adalah kod sebenar, jadi biarlah saya sebenarnya membuang semua komen dari fail dan sekarang anda mungkin program PHP yang paling mudah di sini. 5 baris, dan beberapa daripada mereka adalah ruang putih, jadi notis beberapa perbezaan utama di sini. Fail dipanggil hello1.php. Barisan pertama, walaupun, adalah , bermakna itulah ia untuk kod PHP saya. Mari kita lihat bagaimana untuk menjalankan ini. Saya akan kembali ke tetingkap terminal saya di sini. Saya akan pergi ke dalam direktori PHP saya. Perhatikan bahawa kita mempunyai sekumpulan keseluruhan fail, salah satu yang pertama adalah hello.php. Biar saya pergi ke hadapan dan menjalankan ini hello1.php,, masukkan. Kebenaran ditolak. Okay. Bagaimanakah kita perkara-perkara seperti ini tetap pada masa lalu? Apa itu? >> [Sambutan pelajar didengar] Kita perlu membaca dan menulis, tetapi biarlah saya melakukan ls-l. Ingat ini output agak samar di mana hello1 seolah-olah boleh dibaca dan ditulis oleh saya tetapi dibaca oleh orang lain. Ia ternyata ini sebenarnya tidak merupakan satu langkah ke arah yang betul. Perbezaan, sekali lagi, dengan bahasa yang ditafsirkan anda tidak menjalankan program secara langsung. Anda bukannya menjalankan jurubahasa dan bawanya ke kod bahawa anda telah ditulis supaya ia boleh mentafsirkan ia baris demi baris. Dalam kes ini, jurubahasa atau program Saya sebenarnya mahu menjalankan adalah benar-benar dipanggil PHP. Di suatu tempat pada cakera keras ini perkakas terdapat program orang lain wrote dipanggil PHP, atau pada Windows php.exe. Apa yang saya akan lakukan di sini adalah saya akan sebenarnya menjalankan PHP tetapi memberi ia sebagai hujah baris arahan kod yang saya tulis, dan kemudian saya akan zum keluar dan tekan enter. Ia berjalan program saya untuk saya, atas ke bawah, kiri ke kanan. Biar saya pergi ke hadapan dan membuka varians sedikit ini. Dalam notis hello2.php bahawa ini terlalu kebanyakannya komen, jadi biarlah saya menghilangkan mereka sebagai gangguan, dan apa yang jelas berbeza sekarang mengenai fail ini? Ada ini barisan baru, agak samar di atas. Dalam baris 1 #! / Bin / php. Bin adalah satu konvensyen pada Linux dan Mac OS binari, jadi / bin bermakna ini adalah folder yang mengandungi sekumpulan binari yang diprogramkan, salah satu daripadanya ialah PHP. The #! digelar shebang, yang merupakan cara yang cepat untuk mengatakan ia, dan apa ini bermakna adalah bahawa apabila anda menjalankan program ini kini terdapat petunjuk di atas fail yang memberitahu komputer apa jurubahasa untuk menggunakan. Ia mendapat sedikit menjengkelkan jika anda terpaksa untuk memberitahu pengguna anda dan pelanggan anda "Hei, kita menulis program ini dipanggil hello1.php." Apa yang anda perlu lakukan adalah selama-lamanya menjalankan PHP dan kemudian nama program ini. Terus terang, ia hanya akan menjadi lebih bagus untuk menjalankan hello1.php, dan sememangnya, kita boleh jika kita melakukan perkara-perkara berikut. Biar saya pergi ke hadapan dan melakukan ls-l, dan notis dalam hello2 ia masih hanya membaca menulis dan kemudian membaca membaca, jadi saya tidak boleh lagi melakukan ini, hello2.php. Tetapi kita memperkenalkan pernah begitu ringkas masa lepas, arahan chmod. Jika saya lakukan chmod x +, yang bermaksud semua executability ditambah, dan kemudian hello2.php dan kemudian ls-l lagi notis apa yang berubah. Satu, Linux menunjukkan saya nama fail hijau untuk menyampaikan idea bahawa ia laku, tetapi yang lebih penting, di sebelah kiri melihat bahawa sedikit yang mewakili x bagi laksana kini telah ditetapkan. Apa ini sekarang bermakna saya boleh berlari ./hello2.php seperti biasa, tekan enter, dan kerana shebang di atas fail itulah petunjuk, sekali lagi, untuk Linux yang mengatakan menggunakan jurubahasa ini untuk menjalankan fail ini. Jangan bimbang tentang memaksa pengguna untuk sebenarnya menaip. Dan apa yang bagus sekarang ialah ia jenis tidak relevan kepada pelanggan saya atau rakan-rakan saya apa bahasa saya menulis program ini, jadi saya boleh pergi ke hadapan dengan mv dan menamakan semula perkara ini untuk hello2, misalnya. Dan kini jika saya lakukan ./hello2 dan zum keluar program saya terus berjalan. Ini sambungan fail konvensyen manusia yang perlu untuk sesuatu seperti dilafaz dan Buat yang mencari mereka. Tetapi untuk PHP, saya boleh panggil ini apa-apa lanjutan fail yang saya mahu. Saya boleh menipu dunia ke dalam pemikiran bahawa saya benar-benar baik di Ruby, dan saya boleh menulis hello2.rb dan kemudian jalankan ini, dan Voilà, sekarang saya mempunyai versi Ruby, yang adalah satu pembohongan yang lengkap. Tetapi sambungan fail adalah tidak bermakna jika fail boleh laksana dan ini tanda-tanda khas pada bahagian atas fail. Kini, sebagai mengetepikan, biar saya tunjukkan anda dengan cepat versi 3, yang jenis helah berguna untuk mengetahui. Dalam hello3 saya melakukan sesuatu yang sedikit salah bahawa saya akan mengemaskini kod sumber dalam talian. Dalam 3 versi ternyata bahawa pada kebanyakan komputer Linux ada satu program yang dipanggil plates untuk alam sekitar, dan apa yang anda boleh lakukan di sini adalah jika anda tidak mempunyai idea di mana PHP dipasang pada hard drive tempatan, kerana sesungguhnya ia boleh berbeza berdasarkan pada komputer bahawa seseorang itu menggunakan, plates hanya berkata dijalankan plates, yang adalah pada sistem yang paling, dan memikirkan di mana PHP adalah. Hanya helah biasa supaya anda tidak perlu bimbang tentang mencari mana program. Tetapi jika anda melakukan penjagaan untuk mengetahui mana program dan anda tidak dijaga setakat anda boleh menggunakan arahan yang. Izinkan saya zoom out dan jenis yang php, dan notis ia memberitahu saya ia sebenarnya dalam usr / bin / php. Ia adalah jenis satu pembohongan. Ia juga dalam bin. Ia hanya menunjukkan saya hit pertamanya. Jika anda pernah tertanya-tanya mana dilafaz, yang dilafaz, itulah di usr / bin / dilafaz, yang membuat, usr / bin / membuat, dan apa yang bermakna adalah semua masa ini anda mungkin telah menaip usr / bin / dilafaz memasuki untuk menjalankan dilafaz, tetapi ia jenis membosankan untuk berbuat demikian, jadi beberapa folder seperti usr / bin dan bin dianggap mungkir jadi komputer tahu untuk melihat di dalamnya untuk anda. Sebarang pertanyaan mengenai penulisan program, Dunia super super Hello mudah dalam PHP dan kemudian berjalan? Kerana sekarang kita akan mula memperkenalkan sintaks lebih menarik. Baiklah, di sini kita pergi. Program-program ini kita telah melihat sebenarnya mereka semua sebelum. Jika saya membuka, sebagai contoh, mari kita buat beer1.php, kita tidak akan pergi melalui beberapa versi ini, tetapi apa yang saya lakukan saya duduk dan ia dicurahkan atau ditukar kod C saya untuk kod PHP di sini. Kebanyakan bahagian atas fail adalah komen di sini. Ia ternyata terdapat satu fungsi baru kita perlu dipanggil readline. GetString, ingat, dari seterusnya Minggu 0 adalah satu perkara yang CS50. PHP datang dengan fungsi tersendiri mesra pengguna dipanggil readline yang mengambil masa 1 hujah yang menyatakan prompt yang anda mahu untuk menunjukkan kepada pengguna, dan apa readline tidak ia kembali apa-apa jenis pengguna. Dalam kes ini, saya mengisytiharkan pembolehubah yang dipanggil $ n. Saya menyimpan di dalamnya nilai pulangan readline selepas menyebabkan pengguna dengan rentetan ini. Hanya untuk sandaran, untuk benar-benar menjalankan perkara ini, izinkan saya pergi ke hadapan dan menjalankan beer1.php php. Berapa banyak botol akan ada? Mari kita hanya melakukan 2 kali ini. Enter. Itu semua. Program ini berfungsi sama dengan versi C dari minggu lalu. Tetapi syntactically mari kita lihat apa yang berbeza. Selepas saya mendapat int dari notis pengguna bahawa saya melakukan beberapa semakan ralat, dan jika n adalah kurang daripada 1 saya berhenti dan saya hendak mencetak keluar mesej maaf kepada pengguna dan keluar dengan 1. Ini juga adalah sedikit berbeza.  Dalam C apa yang kita lakukan? Dalam C kita kembali 1. Dalam PHP anda keluar dengan 1, yang terus-terang saya fikir sedikit lebih intuitif kerana anda benar-benar keluar program. Semua hak, dan kemudian turun di sini lagu menjengkelkan adalah sama syntactically kecuali bagi pemboleh ubah, jadi di sini selaras 24 seterusnya notis saya untuk gelung adalah hampir sama, tetapi saya mempunyai $ di hadapan i dan n, dan apa juga hilang daripada 26 baris yang kita telah pada masa lalu apabila mengisytiharkan i ubah? Ada jenis no. Ia adalah betul dalam PHP untuk mengatakan int. Anda hanya tidak perlu untuk berbuat demikian. Komputer, jurubahasa PHP adalah cukup bijak untuk menyedari bahawa jika anda meletakkan nombor dalam $ saya ia akan merawat ia sebagai nombor untuk anda. Dan kemudian turun di sini kita palam dalam $ i, $ i, $ i - 1. Semua itu adalah sama, dan kemudian turun di sini kita lakukan "Wow, itu menjengkelkan" printf dan kemudian keluar (0). Sekali lagi, Fleet di sini adalah bahawa walaupun kita akan menghabiskan agak sedikit masa pada PHP, sudah tentu berbanding apa yang kita lakukan pada C, ia adalah hampir sama, dan sebagainya apa yang kita akan lakukan hari ini dan minggu depan dan seterusnya memberi tumpuan benar-benar pada beberapa idea-idea baru. Hanya untuk melihat bahawa satu perkara lain tidak menterjemahkan lebih dari C, ini adalah program super mudah kita lakukan dalam 1 Minggu atau 2 yang cubed nilai. Tetapi apa yang menarik pada masa tentang program ini adalah bahawa ia memperkenalkan konsep fungsi adat bertulis bahawa kita menulis. Sintaks dalam PHP adalah hampir sama. Berikut adalah program saya top up. Notis lagi hadir adalah apa-apa tanggapan utama. Saya mula menulis kod, dan ini adalah apa yang akan disempurnakan oleh jurubahasa. Saya hendak mencetak keluar x ialah kini 2, mungkin. Kemudian saya menuntut cubing ... Kemudian saya memanggil fungsi kiub dan lulus dalam $ x dan memberikan nilai pulangan kepada $ x. Kemudian saya mendakwa bahawa ia cubed, dan kemudian saya katakan ini, yang diharapkan akan mengatakan x kini 8. Sintaks untuk fungsi dalam PHP pernah jadi sedikit berbeza. Sekali lagi hilang adalah jenis pulangan. Sekali lagi hilang adalah jenis pulangan dan juga hilang apa jenis lain? [Sambutan pelajar didengar] Well, okay, yang baik. Mari kita kembali di tempat kedua. Kami tidak mempunyai, misalnya, int sini. Kami tidak, misalnya, telah int sini kerana, sekali lagi, dalam PHP anda hanya tidak perlu dan tidak perlu berbuat demikian, tetapi terdapat kata kunci ini baru yang dipanggil fungsi. Dalam PHP ia adalah hampir jelas sedikit kerana apabila anda mahu fungsi anda benar-benar mengatakan fungsi, anda memberikan nama dan kemudian senarai dipisahkan koma jika mana-mana hujah. Tidak perlu untuk mengatakan batal atau apa-apa seperti itu, dan kemudian pulangan adalah sama, $ * $ * $ A. Apa juga hilang? Sammy menunjukkan ini di sini. Pada bahagian atas fail sepenuhnya hadir dalam PHP juga adalah prototaip. Ini juga adalah oleh reka bentuk. Bahasa dan jurubahasa seperti PHP adalah lebih bijak daripada C pernah berada dalam penyusun seperti dilafaz. Recall dilafaz bahawa, jika anda tidak memberitahu bahawa kiub wujud, jika anda tidak beritahu yang printf wujud dengan prototaip atau dengan # include, baik, ia akan menjerit pada anda dan tidak juga menyusun kod anda. PHP dan lebih bahasa moden banyak yang lebih bijak apabila ia datang kepada ini. Mereka akan mengambil ia ke atas diri mereka untuk membaca melalui semua kod anda dan kemudian menjerit pada anda hanya jika ia mendapati mana-mana kiub. Ia tidak kisah jika kiub adalah di bahagian bawah atau atas atau walaupun dalam fail beberapa berasingan. Bahasa PHP dan serupa kini cukup pintar untuk melihat ke hadapan pada segala-galanya sebelum deeming anda setelah membuat kesilapan. Di manakah yang meninggalkan kita? Mari kita buat satu contoh lepas di sini dalam keadaan, dan jika saya membuka notis conditions2.php terlalu sintaks sini adalah hampir sama. Saya menggunakan readline bukannya GetString, tetapi garis yang sama seperti sebelum ini, "Saya ingin integer sila." Saya kemudian mempunyai keadaan jika, else if, dan kemudian lain, tetapi fungsi program ini adalah juga sama dengan apa yang kita lakukan minggu lalu, jadi jika saya menghadapi perkara ini, php-conditions2, dan saya memberikan nombor seperti 23 - Saya mengambil nombor positif. Jika saya memberikan ia -1 saya memilih nombor negatif. Jika saya memberikan ia 0 sesungguhnya aku mengambil 0. Jadi yang mengambil berat tentang semua ini? Nah, salah satu jenis yang menyeronokkan senaman di sini bagi saya sekurang-kurangnya adalah untuk kembali dan lihat berapa cepat saya boleh melaksanakan pset 5, pset ejaan. Ingat bahawa terdapat fail ini dipanggil speller.c, dan terdapat fail yang dipanggil dictionary.c. Apa yang saya lakukan ialah saya jenis menghabiskan beberapa minit dan saya ditukar kod C kod PHP, dan kita tidak akan menghabiskan banyak masa di pengeja kerana seperti dalam pset 5 anda tidak benar-benar perlu banyak menghabiskan masa di pengeja sendiri kerana perhatian anda adalah pada kamus. Cukup untuk mengatakan bahawa jika anda membaca melalui pengeja, fail ini di sini, ia adalah cukup banyak bersamaan dengan kod C kami memberikan anda untuk pset 5. Saya baru sahaja menambah beberapa $ di tempat-tempat. Saya telah menukar nama fungsi tertentu jika mereka tidak wujud dalam PHP. Ada satu perkara tambahan di sini, preg_match, yang merupakan cara yang sedikit penjaga melakukan sesuatu, tetapi kita akan kembali yang akhirnya. Tetapi dalam jangka pendek, pengeja hampir sama, dan jika anda melihat pada bahagian bawah sangat apa yang ia akhirnya memuntahkannya keluar adalah ini di sini, perkataan silap eja, perkataan di dalam kamus, perkataan dalam teks. Baiklah, jadi apa yang menarik sekarang adalah seperti berikut. Pada bahagian atas fail saya saya memerlukan dictionary.php. Sama seperti C # include PHP mempunyai fungsi khas yang dipanggil memerlukan yang cukup banyak melakukan perkara yang sama, memerlukan fail dipanggil dictionary.php. Bagaimana saya boleh pergi tentang melaksanakan pset 5? Biar saya pergi ke hadapan dan membuka fail di sini. Izinkan saya mengambil rujukan sedikit di sini. Dan biarlah saya mencipta fail baru dan mula memanggil dictionary.php ini. Izinkan saya meletakkan ia dalam folder lain supaya kita boleh lakukan ini hidup. Dan sekarang saya akan zum masuk Saya akan memulakan fail PHP saya dengan kurungan terbuka php ditutup kurungan. Dan kemudian di sini terdapat beberapa fungsi yang saya perlu untuk melaksanakan untuk pset 5, jadi biarlah saya mula melaksanakan beberapa orang, jadi cek fungsi, yang terpaksa mengambil perkataan dalam sebagai hujah. Kami akan berbuat demikian dan datang kembali ke dalam seketika. Terdapat beban fungsi, yang mengambil dalam apa sebagai hujah? Kamus, jadi fail bahawa saya sebenarnya mahu beban. Terdapat saiz fungsi, yang tidak mengambil apa-apa hujah dan terdapat fungsi-apa yang lain? Membongkar, yang tidak mengambil apa-apa hujah yang sama ada. Ini adalah 4 fungsi yang saya perlu kini melaksanakan dalam PHP, dan apa yang saya akan lakukan adalah pergi ke hadapan dan melakukan ini. Banyak anda menggunakan jadual hash di pset 5, jadi biarlah saya pergi ke hadapan dan membuat jadual hash dalam PHP. Selesai. Itu memberikan saya jadual hash. Nah, mengapa? Satu, pembolehubah dipanggil $ jadual, hanya nampak idea jadual hash. Kurungan persegi, walaupun, ingat, mewakili apa? Array, tetapi dalam tatasusunan PHP tidak perlu berangka diindeks. Mereka juga boleh menjadi array bersekutu, yang bermakna anda boleh mempunyai kunci sewenang-wenangnya dan nilai-nilai. Banyak seperti dalam pset 5, orang-orang yang melakukan pelaksanaan jadual hash anda mungkin dimasukkan perkataan dan kemudian dimasukkan ke dalam rantaian senarai yang dipautkan, atau anda disimpan nilai suatu tempat yang benar atau sesuatu yang bermaksud sedemikian. Anda entah bagaimana teringat hakikat bahawa perkataan berada di sana. Buat masa sekarang, yang akan menjadi jadual hash saya, dan sebagainya sekarang untuk pergi tentang melaksanakan fungsi cek Saya hanya perlu melihat di dalam jadual yang hash dan lihat jika perkataan ada. Apa yang saya akan lakukan adalah saya akan katakan jika- katakan isset, yang merupakan fungsi PHP yang benar-benar hanya bermakna adalah set utama, jadi isset ($ jadual [$ perkataan], dan jika demikian kembali benar. Itu sahaja. Itulah pset 5 dalam PHP. Nah, dalam keadilan, okay. Lain kembali palsu, jadi ia tidak ada. Apa yang benar-benar berlaku di sini? Nah, jika jadual-atau jadual hash sini lebih amnya adalah pelbagai bersekutu yang bermakna anda boleh indeks ke dalamnya dengan perkataan seperti "perkataan," dan anda perlu untuk mendapatkan kembali beberapa nilai. Kami jenis mendapatkan satu langkah di hadapan diri kita. Ia akan menjadi jenis bagus jika kita sebenarnya dimuatkan fail yang pertama, jadi beban tidak cukup sebagai mudah, tetapi biarlah saya pergi ke hadapan dan menyiapkan  pelaksanaan yang benar-benar cepat beban. Biar saya pergi ke hadapan dan mengatakan perkataan mendapat kamus fail. Fungsi fail dalam PHP membuka fail dan pulangan kepada anda pelbagai semua perkataan dalam fail itu, hanya tangan mereka kepada anda. Itu adalah sakit yang besar juga, tidak ia? Sekarang foreach, ini adalah membina baru kami, foreach ($ perkataan $ perkataan). Gelung ini akan untuk memulakan iterating lebih perkataan pelbagai dan menyerahhak kepada pembolehubah $ perkataan setiap perkataan dalam fail dari yang pertama kedua ketiga keempat sepanjang jalan jadi saya tidak perlu untuk melakukan yang menjengkelkan [i] notasi dan sebagainya. Dan apa yang saya akan lakukan untuk setiap kata-kata menyimpannya dalam jadual saya dengan mengindeks ke dalam jadual dan kemudian melakukan benar kerana untuk ingat bahawa perkataan di dalam kamus saya semua saya benar-benar perlu lakukan jenis flip sedikit dan mengatakan perkataan ini dalam jadual hash saya ada, benar. Dan jika ia tidak ada, saya tidak perlu jelas meletakkan palsu, sebaliknya saya perlu meletakkan palsu untuk semua kata-kata yang mungkin dalam alam semesta. Ia mencukupi bagi saya hanya untuk menetapkan nilai indeks kepada true jika perkataan sebenarnya dalam jadual hash saya. Sekarang, saya memotong beberapa sudut di sini bahawa saya akan gelombang tangan saya pada sekarang, tetapi kini fungsi beban dilakukan. Saya memuatkan semua perkataan dari fail ke array. Saya melelar lebih array bahawa, dan untuk setiap perkataan dalam pelbagai Saya palamkan ia ke dalam jadual hash saya dengan 1 baris kod. Ini adalah menyeronokkan. Anda tahu bagaimana kita boleh melaksanakan saiz sekarang? Nah, saiz sentiasa cukup mudah, dalam keadilan. Di sini kita hanya boleh melakukan kembali kiraan jadual. Itu agak mudah juga, mengira bilangan perkara dalam jadual. Itulah sebenarnya jenis bukan yang paling berkesan. Saya mungkin perlu mempunyai saiz yang berubah-ubah yang dipanggil supaya kita boleh melakukannya dalam masa yang berterusan, tetapi itu cukup mudah. Oh, dan kemudian memunggah, jika kita benar-benar mahu menjadi dubur sini kita boleh mengatakan bahawa bagaimana anda memunggah sesuatu. Anda hanya menetapkan pembolehubah yang sama kepada pelbagai kosong, dan ia menghilangkan segala-galanya yang berada di sana. Tidak perlu untuk memanggil bebas. Sekali lagi, saya telah memotong beberapa sudut, dan saya memohon maaf kerana set masalah menyerahhakkan 5 mungkin dalam C, tetapi jika kita kini pergi ke hadapan dan menjalankan ini, Saya akan benar-benar menjalankan versi yang saya tulis terlebih dahulu hanya supaya saya tidak membuat apa-apa kesilapan sintaksis jua. Biar saya pergi ke hadapan dan menjalankan pengeja. Penggunaan adalah sama. Berikut adalah fail kamus yang hanya mengandungi perkataan foo. Berikut adalah fail teks yang hanya mengandungi foo bar. Mari kita semak ejaan ini, jadi pengeja, dengan menggunakan fail ini kamus pada fail teks ini. Ada satu perkataan silap eja, bar, dan Voilà. Selesai dengan pset 5. Mari kita rehat 5-minit di sini, dan kita akan kembali dan lebih pada PHP. Baiklah, kita kembali. Mari kita tidak membenci saya untuk seketika. Mari kita kini sebenarnya melihat jika ini tidak positif sebenarnya melaksanakan perkara ini dalam PHP. Diberikan, ia mengambil masa 45 saat untuk melaksanakan. Tetapi mari kita teruskan sekarang dan menjalankan perkara. Biar saya pergi ke hadapan dan menjalankan versi C ejaan, dan kami akan menjalankan pada salah satu fail terbesar, yang merupakan Bible King James. Dan bahawa di sini adalah dalam mari kita pergi ke folder C kami, pengeja on King James 5. Banyak perkataan silap eja. Okay, jadi itulah output anda mungkin mendapat walaupun masa adalah sedikit berbeza, jika anda mendapat segala-galanya berfungsi dengan betul, dan jadi masa dalam jumlah semak ejaan Bible King James adalah 0,38 saat, jadi cukup baik menggunakan pelaksanaan yang. Sekarang izinkan saya pergi ke versi PHP, yang kita hanya menulis. Biar saya menjalankan pengeja pada Raja James. Oop, mengabaikan kesilapan itu. Saya dalam direktori salah. Speller on King James 5. Hampir selesai. Okay, pemerhati bijak akan menyedari bahawa adalah lebih daripada 3 saat di sana. Itu adalah masa yang benar berjalan. Ia ternyata bahawa ia mengambil masa untuk meludah banyak teks keluar kerana buffering isu, tetapi cerita panjang pendek, yang adalah 3.15 saat mesin masa, masa CPU, berbanding apa yang ia seketika lalu? Seperti 0,3. Maksud saya, ia adalah suatu perintah magnitud lebih perlahan, jadi di mana adalah bahawa kelembapan tidak masuk akal yang datang dari? Well, seperti yang telah terjadi dengan keputusan reka bentuk yang paling mana-mana kita telah membuat dalam kelas sejak 9 minggu yang lalu terdapat hampir sentiasa tradeoff ini. Kadang-kadang antara ruang hanya, kadang-kadang antara ruang dan masa, ruang, masa dan usaha pembangunan, dan sesungguhnya di sini, walaupun kita menyelamatkan sejumlah besar masa, mungkin berpotensi 10-20-30 jam masa pembangunan melaksanakan pemeriksa ejaan dengan sebat sehingga ia dalam hanya 45 saat dengan bahasa ini harga yang kita bayar adalah bahawa ia adalah suatu perintah magnitud lebih perlahan akibat, dan ini adalah umumnya kes dengan bahasa yang paling mana-mana ditafsirkan, PHP, Python, Ruby, Pearl atau lain-lain di mana jika anda mahu untuk menjalankan melalui seorang jurubahasa dan mempunyai ia membaca kod anda baris demi baris, atas ke bawah, kiri ke kanan, yang tengah akan mengambil sedikit masa sendiri, dan apa yang anda rasa di sini dalam 3 saat sebagai bertentangan dengan 0,3 saat adalah hakikat bahawa terdapat ini tengah yang telah benar-benar mentafsir kod kami baris demi baris, dan Allah melarang jika anda berada di dalam gelung dengan fail yang besar yang mengandungi beratus-ratus beribu-ribu perkataan. Itu overhed akan menambah dan menambah dan menambah dan menambah. Bagi alat seperti ini ia mungkin tidak bahasa yang terbaik untuk digunakan untuk melaksanakan pemeriksa ejaan jika mendesaknya adalah kepentingan kepada pengguna anda dan kepada anda. Tetapi kemewahan yang kita ada dalam seketika ialah jika anda menggunakan bahasa seperti PHP atau banyak bahasa yang ditafsirkan dalam konteks Web, untuk perkara itu, anda mempunyai faedah bahawa internet adalah lebih perlahan daripada komputer yang paling. Anda mempunyai CPU GHz dalam komputer anda, 2 GHz, mungkin lebih hari ini. Tetapi realitinya di internet terdapat satu jumlah yang tinggi kependaman mana pelayar untuk bercakap kepada pelayan, walaupun kita melihat minggu lepas bahawa yang agak cepat, setengah milisaat atau lebih, itu juga menambah sehingga, dan jika anda memuat turun perkara-perkara seperti imej atau gambar Facebook atau mendapat mesej segera melalui perbualan Facebook, GChat atau sebagainya, semua ini kali pusingan perjalanan antara pelayar dan permulaan pelayan untuk menambah, yang membuat pilihan tertentu anda bahasa dalam banyak kes tidak semua yang berkaitan, jadi anda denda menggunakan bahasa yang agak perlahan seperti PHP atau Python atau Ruby tetapi yang terdapat upsides besar untuk anda dan rakan-rakan anda dan rakan-rakan anda kerana anda boleh melaksanakan perkara-perkara yang demikian, jadi lebih cepat. Dan lebih-lebih lagi, anda mempunyai risiko yang lebih kurang kelemahan keselamatan tertentu. Terdapat tiada petunjuk dalam PHP. Tiada kesilapan seg bahawa anda boleh dengan mudah mendorong dengan cara yang sama anda boleh dalam C. Dengan C anda sangat dekat dengan perkakasan. Dengan bahasa PHP dan sama anda jenis peringkat yang lebih tinggi, jadi untuk bercakap, dengan banyak pertahanan di antara anda dan apa yang sebenarnya berlaku di di dalam mesin, dan ia adalah hanya satu tradeoff. Kami telah mendapat ke titik mempunyai ini lebih moden, bahasa tahap tinggi seperti PHP kerana pengajaran dalam bahasa seperti PHP di C. Tetapi jika anda tidak memahami apa yang telah berlaku di bawah hood semua masa ini anda pastinya tidak boleh membuat keputusan reka bentuk yang betul, dan sudah tentu apabila ia datang untuk bekerja di tempat seperti Facebook atau Google atau mana-mana tempat-tempat yang semakin bermain dengan data yang besar set walaupun anda kembali dan jangan premed dan bekerja dengan MD beberapa pada beberapa data yang besar menetapkan melibatkan pesakit dan doktor dan seperti menggunakan alat yang betul adalah sangat menarik kerana jika tidak, analisis anda beberapa set data mungkin mengambil masa beberapa saat, atau ia benar-benar mungkin mengambil jam. Ini adalah hanya satu contoh, tidak mengecewakan anda dengan usaha berapa banyak lagi ia adalah dalam C tetapi untuk membantu anda menghargai bahawa apabila anda melaksanakan sesuatu dalam C anda benar-benar memahami, atau dalam teori, benar-benar memahami bagaimana segala-galanya adalah atau perlu bekerja, dan anda mempunyai kawalan hampir penuh atas apa yang berlaku di bawah hood, dan dengan bahasa ini di peringkat yang lebih tinggi anda perlu untuk melepaskan lebih banyak kawalan kepada orang-orang yang mencipta mereka dan lebih tertakluk kepada keputusan reka bentuk mereka daripada anda. Tetapi jika kita mengambil untuk diberikan bahawa prestasi tidak cukup sebagai penting di Web kerana isu-isu lain, kelajuan rangkaian hanya sedikit perlahan daripada kelajuan CPU anyway, supaya kita boleh menyusun mampu untuk menggunakan bahasa yang agak perlahan jika upsides kita boleh membangunkan perkara-perkara yang 10 kali lebih cepat atau lebih. Mari kita lihat bagaimana kita boleh mula menggunakan ini. Biar saya pergi ke folder antara contoh hari ini dipanggil frosh.ims, dan ini sebenarnya sendiri didorong oleh fakta bahawa perkara yang sangat pertama Saya menulis untuk Web tahun lalu selepas mengambil CS50 dan CS51 adalah sebuah laman web untuk program IM Frosh, sukan bayat di antara dinding, yang pada masa ini adalah cukup tahun lalu bahawa pada masa tiada laman web untuk program ini, walaupun terdapat Web, dan sebaliknya terdapat pengawas mahasiswa di Wigglesworth mana jika anda mahu mendaftar untuk bola tampar atau bola sepak atau apa sahaja yang anda akan mengisi sekeping kertas. Anda kemudian akan berjalan di seluruh kawasan itu. Anda kemudiannya akan mengetuk pintu dan slaid mereka di pintu atau tangan mereka untuk proctor sehelai kertas dengan nama anda di atasnya, sama ada atau tidak anda mahu menjadi seorang kapten pasukan, apa sukan yang anda mahu lakukan, dan apa asrama anda masuk Ia adalah jenis cara sekolah lama melakukan sesuatu, dan ini adalah perdana peluang untuk mengautomasikan banyak proses ini. Anda hanya pergi ke laman web. Anda menaip sesuatu. Anda akan mendapat pengesahan e-mel, dan ledakan, anda selesai. Ini adalah perkara pertama yang saya lakukan, walaupun dalam bahasa yang dipanggil Pearl, tetapi ia adalah agak mudah untuk melakukan dalam PHP, dan ini adalah jenis wakil masalah anda boleh mula menyelesaikan apabila anda boleh meluahkan diri anda programatik dan tidak perlu bergantung kepada perkara-perkara seperti laman Google atau Excel atau alat yang diserahkan kepada anda. Kalian kini mempunyai keupayaan untuk melakukan perkara-perkara seperti ini. Ini adalah versi super hodoh bentuk, tetapi mari kita hanya menggunakannya untuk permulaan perbualan di mana ini adalah kira-kira apa bentuk kelihatan seperti tahun yang lalu untuk kita untuk membolehkan orang-orang di Web untuk mendaftar untuk Frosh IM. Kami meminta untuk satu nama, checkbox untuk sama ada atau tidak mereka mahu menjadi kapten, lelaki atau perempuan, dan kemudian apa asrama mereka berada dalam, dan kemudian mereka akan menyerahkan borang ini. Mari kita lihat pertama di bawah hood pada HTML yang mewakili laman web ini. Mari saya pergi ke froshims0, dan sebagai diketepikan, untuk pset 7 Saya mengambil untuk diberikan direktori dan folder yang saya meletakkan sesuatu masuk Kami akan membimbing anda melalui betul-betul di mana barangan untuk pergi ke dalam perkakas, arahan arena yang anda perlu menjalankan, jadi jangan bimbang tentang semua butiran bodoh Menyegerakkan dari sini mendapat-pergi. Baiklah, di sini adalah froshims0.php. Biar saya tatal ke bawah, dan apa yang tertanya-tanya di sini, ini adalah fail PHP, tetapi apa yang di dalamnya, jelas? Ia banyak seluruh HTML, dan sesungguhnya, asal PHP benar-benar adalah untuk menjadi bahasa-centric Web. Satu masa lalu kita digunakan untuk melaksanakan contoh bir, syarat contoh, contoh hello, dan itulah denda. Anda boleh menggunakan PHP sebagai bahasa skrip mana skrip adalah benar-benar hanya tatanama yang diberikan kepada program cepat dan kotor atau sesuatu yang anda menulis dalam bahasa berskrip atau lebih amnya ditafsirkan. PHP adalah sangat berguna untuk itu kerana anda telah melihat berapa cepat agak kita boleh menyiapkan program dalam PHP. Tetapi ia telah benar-benar direka untuk digunakan untuk Web, dan direka untuk Web dalam erti kata bahawa notis di sini di atas fail Saya tidak bermula dengan