1 00:00:00,000 --> 00:00:03,920 >> [MUSIC PLAYING] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J. Malan: Baiklah. 4 00:00:13,800 --> 00:00:15,640 Ini adalah CS50. 5 00:00:15,640 --> 00:00:17,620 Ini adalah awal minggu delapan. 6 00:00:17,620 --> 00:00:22,440 Dan Anda mungkin ingat bahwa kita tinggalkan terakhir kali melihat sebuah bahasa baru 7 00:00:22,440 --> 00:00:23,240 sama sekali. 8 00:00:23,240 --> 00:00:25,905 Bahkan, salah satu yang cukup ringan dan itu tidak bahkan 9 00:00:25,905 --> 00:00:26,940 bahasa pemrograman. 10 00:00:26,940 --> 00:00:31,100 Ini adalah bahasa markup yang memungkinkan kita sebenarnya struktur dan membuat halaman web. 11 00:00:31,100 --> 00:00:33,350 Dan ketika Anda sesuatu yang lain dalam hubungannya dengan this-- 12 00:00:33,350 --> 00:00:35,670 atau Anda segera akan, jika Anda belum. 13 00:00:35,670 --> 00:00:38,530 Kita akan menggunakan Cascading Style Sheets, atau CSS, yang 14 00:00:38,530 --> 00:00:40,971 adalah jenis lain dari bahasa dengan sifat dan nilai-nilai 15 00:00:40,971 --> 00:00:43,220 itu akan membiarkan kita melakukan hal-hal seperti mengubah warna 16 00:00:43,220 --> 00:00:46,010 dan mengubah kedudukan dan jenis-tweak. 17 00:00:46,010 --> 00:00:49,940 Tapi hari ini dan seterusnya, kami mulai fokus pada bahasa yang lebih kuat, 18 00:00:49,940 --> 00:00:52,810 bahasa pemrograman yang sebenarnya seperti PHP. 19 00:00:52,810 --> 00:00:54,880 >> Jadi PHP telah ada selama beberapa waktu. 20 00:00:54,880 --> 00:00:56,810 Dan karena Anda akan lihat, dirancang terutama 21 00:00:56,810 --> 00:01:00,280 awal untuk aktual digunakan dalam pengembangan web 22 00:01:00,280 --> 00:01:02,360 dan benar-benar menghasilkan halaman web. 23 00:01:02,360 --> 00:01:04,849 Jadi jenis apa fitur tidak bahasa 24 00:01:04,849 --> 00:01:10,040 perlu untuk membuat web halaman dinamis dengan itu? 25 00:01:10,040 --> 00:01:14,760 >> Dengan kata lain, jika Anda ingin menghasilkan konten dynamically-- seperti Facebook 26 00:01:14,760 --> 00:01:19,480 Newsfeed, yang berubah secara konstan, atau pesan instan yang muncul dari waktu 27 00:01:19,480 --> 00:01:21,872 untuk time-- seperti apa bagian kunci dari fungsi 28 00:01:21,872 --> 00:01:24,580 Anda perlu dalam bahasa pemrograman yang akan membiarkan Anda dinamis 29 00:01:24,580 --> 00:01:28,070 mencetak informasi baru ke layar? 30 00:01:28,070 --> 00:01:28,685 >> SISWA: Kode. 31 00:01:28,685 --> 00:01:29,560 DAVID J. Malan: Kode. 32 00:01:29,560 --> 00:01:30,440 OK. 33 00:01:30,440 --> 00:01:31,995 Kami akan mengambil itu. 34 00:01:31,995 --> 00:01:35,310 Sedikit lebih tepat. 35 00:01:35,310 --> 00:01:37,639 Maksudku, kita bisa melakukan ini dengan C, terus terang. 36 00:01:37,639 --> 00:01:38,930 Ini akan menjadi sakit di leher. 37 00:01:38,930 --> 00:01:41,045 Tapi-- adalah komitmen ini? 38 00:01:41,045 --> 00:01:41,895 >> SISWA: Ya. 39 00:01:41,895 --> 00:01:42,677 Variabel, mungkin? 40 00:01:42,677 --> 00:01:43,760 DAVID J. Malan: Variabel. 41 00:01:43,760 --> 00:01:44,160 OK, yakin. 42 00:01:44,160 --> 00:01:45,740 Variabel pasti bisa membantu kami keluar. 43 00:01:45,740 --> 00:01:47,020 Dan bahkan sesuatu yang sederhana. 44 00:01:47,020 --> 00:01:50,640 Kami menggunakannya dalam pertama program hari pertama 45 00:01:50,640 --> 00:01:55,686 ketika kita benar-benar mengatakan "hello world." 46 00:01:55,686 --> 00:01:56,570 >> SISWA: Print. 47 00:01:56,570 --> 00:01:57,778 >> DAVID J. Malan: Print, kan? 48 00:01:57,778 --> 00:02:01,050 Print, atau printf di dunia C. Jadi selama ini, 49 00:02:01,050 --> 00:02:03,362 kami sudah di kami pembuangan sebuah language-- C, 50 00:02:03,362 --> 00:02:05,570 di particular-- dan bahkan Scratch dalam hal ini yang 51 00:02:05,570 --> 00:02:07,400 dapat menghasilkan string teks. 52 00:02:07,400 --> 00:02:11,090 >> Nah, jika HTML, seperti yang kita lihat minggu lalu, adalah hanya sejumlah besar string teks 53 00:02:11,090 --> 00:02:14,692 meskipun dengan kurung terbuka dan tertutup kurung dan beberapa jenis sajak 54 00:02:14,692 --> 00:02:16,650 dan alasan di balik itu, baik maka kita bisa benar-benar 55 00:02:16,650 --> 00:02:20,440 mulai menghasilkan halaman web baik manual dengan mengetik mereka keluar di gedit 56 00:02:20,440 --> 00:02:23,870 atau di Microsoft Word, untuk itu masalah-kita hanya perlu editor teks. 57 00:02:23,870 --> 00:02:26,830 >> Atau kita bisa menulis kode, untuk saran Anda 58 00:02:26,830 --> 00:02:30,435 sebelumnya, yang akan membiarkan kita dinamis menghasilkan HTML, 59 00:02:30,435 --> 00:02:32,560 dan itulah yang akan kita untuk mulai melakukan dengan PHP 60 00:02:32,560 --> 00:02:34,900 dan akhirnya bahkan dengan bahasa yang disebut JavaScript, 61 00:02:34,900 --> 00:02:37,910 adalah menggunakan satu bahasa untuk menghasilkan lain. 62 00:02:37,910 --> 00:02:40,720 Dan memang, ini adalah apa yang Facebook dan banyak, banyak situs lain 63 00:02:40,720 --> 00:02:44,530 lakukan untuk benar-benar dinamis menampilkan informasi baru bagi Anda. 64 00:02:44,530 --> 00:02:47,117 >> Jadi mari kita mulai dengan this-- samar mencari line, tapi satu 65 00:02:47,117 --> 00:02:48,450 itu sebenarnya cukup kuat. 66 00:02:48,450 --> 00:02:51,210 Sejauh ini, kami telah menggunakan C, yang merupakan bahasa yang dikompilasi. 67 00:02:51,210 --> 00:02:55,050 Dan hanya recap-- cepat dikompilasi bahasa memiliki karakteristik apa? 68 00:02:55,050 --> 00:02:59,050 Anda jelas perlu untuk mengkompilasi itu, tapi apa artinya? 69 00:02:59,050 --> 00:03:00,505 Ya? 70 00:03:00,505 --> 00:03:02,940 >> SISWA: Perlu dirakit menjadi kode mesin. 71 00:03:02,940 --> 00:03:03,060 >> DAVID J. Malan: OK. 72 00:03:03,060 --> 00:03:04,530 Perlu dirakit ke dalam kode mesin. 73 00:03:04,530 --> 00:03:07,340 Jadi Anda mengambil kode sumber Anda, yang merupakan semacam bahasa Inggris-seperti. 74 00:03:07,340 --> 00:03:09,270 Anda mengkonversi bahwa untuk sesuatu tingkat yang lebih rendah, 75 00:03:09,270 --> 00:03:11,590 yang akhirnya disebut objek code-- 0 dan 1. 76 00:03:11,590 --> 00:03:14,830 Dan itu mereka 0 dan 1 yang CPU, seperti yang dibuat oleh Intel, 77 00:03:14,830 --> 00:03:16,110 benar-benar mengerti. 78 00:03:16,110 --> 00:03:19,690 >> Sekarang, PHP dan Python dan Ruby dan JavaScript dan tandan lainnya 79 00:03:19,690 --> 00:03:23,190 bahasa tidak dikompilasi bahasa tetapi bahasa ditafsirkan, 80 00:03:23,190 --> 00:03:26,630 yang berarti Anda hanya mengetik mereka dan kemudian Anda tidak mengubahnya menjadi 0 dan 1. 81 00:03:26,630 --> 00:03:30,790 Anda malah hanya menyediakan kemudian sebagai masukan program orang lain, 82 00:03:30,790 --> 00:03:32,080 disebut seorang penerjemah. 83 00:03:32,080 --> 00:03:34,460 Dan orang itu program telah dirancang 84 00:03:34,460 --> 00:03:38,280 untuk memahami apa yang masing-masing dan setiap simbol dengan Python atau PHP 85 00:03:38,280 --> 00:03:42,650 atau Ruby atau sejumlah bahasa lain berarti. 86 00:03:42,650 --> 00:03:44,760 >> Dan sehingga semua kita butuhkan adalah sesuatu seperti ini. 87 00:03:44,760 --> 00:03:46,350 Jadi sebenarnya, aku akan pergi ke alat 88 00:03:46,350 --> 00:03:48,100 di sini, hanya ke setiap jendela tua, dan kami 89 00:03:48,100 --> 00:03:52,580 akan pergi ke depan dan terbuka sebuah file yang bernama, mengatakan, halo. 90 00:03:52,580 --> 00:03:55,780 Sekarang sebelumnya, saya mungkin telah disimpan ini bahkan dengan ekstensi file, 91 00:03:55,780 --> 00:03:57,910 tapi aku akan melakukan sesuatu yang bahkan lebih sederhana di sini. 92 00:03:57,910 --> 00:04:02,450 Aku akan pergi ke depan dan mulai file ini dengan sintaks samar ini. 93 00:04:02,450 --> 00:04:06,310 Jadi "pengguna, bin, env, untuk lingkungan, php. " 94 00:04:06,310 --> 00:04:10,670 >> Ini hanya satu baris kode yang akan memberitahu sistem operasi saya, 95 00:04:10,670 --> 00:04:13,730 pergi mencari di daerah Anda lingkungan apa pun itu, 96 00:04:13,730 --> 00:04:18,149 dimanapun PHP is-- interpreter-- yang dan pergi ke depan dan menggunakan penerjemah yang 97 00:04:18,149 --> 00:04:20,589 untuk menafsirkan kode berikut. 98 00:04:20,589 --> 00:04:22,760 Sekarang, ini adalah jenis fitur jelek PHP. 99 00:04:22,760 --> 00:04:24,980 Tapi dalam bahasa ini, setiap kali Anda menulis kode PHP, 100 00:04:24,980 --> 00:04:29,200 Anda harus memiliki salah satu dari ini jelek Tag PHP yang membatasi awal 101 00:04:29,200 --> 00:04:32,220 Anda code-- 00:04:37,430 >> Tapi di bawah sini, sekarang saya bisa melakukan sesuatu cukup sederhana, seperti printf halo koma 103 00:04:37,430 --> 00:04:40,922 dunia backslash n dekat kutipan, kurung tutup. 104 00:04:40,922 --> 00:04:42,630 Dan kemudian hanya untuk kebaikan mengukur, aku akan 105 00:04:42,630 --> 00:04:45,380 untuk pergi ke depan dan dekat tag php saya di sini 106 00:04:45,380 --> 00:04:47,390 sehingga semuanya terlihat baik cukup dicetak. 107 00:04:47,390 --> 00:04:50,780 >> Dan segera setelah saya klik Save, gedit cukup sebenarnya cerdas 108 00:04:50,780 --> 00:04:54,620 untuk melihat bahwa garis pertama dan menyadari, oh, Anda sedang menulis kode PHP. 109 00:04:54,620 --> 00:04:56,710 Mari saya sorot sintaks dengan warna 110 00:04:56,710 --> 00:04:58,690 di sini sehingga berdiri keluar sedikit lebih. 111 00:04:58,690 --> 00:05:01,300 Tapi sekarang aku akan pergi ke jendela terminal saya. 112 00:05:01,300 --> 00:05:02,340 Aku akan memperbesar. 113 00:05:02,340 --> 00:05:06,860 >> Program ini disebut "Halo," jadi saya akan melakukan dot slash halo, 114 00:05:06,860 --> 00:05:07,990 tapi izin ditolak. 115 00:05:07,990 --> 00:05:08,490 Dan bash. 116 00:05:08,490 --> 00:05:10,610 Kami benar-benar mendengar tentang itu hal beberapa minggu yang lalu 117 00:05:10,610 --> 00:05:13,140 dalam konteks SHELLSHOCK, salah satu bug. 118 00:05:13,140 --> 00:05:16,240 >> Tapi izin membantah telah kita lihat sebelumnya, mungkin dalam konteks yang berbeda. 119 00:05:16,240 --> 00:05:19,060 Apakah ada yang ingat bagaimana Anda mungkin memperbaiki sesuatu 120 00:05:19,060 --> 00:05:22,100 di mana izin ditolak seperti ini? 121 00:05:22,100 --> 00:05:23,490 Apa perintah, setidaknya? 122 00:05:23,490 --> 00:05:24,159 >> SISWA: chmod. 123 00:05:24,159 --> 00:05:26,700 DAVID J. Malan: Ya, chmod, untuk mengubah modus dari file. 124 00:05:26,700 --> 00:05:30,171 Dan Anda akan mendapatkan semua lebih dulu ini minggu depan dengan masalah berikutnya 125 00:05:30,171 --> 00:05:30,670 ditetapkan. 126 00:05:30,670 --> 00:05:33,211 Tetapi untuk sekarang, aku akan berubah mode tidak dapat dibaca, 127 00:05:33,211 --> 00:05:36,650 tetapi untuk memberikan semua orang executeability hak istimewa, kemampuan 128 00:05:36,650 --> 00:05:37,710 untuk menjalankan file ini. 129 00:05:37,710 --> 00:05:40,360 Dan aku akan menetapkan bahwa untuk file halo. 130 00:05:40,360 --> 00:05:45,150 >> Jika saya lakukan sekarang dot slash halo masukkan, Anda lihat, pada kenyataannya, program saya, hello world. 131 00:05:45,150 --> 00:05:48,760 Dan apa langkah apakah aku jelas melewatkan sama sekali? 132 00:05:48,760 --> 00:05:49,520 Kompilasi. 133 00:05:49,520 --> 00:05:51,680 Jadi aku hanya menjalankan program ini cukup sederhana. 134 00:05:51,680 --> 00:05:55,690 >> Dan ternyata Anda dapat melakukan ini dengan banyak sintaks mengingatkan C. 135 00:05:55,690 --> 00:06:03,400 Biarkan aku pergi ke kode hari ini, yang saya dimasukkan ke dalam direktori vhost saya 136 00:06:03,400 --> 00:06:05,250 di sini, karena alasan nyata kami akan kembali ke. 137 00:06:05,250 --> 00:06:09,350 Dan aku akan masuk ke dalam, katakanlah, kondisi 1. 138 00:06:09,350 --> 00:06:12,450 >> Dan Anda akan melihat di sini, pertama dan terutama, sejumlah besar komentar. 139 00:06:12,450 --> 00:06:15,240 Tapi ini benar-benar penciptaan kembali di PHP 140 00:06:15,240 --> 00:06:18,960 sebuah program yang kita lakukan di minggu satu disebut kondisi 1.c 141 00:06:18,960 --> 00:06:20,690 di mana tujuan dalam kehidupan program ini 142 00:06:20,690 --> 00:06:22,950 tampaknya untuk meminta pengguna untuk integer 143 00:06:22,950 --> 00:06:25,270 dan kemudian melakukan beberapa berbulu Analisis di atasnya dimana 144 00:06:25,270 --> 00:06:29,510 Anda katakan jika itu positif atau negatif atau sama dengan nol. 145 00:06:29,510 --> 00:06:34,220 Dan Aku membawa hal ini hanya karena, kecuali mungkin satu detail kecil, 146 00:06:34,220 --> 00:06:37,150 itu dibedakan begitu jauh dari C. 147 00:06:37,150 --> 00:06:39,930 >> Apa satu karakteristik di sini bahwa mungkin melompat keluar 148 00:06:39,930 --> 00:06:41,410 Anda sebagai sedikit berbeda? 149 00:06:41,410 --> 00:06:42,160 Mungkin dua hal. 150 00:06:42,160 --> 00:06:42,660 Ya? 151 00:06:42,660 --> 00:06:44,070 >> SISWA: Dolar tanda n? 152 00:06:44,070 --> 00:06:44,944 >> DAVID J. Malan: Ya. 153 00:06:44,944 --> 00:06:46,210 Jadi tanda dolar n hadir. 154 00:06:46,210 --> 00:06:48,120 Dan tanda-tanda dolar, sebagai kita akan melihat, akan 155 00:06:48,120 --> 00:06:51,460 menjadi fix untuk awal dari setiap variabel dalam PHP. 156 00:06:51,460 --> 00:06:54,250 Itu baik good good dan bad-- di bahwa itu semacam jelas apa 157 00:06:54,250 --> 00:06:56,797 variabel, buruk dalam bahwa itu Belum hal lain untuk mengetik. 158 00:06:56,797 --> 00:06:58,630 Dan ada satu lagi hal yang kita miliki tidak cukup 159 00:06:58,630 --> 00:07:00,876 terlihat, setidaknya dengan ejaan ini. ya? 160 00:07:00,876 --> 00:07:01,630 >> SISWA: Readline. 161 00:07:01,630 --> 00:07:02,671 >> DAVID J. Malan: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline kita tidak melihat, per se, di C, meskipun terdapat sesuatu 163 00:07:06,550 --> 00:07:09,530 serupa, tapi kami telah menggunakan GetString, dan ini adalah mitranya. 164 00:07:09,530 --> 00:07:12,950 Jadi jika saya pergi ke ini direktori, yang kebetulan, 165 00:07:12,950 --> 00:07:18,030 seperti yang saya akan menjelaskan dalam sedikit di vhost saya direktori dan sumber saya direktori A, 166 00:07:18,030 --> 00:07:22,730 dan aku pergi ke depan dan melakukan dot slash conditions-- whoops-- dot slash 167 00:07:22,730 --> 00:07:26,710 kondisi 1, Anda akan melihat, sekali lagi, izin issue-- sama ditolak. 168 00:07:26,710 --> 00:07:33,610 >> Jadi biarkan aku memperbesar dan melakukan chmod plus x pada kondisi, kondisi slash dot. 169 00:07:33,610 --> 00:07:35,222 Saya ingin integer, silakan, 50. 170 00:07:35,222 --> 00:07:36,930 Dan kita bisa bermain ini permainan sepanjang hari. 171 00:07:36,930 --> 00:07:39,140 Itu akan berperilaku persis seperti yang terjadi pada minggu satu. 172 00:07:39,140 --> 00:07:42,860 >> OK jadi tidak semua yang berbeda, kecuali tidak hanya itu sedikit sedikit sintaks, 173 00:07:42,860 --> 00:07:45,490 tapi di atas, saya lagi memiliki baris ini yang 174 00:07:45,490 --> 00:07:49,760 memungkinkan saya untuk menciptakan sesuatu yang tampak seperti sebuah program C yang disebut halo, 175 00:07:49,760 --> 00:07:51,150 disebut kondisi 1. 176 00:07:51,150 --> 00:07:54,520 Tapi itu bukan 0 dan yang Aku mengeksekusi langsung. 177 00:07:54,520 --> 00:07:57,620 Ini bukan menjalankan ini interpreter yang namanya 178 00:07:57,620 --> 00:07:59,440 kebetulan identik dengan bahasa. 179 00:07:59,440 --> 00:08:04,970 Program ini disebut PHP, dan kode saya di bawah garis satu sedang berlalu ke dalamnya. 180 00:08:04,970 --> 00:08:07,740 >> Kita bisa melakukan hal yang lain cukup sederhana Contoh mengingatkan sesuatu 181 00:08:07,740 --> 00:08:09,240 kami lakukan minggu yang lalu. 182 00:08:09,240 --> 00:08:12,020 Sekali lagi, ini adalah semacam potongan sewenang-wenang kode 183 00:08:12,020 --> 00:08:14,000 yang tampaknya tidak apa ketika Anda menjalankannya? 184 00:08:14,000 --> 00:08:15,625 Apa ini akan mencetak, mungkin? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Jadi pada awalnya on line 16, itu akan mengatakan x sekarang 2, mungkin. 187 00:08:28,250 --> 00:08:30,920 % D adalah sama dengan $ i untuk printf. 188 00:08:30,920 --> 00:08:33,460 Jadi itu cubing, dot, dot, dot, sejalan 17. 189 00:08:33,460 --> 00:08:36,299 Dan kemudian baris 18 muncul untuk memanggil fungsi dadu. 190 00:08:36,299 --> 00:08:37,600 Dan di mana dadu didefinisikan? 191 00:08:37,600 --> 00:08:40,319 >> Yah, sepertinya sejalan 25, sehingga tidak semua yang berbeda. 192 00:08:40,319 --> 00:08:42,610 Aku punya beberapa komentar di atas itu, tetapi untuk sebagian besar, 193 00:08:42,610 --> 00:08:45,370 itu cukup mudah porting atau konversi 194 00:08:45,370 --> 00:08:48,470 dari program C ke versi PHP. 195 00:08:48,470 --> 00:08:52,670 Tapi sekarang ada beberapa perbedaan yang mungkin harus melompat keluar. 196 00:08:52,670 --> 00:08:56,100 Apa lagi yang berbeda tentang bagaimana Anda mungkin menulis program yang sama ini di C? 197 00:08:56,100 --> 00:08:57,900 >> SISWA: [tak terdengar]. 198 00:08:57,900 --> 00:09:00,070 >> DAVID J. Malan: Ada tidak ada prototipe di bagian atas. 199 00:09:00,070 --> 00:09:03,210 Jadi PHP-- dan terus terang, banyak languages-- yang modern 200 00:09:03,210 --> 00:09:06,920 adalah jauh lebih cerdas dan lebih bermanfaat dari C kompiler bahwa Anda 201 00:09:06,920 --> 00:09:09,740 dapat menempatkan fungsi di sini, Anda dapat menempatkan fungsi di sini, 202 00:09:09,740 --> 00:09:12,740 dan penafsir akan untuk melakukan Anda mendukung membaca 203 00:09:12,740 --> 00:09:16,010 seluruh file sebelum memutuskan bahwa beberapa fungsi tersebut tidak ada. 204 00:09:16,010 --> 00:09:17,970 Sehingga perbaikan yang bagus tahun kemudian. 205 00:09:17,970 --> 00:09:22,126 Tapi ada juga sesuatu lain yang berbeda atau tidak ada di sini. 206 00:09:22,126 --> 00:09:22,626 Ya? 207 00:09:22,626 --> 00:09:25,084 >> SISWA: [tak terdengar]. 208 00:09:25,084 --> 00:09:27,750 DAVID J. Malan: Kami tidak perlu mendeklarasikan jenis variabel, 209 00:09:27,750 --> 00:09:31,780 jadi kita akan melihat sebelum panjang yang ada berbagai jenis di PHP, 210 00:09:31,780 --> 00:09:34,970 tetapi Anda tidak perlu menentukan mereka, yang juga adalah baik dan buruk. 211 00:09:34,970 --> 00:09:36,623 Dan ada satu hal yang hilang lainnya. 212 00:09:36,623 --> 00:09:37,430 >> SISWA: Tidak ada perpustakaan. 213 00:09:37,430 --> 00:09:38,630 >> DAVID J. Malan: Tidak ada perpustakaan. 214 00:09:38,630 --> 00:09:39,350 OK, jadi itu bagus. 215 00:09:39,350 --> 00:09:40,540 Kami mendapatkan lebih banyak keluar dari kotak. 216 00:09:40,540 --> 00:09:43,373 Jadi sebenarnya ada lebih banyak hal daripada yang saya pikir berbeda. 217 00:09:43,373 --> 00:09:44,350 Bagaimana cara di belakang? 218 00:09:44,350 --> 00:09:46,032 Apa itu? 219 00:09:46,032 --> 00:09:46,740 Katakan sekali lagi? 220 00:09:46,740 --> 00:09:47,960 >> SISWA: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> DAVID J. Malan: Tidak ada pointer. 222 00:09:49,270 --> 00:09:51,280 OK, setidaknya dalam contoh ini, tidak ada. 223 00:09:51,280 --> 00:09:52,070 Itu adil. 224 00:09:52,070 --> 00:09:55,090 Jadi tidak ada pointer di PHP sebenarnya secara umum. 225 00:09:55,090 --> 00:09:58,730 Ada sesuatu yang disebut referensi, tapi kita tidak akan menghabiskan terlalu banyak waktu di sana. 226 00:09:58,730 --> 00:09:59,520 Dan apa lagi? 227 00:09:59,520 --> 00:10:00,185 >> SISWA: Main. 228 00:10:00,185 --> 00:10:01,060 DAVID J. Malan: Main. 229 00:10:01,060 --> 00:10:02,768 Jadi ini adalah masalah besar yang Aku sedang berpikir tentang. 230 00:10:02,768 --> 00:10:04,660 Perhatikan tidak ada pintu masuk utama. 231 00:10:04,660 --> 00:10:06,525 Anda hanya mulai menulis kode Anda. 232 00:10:06,525 --> 00:10:08,400 Dan ini sebenarnya akan menguntungkan 233 00:10:08,400 --> 00:10:10,560 ketika kita transisi sebentar untuk benar-benar menggunakan 234 00:10:10,560 --> 00:10:13,980 bahasa yang sama ini untuk web berbasis pemrograman, yang kami 235 00:10:13,980 --> 00:10:16,580 tidak ingin hanya memiliki satu titik masuk. 236 00:10:16,580 --> 00:10:19,980 Kita mungkin ingin memiliki banyak URL, sekelompok file yang berbeda 237 00:10:19,980 --> 00:10:22,930 semua mengambil di input pengguna dan menghasilkan output. 238 00:10:22,930 --> 00:10:27,130 >> Tapi di sini adalah sangat menyedihkan contoh yang saya berjanji terakhir kali, 239 00:10:27,130 --> 00:10:30,130 yaitu dalam folder ini di sini, salah ejaan. 240 00:10:30,130 --> 00:10:33,680 Jadi dalam file ejaan ini, yang kami tidak akan menghabiskan terlalu banyak waktu, ada 241 00:10:33,680 --> 00:10:37,870 dasarnya porting-- P-O-R-T. Hanya saja kata yang diberikan ketika, katakanlah, 242 00:10:37,870 --> 00:10:40,800 Anda mengkonversi dari satu bahasa yang lain secara manual biasanya. 243 00:10:40,800 --> 00:10:45,680 >> Ini adalah port dari PC versi ejaan dari PSET 5. 244 00:10:45,680 --> 00:10:48,856 Dan saya pada dasarnya mencoba untuk mengkonversi baris demi baris sedekat mungkin. 245 00:10:48,856 --> 00:10:51,730 Jadi jika Anda suka hal semacam ini, itu benar-benar bernilai di beberapa titik 246 00:10:51,730 --> 00:10:54,229 menarik mereka berdua side by sisi dan melihat apa yang sama 247 00:10:54,229 --> 00:10:55,230 dan apa yang berbeda. 248 00:10:55,230 --> 00:10:57,510 Tapi mereka pretty darn serupa. 249 00:10:57,510 --> 00:11:00,110 Jika Anda ingat apa ejaan bahkan tampak seperti, 250 00:11:00,110 --> 00:11:02,110 meskipun Anda tidak harus mengubah file ini, 251 00:11:02,110 --> 00:11:04,860 itu sangat mirip struktural dengan hanya beberapa 252 00:11:04,860 --> 00:11:06,200 perubahan di sana-sini. 253 00:11:06,200 --> 00:11:10,140 >> Jadi ini hanya untuk mengatakan bahwa itu cukup mudah untuk mengkonversi ejaan 254 00:11:10,140 --> 00:11:12,000 dari C ke PHP. 255 00:11:12,000 --> 00:11:15,390 Tapi dalam kamus, ada sesuatu yang lebih menarik. 256 00:11:15,390 --> 00:11:19,270 Biarkan aku pergi ke depan dan menciptakan File dictionary.php saya sendiri. 257 00:11:19,270 --> 00:11:24,010 Jadi sedikit berbeda dalam bahwa kita akan menyebutnya php bukan c. 258 00:11:24,010 --> 00:11:26,980 Karena ini adalah file PHP, saya do-- sedikit annoyingly-- memiliki 259 00:11:26,980 --> 00:11:30,132 untuk memulai file dengan tag php seperti itu. 260 00:11:30,132 --> 00:11:32,340 Dan aku akan pergi ke depan dan mendefinisikan beberapa fungsi. 261 00:11:32,340 --> 00:11:35,770 Fungsi yang disebut cek, yaitu akan mengambil dalam kata seperti sebelumnya. 262 00:11:35,770 --> 00:11:37,520 Tetapi argumen ini akan memiliki satu dolar 263 00:11:37,520 --> 00:11:39,840 menandatangani karena kita, sekali lagi, menggunakan PHP. 264 00:11:39,840 --> 00:11:42,350 Fungsi lain dari dictionary.c adalah beban 265 00:11:42,350 --> 00:11:47,120 dan butuh atas nama kamus, jadi saya akan mendapatkan bahwa fungsi siap untuk pergi. 266 00:11:47,120 --> 00:11:50,920 >> Satu lagi di dictionary.c adalah apa? 267 00:11:50,920 --> 00:11:54,580 Ukuran adalah salah satu yang terbaik, di Setidaknya jika Anda terus beberapa variabel sekitar. 268 00:11:54,580 --> 00:11:57,830 sehingga ukuran hanya harus mengembalikan variabel. 269 00:11:57,830 --> 00:11:59,090 Dan kemudian ada membongkar. 270 00:11:59,090 --> 00:12:02,830 >> Jadi ada empat ini fungsi dalam masalah set 5 271 00:12:02,830 --> 00:12:06,770 yang Anda butuhkan untuk melaksanakan dengan beberapa struktur data atau struktur. 272 00:12:06,770 --> 00:12:10,170 Jadi saya berjanji bahwa dalam PHP, kita dapat mendeklarasikan 273 00:12:10,170 --> 00:12:14,490 tabel hash, misalnya, semua yang lebih mudah. 274 00:12:14,490 --> 00:12:17,377 Bahkan, jika saya ingin tabel hash, Aku hanya akan pergi seperti itu 275 00:12:17,377 --> 00:12:18,460 dan ada tabel hash saya. 276 00:12:18,460 --> 00:12:21,555 Dan itulah catatan, menyedihkan, yang kami tinggalkan pada terakhir kali. 277 00:12:21,555 --> 00:12:23,930 Dan kau tahu apa, jika saya ingin variabel untuk ukuran, baik, 278 00:12:23,930 --> 00:12:25,867 yang satu ini tidak semua yang berbeda dari C, 279 00:12:25,867 --> 00:12:27,450 tapi aku akan pergi ke depan dan melakukan itu. 280 00:12:27,450 --> 00:12:28,630 Dan melihat ada jenis data. 281 00:12:28,630 --> 00:12:31,180 Dan aku akan kembali nanti dan benar-benar menambahkan beberapa komentar di sini. 282 00:12:31,180 --> 00:12:32,480 Tapi bagaimana dengan beban? 283 00:12:32,480 --> 00:12:35,780 >> Jika tanda dolar kamus adalah nama file saya 284 00:12:35,780 --> 00:12:39,600 dan aku benar-benar ingin memuat kata ke dalam tabel ini sekarang, 285 00:12:39,600 --> 00:12:42,360 Aku benar-benar bisa melakukan sesuatu yang cukup sederhana. 286 00:12:42,360 --> 00:12:44,880 Satu-- dan ini minorly annoying-- di PHP, 287 00:12:44,880 --> 00:12:47,710 Anda harus menentukan dalam fungsi jika Anda 288 00:12:47,710 --> 00:12:51,060 ingin mengakses beberapa dunia variabel yang didefinisikan di luar. 289 00:12:51,060 --> 00:12:53,530 >> Tapi itu tidak terlalu menarik sekarang. 290 00:12:53,530 --> 00:12:57,920 Apa yang lebih menarik adalah ini untuk masing-masing membangun yang saya sebutkan terakhir kali. 291 00:12:57,920 --> 00:13:01,880 Dan ternyata PHP memiliki fungsi disebut berkas yang tujuannya dalam hidup 292 00:13:01,880 --> 00:13:05,550 adalah untuk membuka file dan membaca di semua lini ke dalam sebuah array 293 00:13:05,550 --> 00:13:06,840 dan tangan mereka kembali ke. 294 00:13:06,840 --> 00:13:12,170 >> Yang mengatakan saya bisa melakukan kamus sehingga yang sekarang efektif ketika saya memanggil file, 295 00:13:12,170 --> 00:13:15,472 ini akan tangan saya kembali array kata-kata dari file. 296 00:13:15,472 --> 00:13:16,430 Ini tidak semua yang baik itu. 297 00:13:16,430 --> 00:13:20,130 Ini masih akan menjadi garis kata-kata, sesuatu yang linear. 298 00:13:20,130 --> 00:13:23,880 Tapi aku bisa pergi ke depan dan iterate lebih dari setiap kata-kata ini menggunakan 299 00:13:23,880 --> 00:13:25,710 sintaks yang kita lihat sebentar terakhir kali. 300 00:13:25,710 --> 00:13:27,940 Dan Anda akan melihat lebih di PSET mendatang. 301 00:13:27,940 --> 00:13:32,070 >> Tapi sekarang aku punya loop iterasi lebih dari setiap kata dalam kamus. 302 00:13:32,070 --> 00:13:36,100 Dan pada setiap iterasi, ingat aku memanggil kata saat ini "kata." 303 00:13:36,100 --> 00:13:39,790 Dan semua itu akan dibawa ke menempatkan kata dalam kamus 304 00:13:39,790 --> 00:13:43,530 akan menjadi kata menebak "benar." 305 00:13:43,530 --> 00:13:44,740 Itulah fungsi insert saya. 306 00:13:44,740 --> 00:13:46,661 Itulah fungsi beban saya untuk kamus saya. 307 00:13:46,661 --> 00:13:49,410 Sekarang sedikit menipu karena, Anda tahu apa, sebenarnya ada 308 00:13:49,410 --> 00:13:52,920 backslash n pada akhir dari kata-kata bahwa saya mungkin harus menyingkirkan, 309 00:13:52,920 --> 00:13:56,380 tapi itu tidak masalah karena PHP memiliki fungsi yang disebut chop yang secara harfiah 310 00:13:56,380 --> 00:13:58,480 daging dari salah satu karakter di akhir. 311 00:13:58,480 --> 00:13:59,400 Jadi tidak ada masalah di sana. 312 00:13:59,400 --> 00:14:02,199 Kami telah pergi ke depan dan benar-benar disingkat bahwa hanya ini. 313 00:14:02,199 --> 00:14:05,240 Dan sekarang aku mungkin harus melacak ukuran, jadi mari kita setidaknya melakukan this-- 314 00:14:05,240 --> 00:14:05,835 Ukuran ++. 315 00:14:05,835 --> 00:14:07,339 Aku bisa melakukannya seperti sebelumnya. 316 00:14:07,339 --> 00:14:10,380 Dan maka ini mungkin akan bekerja dengan baik, sehingga kita kembali benar. 317 00:14:10,380 --> 00:14:10,930 Selesai. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Tertawa] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J. Malan: OK. 321 00:14:14,420 --> 00:14:16,628 Kita akan melakukannya lagi dengan PSET berikutnya, juga. 322 00:14:16,628 --> 00:14:18,730 Jadi apa tentang ukuran? 323 00:14:18,730 --> 00:14:22,080 Nah, yang satu ini mudah-mudahan adalah tentang seperti yang Anda harapkan terakhir kali, 324 00:14:22,080 --> 00:14:24,460 meskipun saya harus melakukan Hal global yang bodoh ini. 325 00:14:24,460 --> 00:14:26,610 Ini hanya sebuah artefak dari desain bahasa ini. 326 00:14:26,610 --> 00:14:28,450 >> Tapi cek sedikit lebih menarik. 327 00:14:28,450 --> 00:14:31,420 Jadi jika aku melewati dalam dolar tanda kata, saya pertama kali 328 00:14:31,420 --> 00:14:34,060 ingin memiliki akses ke bahwa tabel variabel global. 329 00:14:34,060 --> 00:14:36,700 Dan sekarang jika saya ingin memeriksa apakah kata ada, 330 00:14:36,700 --> 00:14:44,350 Aku hanya bisa mengatakan jika memang benar bahwa berikut ini diatur dalam tabel, 331 00:14:44,350 --> 00:14:49,957 kemudian pergi ke depan dan kembali benar; lain, kembali palsu. 332 00:14:49,957 --> 00:14:51,180 Selesai. 333 00:14:51,180 --> 00:14:52,440 Sisi lain dari PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> Baiklah, jadi sekali lagi, aku memotong beberapa sudut. 335 00:14:54,540 --> 00:14:56,831 Dalam keadilan, saya mungkin harus menghabiskan beberapa detik lagi 336 00:14:56,831 --> 00:14:58,300 pada implementasi ini. 337 00:14:58,300 --> 00:15:01,860 Dan aku mungkin tidak harus mengejek semua jam Anda memakai PSET begitu banyak. 338 00:15:01,860 --> 00:15:04,045 Jadi strtolower adalah fungsi. 339 00:15:04,045 --> 00:15:06,670 Sesuatu eksistensialis serupa di C, setidaknya untuk karakter, 340 00:15:06,670 --> 00:15:08,560 namun PHP punya versi string seluruh. 341 00:15:08,560 --> 00:15:11,226 >> Itu akan memaksa segala sesuatu huruf kecil, yang sebagian dari Anda 342 00:15:11,226 --> 00:15:14,944 mungkin telah dilakukan canonicalize apa Anda meletakkan dalam kamus Anda. 343 00:15:14,944 --> 00:15:16,360 Dan sekarang Anda dapat melakukan ini di C juga. 344 00:15:16,360 --> 00:15:17,780 Hal ini tidak ada hubungannya dengan PHP. 345 00:15:17,780 --> 00:15:20,260 >> Tetapi setiap kali Anda memiliki kondisi Boolean, 346 00:15:20,260 --> 00:15:22,680 seperti sesuatu on line 10 di sana, yang hanya 347 00:15:22,680 --> 00:15:27,145 akan mengevaluasi dengan benar atau palsu, dan jika yang lain jelas 348 00:15:27,145 --> 00:15:33,620 adalah kembali benar atau salah, aku bisa hanya benar-benar membuat seksi ini 349 00:15:33,620 --> 00:15:38,360 dan hanya melakukan sesuatu seperti ini. 350 00:15:38,360 --> 00:15:40,500 Sehingga ada fungsi saya cek. 351 00:15:40,500 --> 00:15:42,560 Benar, jika Boolean yang mengembalikan benar atau salah, 352 00:15:42,560 --> 00:15:44,630 mari kita kembalikan langsung. 353 00:15:44,630 --> 00:15:47,340 >> Dan ada beberapa tweak lainnya Aku bisa membuat di sana-sini. 354 00:15:47,340 --> 00:15:51,380 Membongkar Load--, by the way, itu selesai. 355 00:15:51,380 --> 00:15:52,850 Tidak ada hubungannya di sana. 356 00:15:52,850 --> 00:15:55,840 Karena semua memori di PHP dan banyak bahasa lainnya 357 00:15:55,840 --> 00:15:57,570 sebenarnya dikelola untuk Anda. 358 00:15:57,570 --> 00:16:00,330 Jadi sedangkan di C, seperti Anda telah belajar menyakitkan, 359 00:16:00,330 --> 00:16:04,700 apa pun yang Anda malloc atau calloc atau realloc, Anda harus membebaskan diri. 360 00:16:04,700 --> 00:16:08,770 Apa pun yang Anda fopen, Anda harus fclose, sehingga sumber daya yang pada akhirnya dibebaskan 361 00:16:08,770 --> 00:16:11,690 dan alat-alat seperti Valgrind tidak melihat dan tidak mengeluh, 362 00:16:11,690 --> 00:16:13,570 yang merupakan hal yang baik untuk berjalan pada mereka. 363 00:16:13,570 --> 00:16:16,190 >> Tapi tentunya, harus ada ada beberapa menangkap, kan? 364 00:16:16,190 --> 00:16:19,400 Jika tidak, kita seperti terbuang sejumlah besar minggu. 365 00:16:19,400 --> 00:16:23,270 Jadi ada sejumlah alasan mengapa kita semacam mengambil lintasan ini, 366 00:16:23,270 --> 00:16:24,440 tapi ada trade-off. 367 00:16:24,440 --> 00:16:25,820 Benar, ini telah menjadi tematik. 368 00:16:25,820 --> 00:16:29,690 >> Jadi apa yang mungkin trade-off di sini bergerak, dari C ke PHP? 369 00:16:29,690 --> 00:16:33,250 Terasa seperti semua menang sejauh selain sedikit keburukan sini atau di sana. 370 00:16:33,250 --> 00:16:34,040 Ya. 371 00:16:34,040 --> 00:16:34,700 Apa itu? 372 00:16:34,700 --> 00:16:36,064 >> SISWA: [tak terdengar] memori. 373 00:16:36,064 --> 00:16:36,980 DAVID J. Malan: Kecepatan. 374 00:16:36,980 --> 00:16:37,479 OK. 375 00:16:37,479 --> 00:16:40,720 Nah, kecepatan saya cukup cepat. 376 00:16:40,720 --> 00:16:42,020 Benar? 377 00:16:42,020 --> 00:16:44,320 Tapi kecepatan eksekusi program? 378 00:16:44,320 --> 00:16:45,580 OK, jadi itu adalah titik adil. 379 00:16:45,580 --> 00:16:50,930 >> Jadi seperti itu akan terjadi, aku di muka cued up kedua solusi mencoba saya, satu 380 00:16:50,930 --> 00:16:53,510 Aku punya di papan besar adalah solusi-coba berbasis, 381 00:16:53,510 --> 00:16:55,510 dan saya memiliki dalam direktori ini di sini. 382 00:16:55,510 --> 00:16:58,510 Jadi saya sebentar lagi, aku bisa pergi ke depan dan menjalankan ini pada Alkitab King James, 383 00:16:58,510 --> 00:16:59,657 menekan Enter. 384 00:16:59,657 --> 00:17:01,990 Dan ini mudah-mudahan benar implementasi pada akhirnya, 385 00:17:01,990 --> 00:17:05,109 memberi saya waktu total 0,38 detik untuk itu 386 00:17:05,109 --> 00:17:07,270 salah satu contoh agak sewenang-wenang. 387 00:17:07,270 --> 00:17:09,270 >> Dan jika saya sekarang pergi ke ini jendela terminal kedua 388 00:17:09,270 --> 00:17:14,569 di sini di mana saya pertama kali membuka gedit, biarkan aku pergi ke code-- hari ini yang, sekali lagi, 389 00:17:14,569 --> 00:17:19,650 dalam direktori ini di sini-dan biarkan aku pergi ke depan dan menjalankan ejaan. 390 00:17:19,650 --> 00:17:23,470 Jadi hanya harus jelas, ini adalah versi PHP. 391 00:17:23,470 --> 00:17:25,170 Aku hanya menunjukkan bagian atas sini. 392 00:17:25,170 --> 00:17:32,020 >> Jadi jika saya melakukan ejaan dari tilde CS50 PSET 5 teks, King James, masukkan. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Ini masih lebih cepat daripada menulis di C, tetapi total waktu 395 00:17:43,050 --> 00:17:47,650 adalah, pemberitahuan, 0.93, sedangkan saya Implementasi berbasis C adalah 0.38. 396 00:17:47,650 --> 00:17:49,110 Jadi itu adalah perbedaan yang tidak sepele. 397 00:17:49,110 --> 00:17:51,100 >> Dan ini hanya pada satu file. 398 00:17:51,100 --> 00:17:53,480 Jika Anda adalah untuk menjalankan dua program versus papan besar 399 00:17:53,480 --> 00:17:56,510 dan memiliki sejumlah besar input diuji, ini pasti akan bertambah. 400 00:17:56,510 --> 00:18:00,310 Dan jika kita memiliki set data yang lebih besar, ini juga akan menambahkan semua lebih. 401 00:18:00,310 --> 00:18:04,820 Jadi ya, membayar harga tertentu kecepatan memang terjadi. 402 00:18:04,820 --> 00:18:05,470 Apa lagi? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Ya? 405 00:18:08,860 --> 00:18:10,340 >> STUDENT: Jumlah penggunaan RAM. 406 00:18:10,340 --> 00:18:11,756 >> DAVID J. Malan: Jumlah penggunaan RAM. 407 00:18:11,756 --> 00:18:15,380 Jadi saya tidak memberikan satu detik berpikir saat menulis PHP ini 408 00:18:15,380 --> 00:18:17,300 Versi untuk berapa banyak memori saya gunakan. 409 00:18:17,300 --> 00:18:22,080 Aku benar-benar menunda bahwa untuk PHP itu sendiri dan siapa pun yang menulis program tersebut. 410 00:18:22,080 --> 00:18:24,500 Dan itu mungkin OK, tetapi jika aku benar-benar benar-benar 411 00:18:24,500 --> 00:18:28,420 peduli meremas sebanyak kinerja dari program saya atau dari website saya 412 00:18:28,420 --> 00:18:31,150 atau keluar dari alat apa pun Aku sedang membangun, mungkin 413 00:18:31,150 --> 00:18:33,310 PHP, memang, bukan bahasa yang tepat. 414 00:18:33,310 --> 00:18:36,330 >> Dan pada kenyataannya, itu sebabnya, untuk Misalnya, banyak web servers-- 415 00:18:36,330 --> 00:18:38,980 program aktual yang melayani sampai web content-- 416 00:18:38,980 --> 00:18:41,810 tidak ditulis dalam PHP atau Python atau Ruby. 417 00:18:41,810 --> 00:18:44,630 Mereka ditulis, seperti Anda sekarang akan melakukan dengan PSEt 6, 418 00:18:44,630 --> 00:18:48,120 di C sehingga Anda dapat menekan setiap sedikit kinerja dari itu 419 00:18:48,120 --> 00:18:50,780 dan benar-benar berolahraga kontrol fine-grain atas apa 420 00:18:50,780 --> 00:18:52,980 terjadi di bawah hood, bukan hanya mengambil 421 00:18:52,980 --> 00:18:54,890 untuk diberikan beberapa tinggi struktur data tingkat. 422 00:18:54,890 --> 00:18:58,071 >> Pertimbangkan, setelah semua, siapa pun di PHP diimplementasikan 423 00:18:58,071 --> 00:19:00,070 bahwa gagasan hash table-- itu sebenarnya lebih 424 00:19:00,070 --> 00:19:04,260 benar disebut array-- asosiatif apakah ia tahu apa jenis 425 00:19:04,260 --> 00:19:07,090 input Anda akan menjadi menempatkan ke dalam struktur? 426 00:19:07,090 --> 00:19:08,260 Jadi jelas tidak, kan? 427 00:19:08,260 --> 00:19:10,340 Ini adalah alat generik dalam toolkit yang 428 00:19:10,340 --> 00:19:13,430 diberikan kepada siapa saja yang ingin untuk menggunakannya, dan so pasti itu 429 00:19:13,430 --> 00:19:17,680 tidak dapat dioptimalkan pada akhirnya untuk apa yang ingin Anda lakukan. 430 00:19:17,680 --> 00:19:21,180 >> Jadi waktu pengembangan trade-offs-- mungkin berbeda, kinerja mungkin berbeda, 431 00:19:21,180 --> 00:19:23,120 kompleksitas atau penggunaan memori mungkin berbeda. 432 00:19:23,120 --> 00:19:24,820 Dan jadi apa yang Anda akan menemukan semakin adalah bahwa ada 433 00:19:24,820 --> 00:19:26,570 akan berbeda alat untuk perdagangan. 434 00:19:26,570 --> 00:19:31,160 Dan pada kenyataannya untuk sebagian super tugas akhir orang di kelas ini, 435 00:19:31,160 --> 00:19:34,360 percaya atau tidak, C tidak akan menjadi bahasa yang tepat untuk digunakan. 436 00:19:34,360 --> 00:19:37,880 >> Dan pada kenyataannya, salah satu takeaways akhirnya untuk setiap kelas seperti ini 437 00:19:37,880 --> 00:19:40,510 adalah untuk membuat Anda berpikir tentang, baik, apa yang harus Anda melepas 438 00:19:40,510 --> 00:19:42,710 rak bila Anda ingin untuk memecahkan beberapa masalah. 439 00:19:42,710 --> 00:19:46,720 Dan memang, kita akan menyeberangi jembatan ini bahkan lebih seperti yang kita lihat lebih banyak bahasa 440 00:19:46,720 --> 00:19:47,920 bahkan di luar hari ini. 441 00:19:47,920 --> 00:19:50,530 >> Jadi mari kita transisi sekarang untuk mungkin konteks yang lebih familiar 442 00:19:50,530 --> 00:19:52,480 untuk menggunakan bahasa seperti PHP. 443 00:19:52,480 --> 00:19:56,720 Ini agak umum untuk menggunakan di baris perintah, menulis skrip 444 00:19:56,720 --> 00:19:59,050 seperti yang kulakukan, tapi itu jauh, jauh lebih umum. 445 00:19:59,050 --> 00:20:02,350 Dan itu dimaksudkan untuk digunakan dalam bentuk file yang biasanya berakhir 446 00:20:02,350 --> 00:20:05,060 di .php-- tapi itu bukan prerequisite-- 447 00:20:05,060 --> 00:20:07,990 bahwa mereka menghasilkan konten web. 448 00:20:07,990 --> 00:20:11,310 >> Jadi biarkan aku pergi ke depan dan membuka beberapa contoh saya dipersiapkan sebelumnya. 449 00:20:11,310 --> 00:20:15,100 Dan ini sebenarnya semacam benar cerita dalam bahwa salah satu hal pertama 450 00:20:15,100 --> 00:20:18,200 Yang pernah saya lakukan sendiri setelah menyelesaikan CS50 dan mungkin, saya pikir, 451 00:20:18,200 --> 00:20:21,350 CS51 tahun lalu adalah saya teman sekamar dan saya membantu 452 00:20:21,350 --> 00:20:24,320 untuk menjalankan intramural mahasiswa Program olahraga, yang, pada saat itu, 453 00:20:24,320 --> 00:20:28,610 telah mahasiswa mendaftar untuk berbagai olahraga dengan mengisi secarik kertas, 454 00:20:28,610 --> 00:20:31,800 seperti yang disebut, berjalan melintasi halaman ke Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 dan menjatuhkannya di beberapa proctor itu penurunan pintu. 456 00:20:34,030 --> 00:20:37,210 Dan kemudian ia akan pergi melalui mereka dan kemudian benar-benar email kami secara manual 457 00:20:37,210 --> 00:20:39,140 bahwa kami terdaftar untuk beberapa olahraga. 458 00:20:39,140 --> 00:20:41,166 >> Jadi jelas, kesempatan untuk perbaikan. 459 00:20:41,166 --> 00:20:44,040 Hari-hari ini, Anda dapat mematikan hanya Google Forms, tetapi kembali pada hari, 460 00:20:44,040 --> 00:20:46,914 kita harus benar-benar mencapai for-- ini bahkan tidak selama itu ago-- mencapai 461 00:20:46,914 --> 00:20:49,410 untuk pemrograman yang bahasa yang tidak PHP. 462 00:20:49,410 --> 00:20:51,200 Pada saat itu, itu sesuatu yang disebut Perl, 463 00:20:51,200 --> 00:20:52,890 yang telah keluar dari mode sejak. 464 00:20:52,890 --> 00:20:54,160 Tetapi gagasan adalah sama. 465 00:20:54,160 --> 00:20:58,940 >> Dan saya pada dasarnya duduk untuk mencoba ke port pergi versi Perl PHP, 466 00:20:58,940 --> 00:21:03,710 tetapi dalam disclaimer penuh, tidak memberikan setiap berpikir untuk estetika dulu. 467 00:21:03,710 --> 00:21:04,960 Jadi di sini adalah halaman web. 468 00:21:04,960 --> 00:21:05,670 Ini adalah file. 469 00:21:05,670 --> 00:21:09,470 Jika saya memperbesar, yang rupanya disebut froshim0.php 470 00:21:09,470 --> 00:21:12,060 hanya karena pertama kami contoh dalam seri ini. 471 00:21:12,060 --> 00:21:15,970 Dan melihat bahwa ia memiliki apa yang tampak menjadi bentuk HTML sangat jelek, 472 00:21:15,970 --> 00:21:18,680 tapi bentuk menarik karena memungkinkan 473 00:21:18,680 --> 00:21:21,910 saya untuk memberikan masukan pengguna ke browser. 474 00:21:21,910 --> 00:21:27,730 >> Sekarang terakhir kali ketika kita memiliki bentuk, untuk siapakah kami sampaikan parameter query kita, 475 00:21:27,730 --> 00:21:30,450 parameter antrian seperti yang disebut? 476 00:21:30,450 --> 00:21:31,330 Jadi untuk Google, kan? 477 00:21:31,330 --> 00:21:34,090 Kami benar-benar punted pada gagasan melakukan apapun dengan masukan itu. 478 00:21:34,090 --> 00:21:36,160 >> Tapi hari ini, kita mulai memproduksi output. 479 00:21:36,160 --> 00:21:39,420 Dan perilaku aku akan melihat di sini awalnya sangat sepele. 480 00:21:39,420 --> 00:21:42,980 David, aku akan memeriksa off jender di sini, katakan Matthews sini. 481 00:21:42,980 --> 00:21:43,800 Aku tidak akan menjadi kapten. 482 00:21:43,800 --> 00:21:45,410 Aku akan klik Daftar. 483 00:21:45,410 --> 00:21:50,720 Dan perhatikan bahwa URL memiliki berubah untuk mendaftar-0.php, 484 00:21:50,720 --> 00:21:52,310 dan kemudian ada teks ini jelek di sini. 485 00:21:52,310 --> 00:21:54,460 Aku tidak memikirkan format ini. 486 00:21:54,460 --> 00:21:59,900 >> Tapi apa yang menarik adalah bahwa tiga Nilai-nilai itu tampaknya berlalu dalam. 487 00:21:59,900 --> 00:22:02,960 Ini adalah semacam PHP dari setara dengan printf-- 488 00:22:02,960 --> 00:22:06,330 kita akan melihat apa itu benar-benar disebut dalam bit-- yang hanya mencetak 489 00:22:06,330 --> 00:22:08,300 apa yang Anda berlalu ke dalamnya. 490 00:22:08,300 --> 00:22:11,414 Jadi ini menunjukkan bahwa bentuk yang memiliki setidaknya tiga bidang itu, 491 00:22:11,414 --> 00:22:12,580 dan Anda melihat saya mengetikkannya di. 492 00:22:12,580 --> 00:22:15,739 Salah satunya adalah nama saya, salah satu adalah jender, salah satu adalah asrama. 493 00:22:15,739 --> 00:22:18,780 Dan kapten bahkan tidak dikirim ke server karena saya tidak memeriksa itu. 494 00:22:18,780 --> 00:22:22,150 >> Jadi ini adalah untuk mengatakan tampaknya, ketika Anda mengirimkan hal-hal di web, 495 00:22:22,150 --> 00:22:26,830 tidak hanya melakukan URL kadang-kadang change-- kadang-kadang tidak. 496 00:22:26,830 --> 00:22:30,330 Bahkan, nama file berubah, tapi apa yang absen dari URL 497 00:22:30,330 --> 00:22:32,861 bahwa kita memang melihat terakhir kali dengan Google. 498 00:22:32,861 --> 00:22:33,360 Ya? 499 00:22:33,360 --> 00:22:34,380 >> SISWA: Tidak ada string kueri 500 00:22:34,380 --> 00:22:35,220 >> DAVID J. Malan: Tidak ada string kueri. 501 00:22:35,220 --> 00:22:37,270 Tidak ada tanda tanya sesuatu. 502 00:22:37,270 --> 00:22:40,050 Tidak ada tanda tanya q sama kucing, seperti yang kita lakukan terakhir kali. 503 00:22:40,050 --> 00:22:42,170 Dan pasti ada tidak ada Nama tanda tanya sama 504 00:22:42,170 --> 00:22:46,310 David atau asrama sama Matthews, jadi di mana adalah bahwa semua akan? 505 00:22:46,310 --> 00:22:51,290 >> Nah, biarkan aku kembali ke gedit sini dan membuka yang pertama dari file-file 506 00:22:51,290 --> 00:22:57,020 di vhost saya, host lokal, masyarakat direktori di sini dan pergi ke froshim0. 507 00:22:57,020 --> 00:23:02,060 Jadi ternyata bahwa hampir semua halaman ini hanya HTML. 508 00:23:02,060 --> 00:23:05,410 Dan ini mungkin asing bagi Anda, tetapi segera akan lebih lagi dengan PSET 6 509 00:23:05,410 --> 00:23:07,370 dan PSET 7 dan PSET 8. 510 00:23:07,370 --> 00:23:09,160 Tapi ini hanya sebuah halaman HTML. 511 00:23:09,160 --> 00:23:12,400 >> Dan hal-hal yang menarik tampaknya di sini. 512 00:23:12,400 --> 00:23:16,290 Sebuah tag form yang atribut tindakan memiliki nilai register 0. 513 00:23:16,290 --> 00:23:18,890 Itu sebabnya ketika saya serahkan ini, ia pergi ke file tersebut. 514 00:23:18,890 --> 00:23:20,620 Namun metode adalah posting today-- berbeda. 515 00:23:20,620 --> 00:23:23,120 Jadi ternyata ada yang setidaknya dua metode di web digunakan 516 00:23:23,120 --> 00:23:24,911 untuk mengirim informasi dari browser ke server. 517 00:23:24,911 --> 00:23:25,980 Dapatkan menempatkan dalam URL. 518 00:23:25,980 --> 00:23:27,950 Posting menempatkan di tempat lain. 519 00:23:27,950 --> 00:23:30,570 Dan kapan dan mengapa mungkin Anda benar-benar ingin website 520 00:23:30,570 --> 00:23:34,110 menggunakan pos maka sebagai gantinya dari mendapatkan, hanya intuitif? 521 00:23:34,110 --> 00:23:37,080 Setiap situs web. 522 00:23:37,080 --> 00:23:42,010 Jenis data harus dilalui hanya dengan kesimpulan sekarang via pos sebagai lawan 523 00:23:42,010 --> 00:23:45,184 untuk mendapatkan, jika kita telah melihat dua perbedaan? 524 00:23:45,184 --> 00:23:46,350 SISWA: [tak terdengar] aman. 525 00:23:46,350 --> 00:23:47,790 DAVID J. Malan: Jika Anda ingin sesuatu yang harus aman. 526 00:23:47,790 --> 00:23:50,360 Jadi Anda mungkin mengetik password ke sebuah situs web, kartu kredit 527 00:23:50,360 --> 00:23:53,030 ke sebuah situs web akan jenis ini suboptimal 528 00:23:53,030 --> 00:23:56,220 jika browser menempatkan bahwa nilai dalam URL. 529 00:23:56,220 --> 00:23:57,680 Mengapa? 530 00:23:57,680 --> 00:24:00,059 Anda melihatnya, yang tidak tampaknya seperti masalah besar, 531 00:24:00,059 --> 00:24:03,350 tapi kemungkinan besar Anda cukup sering berjalan jauh dari komputer komputer atau penggunaan Anda 532 00:24:03,350 --> 00:24:05,310 laboratorium, dan sehingga seseorang lain atau bahkan teman sekamar 533 00:24:05,310 --> 00:24:08,220 bisa dengan mudah berjalan dan melihat bahwa informasi pribadi. 534 00:24:08,220 --> 00:24:10,220 Ketika Anda mengirim email melalui web, Anda mungkin 535 00:24:10,220 --> 00:24:12,350 tidak ingin bahwa data akhir di URL juga. 536 00:24:12,350 --> 00:24:15,266 Dan jadi ada sejumlah alasan mengapa kita mungkin ingin taruh di sini. 537 00:24:15,266 --> 00:24:18,610 Bahkan dan kanan photos--, aku tidak bisa cukup bayangkan bagaimana Anda akan mengambil grafis, 538 00:24:18,610 --> 00:24:21,480 seperti JPEG, dan memasukkannya ke dalam URL. 539 00:24:21,480 --> 00:24:22,330 Anda bisa melakukannya. 540 00:24:22,330 --> 00:24:25,840 Ada cara pengkodean itu, tapi itu tidak langsung seperti itu. 541 00:24:25,840 --> 00:24:29,030 >> Jadi daftarlah 0 sebenarnya sangat underwhelming. 542 00:24:29,030 --> 00:24:31,610 Semua itu mengatakan benar adalah ini. 543 00:24:31,610 --> 00:24:35,910 Ia akan mencetak dalam beberapa HTML tag berikut. 544 00:24:35,910 --> 00:24:38,640 Aku punya tag PHP di sini bersarang dalam pra tag. 545 00:24:38,640 --> 00:24:42,300 "Pre" hanya berarti teks pra-diformat, mono-spasi, seperti mesin ketik. 546 00:24:42,300 --> 00:24:44,836 >> Printr adalah cetak fungsi rekursif. 547 00:24:44,836 --> 00:24:46,710 Dan kemudian ada ini Hal yang menarik di sini. 548 00:24:46,710 --> 00:24:48,835 Dan kami akan kembali ke ini karena ada orang lain, 549 00:24:48,835 --> 00:24:51,140 tetapi tanda dolar garis bawah posting tampaknya 550 00:24:51,140 --> 00:24:56,110 variabel di PHP di mana apa pun Anda kirim dari browser ke server 551 00:24:56,110 --> 00:24:58,040 akan disimpan untuk Anda. 552 00:24:58,040 --> 00:25:00,930 Dan kita akan melihat bagaimana untuk mendapatkan informasi sebelum lama. 553 00:25:00,930 --> 00:25:04,000 >> Tapi pertama-tama, mari kita kembali ke contoh yang sedikit berbeda. 554 00:25:04,000 --> 00:25:09,050 Pergi ke register-- atau bukan, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 yang terlihat sedikit berbeda. 556 00:25:10,470 --> 00:25:12,670 Aku mengambil sedikit lebih usaha dengan format, 557 00:25:12,670 --> 00:25:14,370 meskipun itu masih sangat jelek. 558 00:25:14,370 --> 00:25:16,990 Tapi aku akan pergi ke depan dan ketik "David" sekarang. 559 00:25:16,990 --> 00:25:17,850 Male. 560 00:25:17,850 --> 00:25:19,360 Kami akan memeriksa "Kapten" kali ini. 561 00:25:19,360 --> 00:25:20,660 Kami akan melakukan Matthews. 562 00:25:20,660 --> 00:25:22,430 Dan mendaftar. 563 00:25:22,430 --> 00:25:24,110 >> Dan kali ini ia mengatakan, hm, tidak benar-benar. 564 00:25:24,110 --> 00:25:26,180 Baiklah, jadi apa yang mendaftar 1? 565 00:25:26,180 --> 00:25:30,509 Biarkan aku pergi ke terbuka daftar 1 hm dan-. 566 00:25:30,509 --> 00:25:32,300 Baiklah, jadi ini adalah menarik, dan ini 567 00:25:32,300 --> 00:25:34,880 adalah batu loncatan sekarang menuju program yang lebih menarik. 568 00:25:34,880 --> 00:25:38,970 >> Perhatikan bagian atas dari file ini memiliki Tag PHP serta beberapa komentar. 569 00:25:38,970 --> 00:25:42,590 Dan ini, untuk saat ini, pengalih perhatian jadi mari kita menyingkirkan mereka komentar 570 00:25:42,590 --> 00:25:47,070 sama seperti mereka berada di C. Dan saya mengklaim dengan potongan kode ini dengan komentar 571 00:25:47,070 --> 00:25:49,280 bahwa kode ini memvalidasi pengajuan. 572 00:25:49,280 --> 00:25:51,690 >> Nah, ternyata bahwa variabel seperti tanda dolar 573 00:25:51,690 --> 00:25:53,739 menggarisbawahi posting adalah disebut Super GLOBALS. 574 00:25:53,739 --> 00:25:55,530 Mereka seperti ini variabel global khusus 575 00:25:55,530 --> 00:25:58,840 yang hanya omni-saat tersedia dalam program Anda. 576 00:25:58,840 --> 00:26:03,870 Dan Anda dapat menggunakan notasi braket persegi indeks ke mereka tidak menggunakan angka 577 00:26:03,870 --> 00:26:07,460 seperti 0, 1, 2, 3, tetapi kata-kata yang sebenarnya. 578 00:26:07,460 --> 00:26:12,100 >> Jadi Anda bisa memikirkan tanda dolar menggarisbawahi pos sebagai semacam tabel hash 579 00:26:12,100 --> 00:26:15,920 bahwa Anda bisa melewati kunci ke dalam, lookup kata di antara tanda kurung siku, 580 00:26:15,920 --> 00:26:19,370 dan itu akan memberikan Anda kembali nilai bahwa pengguna benar-benar tersedia. 581 00:26:19,370 --> 00:26:21,210 PHP memiliki fungsi disebut kosong yang hanya 582 00:26:21,210 --> 00:26:23,720 mengatakan ya atau tidak, ini variabel kosong atau tidak. 583 00:26:23,720 --> 00:26:27,250 Kami memiliki ini ganda bar, yang hanya berarti atau, seperti di C. 584 00:26:27,250 --> 00:26:31,740 >> Jadi pada dasarnya, baris ini 4 hanya mengatakan jika pengguna tidak memberikan nama 585 00:26:31,740 --> 00:26:36,540 atau tidak memberikan jenis kelamin atau tidak memberikan asrama, pergi ke depan dan mengarahkan dia 586 00:26:36,540 --> 00:26:38,184 atau dia melalui jalur ini di sini. 587 00:26:38,184 --> 00:26:40,600 Jadi ini adalah sedikit samar, tapi ini hanya berarti harfiah 588 00:26:40,600 --> 00:26:43,330 kembali ke lokasi ini, sehingga Punts pengguna 589 00:26:43,330 --> 00:26:45,420 kembali ke mana pun ia berasal. 590 00:26:45,420 --> 00:26:47,880 Tapi itu janggal sedikit dalam bahwa saya sulit kode itu. 591 00:26:47,880 --> 00:26:52,150 >> Tapi bagaimana jika hal ini jika kondisi tidak mengevaluasi true? 592 00:26:52,150 --> 00:26:55,790 Bagaimana jika pengguna memang memberi saya nya atau nama dan asrama dan jenis kelamin? 593 00:26:55,790 --> 00:26:58,540 Itu jika kondisi tidak akan mengevaluasi dengan benar, 594 00:26:58,540 --> 00:27:00,650 jadi saya tidak memukul keluar sejalan 7. 595 00:27:00,650 --> 00:27:01,680 Jadi apa yang terjadi? 596 00:27:01,680 --> 00:27:03,880 Dan ini adalah apa yang menarik tentang PHP. 597 00:27:03,880 --> 00:27:07,470 >> Anda bisa drop ke dalam dan keluar mode PHP, sehingga untuk berbicara. 598 00:27:07,470 --> 00:27:10,985 Jika Anda ingin beberapa kode untuk mengeksekusi, Anda dapat membuka dan menutup tag PHP 599 00:27:10,985 --> 00:27:13,010 dan menempatkan kode di sana seperti yang telah saya lakukan di sini. 600 00:27:13,010 --> 00:27:16,810 Segera setelah Anda menutup tag PHP, server 601 00:27:16,810 --> 00:27:19,407 hanya akan meludahkan apa pun yang Anda diletakkan di sana. 602 00:27:19,407 --> 00:27:21,740 Dan memang, ini adalah bagian dari desain asli dari PHP, 603 00:27:21,740 --> 00:27:25,280 untuk lebih baik untuk buruk, apakah ini percampuran kode dan markup 604 00:27:25,280 --> 00:27:25,920 bahasa. 605 00:27:25,920 --> 00:27:28,670 Dan kita akan melihat bahwa ini sangat cepat devolves menjadi berantakan. 606 00:27:28,670 --> 00:27:31,280 Dan jadi kita akan lebih baik dari ini akhirnya, tapi hanya 607 00:27:31,280 --> 00:27:35,620 melihat kemudahan yang saya sebenarnya mampu menjalankan beberapa logika. 608 00:27:35,620 --> 00:27:37,440 >> Tapi masih sedikit underwhelming. 609 00:27:37,440 --> 00:27:41,210 Mari kita membuka versi dua Frosh IM, yang 610 00:27:41,210 --> 00:27:44,270 rupanya tunduk kepada register2.php. 611 00:27:44,270 --> 00:27:47,600 Jadi file ini yang sebenarnya terjadi untuk terlihat hampir sama. 612 00:27:47,600 --> 00:27:50,780 Aku akan pergi ke Frosh IM 2. 613 00:27:50,780 --> 00:27:53,050 Namun dalam Frosh IM 2, mari kita lihat apa yang terjadi. 614 00:27:53,050 --> 00:27:58,110 >> David, klik tombol radio, seperti itu disebut; Matthews, tidak ada kapten. 615 00:27:58,110 --> 00:27:59,230 Mendaftar. 616 00:27:59,230 --> 00:28:00,130 Anda terdaftar. 617 00:28:00,130 --> 00:28:00,700 Tidak benar-benar. 618 00:28:00,700 --> 00:28:02,574 Oh, tunggu, kita hanya melakukan contoh itu, bukan? 619 00:28:02,574 --> 00:28:04,520 Baiklah, stand by. 620 00:28:04,520 --> 00:28:06,602 Kami akan melakukan tiga. 621 00:28:06,602 --> 00:28:08,560 Jelas sesuatu tentang terjadi dengan Gmail. 622 00:28:08,560 --> 00:28:09,600 Kita akan sampai di sana. 623 00:28:09,600 --> 00:28:11,900 >> Jadi Frosh IM 3 terlihat seperti ini. 624 00:28:11,900 --> 00:28:13,050 Tidak berbeda. 625 00:28:13,050 --> 00:28:19,850 Tapi ketika saya lakukan David, pria, Matthews, dan mendaftar, versi ketiga dan terakhir ini 626 00:28:19,850 --> 00:28:22,230 klaim, cukup sederhana, Anda terdaftar benar-benar. 627 00:28:22,230 --> 00:28:23,560 Itu semacam immaterial. 628 00:28:23,560 --> 00:28:25,600 Tapi aku mengklaim dengan ini Versi ketiga dan terakhir 629 00:28:25,600 --> 00:28:30,610 Saya sekarang telah diciptakan persis apa saya teman sekamar dan aku dibangun untuk Frosh IM 630 00:28:30,610 --> 00:28:31,731 Program tahun yang lalu. 631 00:28:31,731 --> 00:28:32,480 Dan itu sederhana. 632 00:28:32,480 --> 00:28:34,330 Tidak ada database, ada spreadsheet Excel. 633 00:28:34,330 --> 00:28:36,450 Tapi yang lebih penting, tidak ada lagi kertas 634 00:28:36,450 --> 00:28:42,520 karena apa yang kita lakukan dengan program ini adalah untuk benar-benar email pengawas tersebut, yang 635 00:28:42,520 --> 00:28:44,530 adalah menerima sebelumnya hal-hal ini melalui bentuk. 636 00:28:44,530 --> 00:28:48,890 >> Dan rupanya kita sudah diprogram ini sedemikian rupa sehingga ketika seseorang register, 637 00:28:48,890 --> 00:28:52,470 Email akun John Harvard yang proctor-- atau dirinya sendiri dalam hal ini, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- dengan berikut text-- "Orang ini hanya terdaftar." 639 00:28:55,960 --> 00:29:00,560 Nama adalah David, kapten kosong; jenis kelamin, laki-laki; dan asrama, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Jadi apa yang terjadi di sana? 641 00:29:01,560 --> 00:29:05,360 Nah, file yang dimaksud di sini tampaknya register3.php. 642 00:29:05,360 --> 00:29:09,080 Dan jika saya membuka ini, Anda akan melihat kedua kekuatan kode seperti ini 643 00:29:09,080 --> 00:29:12,380 dan juga, terus terang, rasa tidak aman dari sistem seperti email. 644 00:29:12,380 --> 00:29:16,290 Saya baru saja efektif berpura-pura menjadi John Harvard dengan cara berikut. 645 00:29:16,290 --> 00:29:20,920 >> Saya memiliki tag php terbuka di bagian atas, yang hanya mengatakan inilah beberapa kode PHP. 646 00:29:20,920 --> 00:29:23,155 Di sini, ternyata ada perpustakaan di PHP. 647 00:29:23,155 --> 00:29:26,410 Anda hanya tidak perlu termasuk file tajuk sebanyak. 648 00:29:26,410 --> 00:29:28,900 Anda mendapatkan lebih banyak dengan kitchen sink, sehingga untuk berbicara. 649 00:29:28,900 --> 00:29:31,820 >> Tapi kali ini sejalan 4, saya lakukan ingin perpustakaan khusus yang disebut 650 00:29:31,820 --> 00:29:36,087 PHP mailer, yang merupakan sesuatu yang Anda dapat menginstal secara gratis di banyak sistem. 651 00:29:36,087 --> 00:29:37,920 Di sini aku memvalidasi pengajuan hanya 652 00:29:37,920 --> 00:29:40,540 dengan memeriksa apakah pengguna memberikan saya nama, jenis kelamin, dan asrama. 653 00:29:40,540 --> 00:29:44,130 Dan jika demikian, maju dan instantiate mailer. 654 00:29:44,130 --> 00:29:47,020 >> Anda dapat menganggap ini sebagai sebuah baris kode yang hanya mengalokasikan. 655 00:29:47,020 --> 00:29:48,950 Ini seperti malloc, tapi itu seksi sedikit 656 00:29:48,950 --> 00:29:51,790 dalam yang Anda sebutkan tidak hanya malloc dan beberapa nomor generik. 657 00:29:51,790 --> 00:29:55,030 Anda mengatakan memberi saya salah satu dari ini, memberi saya yang baru ini. 658 00:29:55,030 --> 00:29:57,950 >> Dan jika Anda telah diprogram dalam Java atau C ++ atau bahasa lainnya, 659 00:29:57,950 --> 00:29:59,130 Anda mungkin telah melihat ini. 660 00:29:59,130 --> 00:30:01,840 Tapi pendek itu, jika asing, baris ini 661 00:30:01,840 --> 00:30:05,410 menempatkan ke tanda dolar surat struct khusus yang disebut 662 00:30:05,410 --> 00:30:08,731 sebuah benda yang memiliki built-in fungsi email. 663 00:30:08,731 --> 00:30:10,355 Dan pada kenyataannya, perhatikan dan sintaks mirip. 664 00:30:10,355 --> 00:30:11,900 >> Ini bukan pointer, per se. 665 00:30:11,900 --> 00:30:13,990 PHP hanya menggunakan sintaks yang sama. 666 00:30:13,990 --> 00:30:17,660 Baris ini mengatakan penggunaan SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protokol, yang hanya protokol yang digunakan untuk mengirim email. 668 00:30:20,900 --> 00:30:24,240 Ini adalah menentukan penggunaan SMTP server yang Harvard, yang 669 00:30:24,240 --> 00:30:25,830 adalah suatu tempat di sini di kampus. 670 00:30:25,830 --> 00:30:28,480 >> Ini mengatakan apa TCP nomor port untuk diajak bicara, 671 00:30:28,480 --> 00:30:31,650 dan aku hanya tahu bahwa oleh googling atau dengan meminta help desk. 672 00:30:31,650 --> 00:30:34,640 Dan kemudian karena Harvard menggunakan beberapa sistem keamanan pada server-- email 673 00:30:34,640 --> 00:30:37,060 setidaknya untuk mengenkripsi lalu lintas antara Anda dan itu, 674 00:30:37,060 --> 00:30:41,380 meskipun siapa pun dapat mengirim ke itu-- Aku akan menghidupkan protokol TLS 675 00:30:41,380 --> 00:30:42,710 untuk menjaga ini aman. 676 00:30:42,710 --> 00:30:44,730 >> Tapi ini adalah di mana hal-hal mendapatkan sedikit menakutkan. 677 00:30:44,730 --> 00:30:47,970 Aku hanya bisa sewenang-wenang mengatakan bahwa saya jharvard, 678 00:30:47,970 --> 00:30:51,930 dan aku hanya bisa sewenang-wenang email diriku di sini. 679 00:30:51,930 --> 00:30:55,650 Dan kemudian saya bisa menentukan subjek dengan baris ini di sini. 680 00:30:55,650 --> 00:30:58,460 >> Dan ini hanya terlihat jelek, tapi itu hanya sekelompok Rangkaian. 681 00:30:58,460 --> 00:31:04,480 Ternyata PHP memiliki simbol yang super berguna, seperti beberapa bahasa, operator dot, 682 00:31:04,480 --> 00:31:07,340 yang hanya benar-benar merangkai String setelah tali setelah tali, 683 00:31:07,340 --> 00:31:09,810 dan Anda tidak perlu malloc atau tokoh out total panjang string. 684 00:31:09,810 --> 00:31:10,820 Anda hanya melakukannya. 685 00:31:10,820 --> 00:31:15,220 Dan memang, karena aku concatenating dalam semua hal ini dengan titik-titik tersebut, 686 00:31:15,220 --> 00:31:18,330 itu sebabnya email saya mengirim tampak seperti yang terjadi. 687 00:31:18,330 --> 00:31:20,610 >> Dan kemudian terakhir di sini, aku mengirim surat. 688 00:31:20,610 --> 00:31:22,580 Jadi jika ini adalah palsu, Aku hanya akan mati, 689 00:31:22,580 --> 00:31:25,680 yang merupakan fungsi yang hanya mencetak ke layar beberapa pesan kesalahan. 690 00:31:25,680 --> 00:31:29,170 Tapi itu adalah, pada kenyataannya, memanggil fungsi kirim. 691 00:31:29,170 --> 00:31:31,780 Jika tidak, jika semua ini gagal, itu pengalihan saya kembali ke sini. 692 00:31:31,780 --> 00:31:34,050 >> Dan mengapa saya melihat bahwa Aku benar-benar terdaftar? 693 00:31:34,050 --> 00:31:36,110 Nah, hal itu terjadi di sini. 694 00:31:36,110 --> 00:31:38,170 Jadi saya membawa ini untuk beberapa alasan. 695 00:31:38,170 --> 00:31:41,542 >> Satu, ini adalah persis bagaimana jika Anda membangun beberapa situs web untuk tugas akhir 696 00:31:41,542 --> 00:31:44,000 atau untuk dunia nyata, ini adalah bagaimana Anda mengirim email pengingat 697 00:31:44,000 --> 00:31:45,924 kepada pelanggan atau pelanggan Anda. 698 00:31:45,924 --> 00:31:47,590 Ini adalah bagaimana Anda mengirim pengingat password. 699 00:31:47,590 --> 00:31:50,760 Ini adalah bagaimana Anda mengirim pesan orang bahwa mereka memiliki Facebook baru 700 00:31:50,760 --> 00:31:52,990 pesan tertunda atau sesuatu seperti itu. 701 00:31:52,990 --> 00:31:55,010 >> Tapi juga berbicara kepada fakta bahwa ini bisa 702 00:31:55,010 --> 00:31:58,160 telah sangat baik dari Davin atau orang lain. 703 00:31:58,160 --> 00:32:00,567 Dan saya katakan seperti ini dengan senyum karena aku 704 00:32:00,567 --> 00:32:03,400 yakin apa yang terjadi melalui beberapa pikiran Anda pada saat ini. 705 00:32:03,400 --> 00:32:11,910 Tapi ini adalah salah satu melakukan seperti yang saya mengatakan, tidak seperti yang saya lakukan hal-hal semacam, 706 00:32:11,910 --> 00:32:14,480 karena itu adalah sepele untuk menempa email seperti ini. 707 00:32:14,480 --> 00:32:16,480 Tapi seperti yang Anda mungkin telah melihat atau membaca di Crimson, 708 00:32:16,480 --> 00:32:18,271 akhir-akhir ini juga cukup sepele bagi orang-orang 709 00:32:18,271 --> 00:32:20,050 untuk melacak mereka kembali ke beberapa asal. 710 00:32:20,050 --> 00:32:23,790 Dan meminta saya beberapa waktu, mungkin di CS50 makan siang, bagaimana saya pertama kali 711 00:32:23,790 --> 00:32:27,080 berkenalan sangat erat hampir ke papan ed bertahun-tahun 712 00:32:27,080 --> 00:32:30,890 lalu ketika saya menemukan bagaimana internet bekerja. 713 00:32:30,890 --> 00:32:36,940 Jadi dalam setiap case-- sedikit setelah papan ed lakukan. 714 00:32:36,940 --> 00:32:42,300 >> Jadi dalam hal apapun, ada Seluruh sekelompok super globals, 715 00:32:42,300 --> 00:32:45,960 karena mereka disebut di sini, salah satunya kami saw-- posting dolar tanda garis bawah. 716 00:32:45,960 --> 00:32:49,530 Ada rekan yang disebut get, yang mana barang-barang dari URL 717 00:32:49,530 --> 00:32:50,690 berakhir akan. 718 00:32:50,690 --> 00:32:54,051 Dan ada sejumlah besar orang lain, sesi too-- dan server dan kue. 719 00:32:54,051 --> 00:32:55,800 Kami akan kembali ke cookie beberapa waktu lain, 720 00:32:55,800 --> 00:33:01,340 tapi sesi jenis dingin karena tepat sekarang-- sampai sekarang-- 721 00:33:01,340 --> 00:33:06,350 segala sesuatu yang kita lakukan dengan browser web adalah semacam stateless, sehingga untuk berbicara. 722 00:33:06,350 --> 00:33:10,060 Saya dapat mengklik sekitar, akses file di server, sesuatu 723 00:33:10,060 --> 00:33:13,500 terjadi pada layar, tetapi maka koneksi ditutup. 724 00:33:13,500 --> 00:33:17,450 Internet Explorer atau Firefox icon berhenti berputar 725 00:33:17,450 --> 00:33:20,340 dan Anda hanya melihat apa halaman web berisi. 726 00:33:20,340 --> 00:33:23,530 >> Jadi HTTP adalah stateless dalam setelah itu membuat sambungan, 727 00:33:23,530 --> 00:33:25,050 mendapatkan beberapa data, itu saja. 728 00:33:25,050 --> 00:33:29,940 Tidak ada lagi sambungan, tidak seperti Skype, tidak seperti Facetime, GChat tidak seperti yang 729 00:33:29,940 --> 00:33:32,180 mempertahankan konstan koneksi ke server. 730 00:33:32,180 --> 00:33:34,650 Web secara fundamental terputus, meskipun kami akan 731 00:33:34,650 --> 00:33:36,630 lihat sebelum lama bagaimana kita dapat mensimulasikan hal-hal 732 00:33:36,630 --> 00:33:39,300 seperti Facebook chat dan GChat, yang menjaga illusion-- 733 00:33:39,300 --> 00:33:41,680 atau benar-benar melakukan mempertahankan hubungan konstan menggunakan 734 00:33:41,680 --> 00:33:43,270 teknologi yang lebih modern. 735 00:33:43,270 --> 00:33:49,000 >> Tetapi jika aku pergi ke, katakanlah, counter.php, ini adalah contoh sederhana yang lain, 736 00:33:49,000 --> 00:33:52,700 seperti yang akan kita lihat, yang saat ini berpikir Saya mengunjungi situs nol waktu. 737 00:33:52,700 --> 00:33:56,790 Tapi jika saya hanya kembali halaman tersebut, entah bagaimana tahu aku ada di sini sebelumnya. 738 00:33:56,790 --> 00:33:58,840 Jika saya reload lagi, tahu aku ada di sini sebelumnya. 739 00:33:58,840 --> 00:34:01,100 Dan lagi dan lagi dan lagi dan lagi. 740 00:34:01,100 --> 00:34:03,610 >> Jadi ada beberapa plus-plussing terjadi, tapi pemberitahuan 741 00:34:03,610 --> 00:34:07,090 hal kecil berputar pernah jadi sebentar di bagian atas dan kemudian terputus, 742 00:34:07,090 --> 00:34:11,179 sehingga tidak seperti saya memiliki konstan koneksi ke alat saya. 743 00:34:11,179 --> 00:34:16,929 Nah, jika saya pergi ke counter.php, melihat betapa sederhananya adalah. 744 00:34:16,929 --> 00:34:19,080 Saya pertama kali menyebutnya khusus fungsi yang kita akan segera 745 00:34:19,080 --> 00:34:21,513 mulai mengambil untuk diberikan disebut sesi awal. 746 00:34:21,513 --> 00:34:22,179 Mulai sesi. 747 00:34:22,179 --> 00:34:25,095 >> Dan sesi selanjutnya hanya akan menjadi ember, seperti belanja 748 00:34:25,095 --> 00:34:28,120 cart di mana Anda dapat menempatkan nilai-nilai dan jenis percaya sebagai programmer 749 00:34:28,120 --> 00:34:31,590 bahwa mereka akan berada di sini ketika pengguna yang datang back-- kedua 750 00:34:31,590 --> 00:34:35,670 kemudian, satu jam kemudian, bahkan setahun kemudian, asalkan ia tidak jelas 751 00:34:35,670 --> 00:34:37,602 cookie mereka, seperti yang kita akhirnya akan melihat. 752 00:34:37,602 --> 00:34:39,310 Dan sekarang saya hanya memiliki sebuah jika kondisi di sini. 753 00:34:39,310 --> 00:34:44,679 Jadi jika kunci berikut, disebut counter, diatur dalam 754 00:34:44,679 --> 00:34:49,210 super ini global-- hash ini tabel, jika Anda will-- disebut sesi, 755 00:34:49,210 --> 00:34:53,350 kemudian pergi ke depan dan ambil nilai dari berpikir session-- 756 00:34:53,350 --> 00:34:55,250 ini sebagai belanja cart-- dan menyimpannya 757 00:34:55,250 --> 00:34:57,680 dalam variabel sementara yang disebut counter. 758 00:34:57,680 --> 00:35:02,240 >> Jika tidak, jika nilai counter adalah tidak diatur dalam apa yang disebut keranjang belanja, 759 00:35:02,240 --> 00:35:04,430 hanya menginisialisasi ke 0. 760 00:35:04,430 --> 00:35:09,830 Terakhir, di sini, pergi dan dimasukkan kembali ke dalam keranjang belanja atau sesi 761 00:35:09,830 --> 00:35:13,000 nilai counter +1. 762 00:35:13,000 --> 00:35:16,730 Jadi ternyata bahwa ini sini-wadah khusus 763 00:35:16,730 --> 00:35:20,355 yang, sekali lagi, adalah salah satunya terkait array, array yang Anda dapat mengindeks 764 00:35:20,355 --> 00:35:25,010 dalam kata-kata bukan Numbers tetap ada bahkan setelah pengguna hilang. 765 00:35:25,010 --> 00:35:26,510 Sekali lagi, saya akan kembali ke halaman saat ini. 766 00:35:26,510 --> 00:35:28,400 Sudah satu menit atau lebih. 767 00:35:28,400 --> 00:35:31,300 Tapi ingat bahwa aku sudah telah di sini 19 kali sebelumnya. 768 00:35:31,300 --> 00:35:32,740 Ini adalah kunjungan ke-20 saya. 769 00:35:32,740 --> 00:35:36,560 >> Dan jadi ini akan menjadi kunci untuk melaksanakan setiap situs web yang ingat 770 00:35:36,560 --> 00:35:40,640 bahwa Anda login, Anda menempatkan sesuatu yang literal di keranjang belanja Anda 771 00:35:40,640 --> 00:35:43,902 untuk membeli atau bahwa Anda memiliki beberapa jumlah pesan yang tertunda. 772 00:35:43,902 --> 00:35:45,610 Kapan saja Anda ingin mengingat informasi, 773 00:35:45,610 --> 00:35:48,130 kita akan melihat PHP itu, seperti beberapa bahasa lain, 774 00:35:48,130 --> 00:35:53,640 memberikan kita ilusi ini negara meskipun, seperti yang Anda lihat di PSET 6, 775 00:35:53,640 --> 00:35:57,642 karena Anda membuat permintaan HTTP dari client ke server, itu saja. 776 00:35:57,642 --> 00:35:59,850 Setelah Anda mendapatkan kembali bahwa respon, tidak ada yang lebih 777 00:35:59,850 --> 00:36:01,790 kembali dari server secara default. 778 00:36:01,790 --> 00:36:03,820 Tapi kita akan melihat bagaimana untuk bekerja di sekitar itu. 779 00:36:03,820 --> 00:36:07,430 >> Nah sekarang, mari kita coba untuk membersihkan ini sedikit. 780 00:36:07,430 --> 00:36:09,470 Kami telah melihat beberapa contoh yang berbeda di sana. 781 00:36:09,470 --> 00:36:12,250 Oh, dan sebagai samping, untuk mereka yang akrab atau asing, 782 00:36:12,250 --> 00:36:14,230 alasan bahwa Frosh IM contoh pergi 783 00:36:14,230 --> 00:36:18,060 dari tampak benar-benar jelek untuk slightly-- dengan baik, 784 00:36:18,060 --> 00:36:23,160 masih ugly-- untuk sedikit kurang jelek meskipun masih jelek 785 00:36:23,160 --> 00:36:25,230 karena jika kita melihat kode sumber di sini, 786 00:36:25,230 --> 00:36:28,240 ternyata saya punya ini di bagian paling atas dari file. 787 00:36:28,240 --> 00:36:32,570 >> Ternyata bahwa bootstrap adalah salah satu dari banyak perpustakaan tersedia secara bebas di luar sana 788 00:36:32,570 --> 00:36:37,140 yang ada tidak untuk bahasa pemrograman selalu, tetapi untuk CSS atau JavaScript 789 00:36:37,140 --> 00:36:39,190 atau HTML atau sejumlah bahasa. 790 00:36:39,190 --> 00:36:42,160 >> Dan orang-orang ini di sini- awalnya keluar 791 00:36:42,160 --> 00:36:44,730 dari Twitter-- hanya sejumlah besar gaya. 792 00:36:44,730 --> 00:36:47,360 Ini file besar di sini bahwa seseorang menulis, 793 00:36:47,360 --> 00:36:51,020 atau seseorang menulis, dari waktu ke waktu yang menentukan warna dan format 794 00:36:51,020 --> 00:36:53,740 dan yang lainnya sehingga saya bisa jenis meminjam sintaks mereka 795 00:36:53,740 --> 00:36:56,157 dan tidak harus mencari tahu bagaimana lay out formulir saya. 796 00:36:56,157 --> 00:36:57,990 Hal ini juga minified sehingga komputer dapat 797 00:36:57,990 --> 00:37:00,560 mengerti tapi tidak tentu manusia. 798 00:37:00,560 --> 00:37:03,050 Jadi itu hanya mengapa stilisasi ada berubah. 799 00:37:03,050 --> 00:37:05,450 >> Tapi mari sekarang kita lakukan lebih baik dalam hal desain, 800 00:37:05,450 --> 00:37:07,490 karena jika kita tinggal di bawah jalan ini terlalu lama, 801 00:37:07,490 --> 00:37:11,290 kode kita akan mendapatkan berantakan dan berantakan. 802 00:37:11,290 --> 00:37:13,040 Jadi mari kita fokus pada beberapa contoh di sini. 803 00:37:13,040 --> 00:37:15,090 Yang terakhir untuk hari ini. 804 00:37:15,090 --> 00:37:18,720 >> Jadi di sini adalah super sederhana versi 1.0 dari situs CS50 ini. 805 00:37:18,720 --> 00:37:21,250 Hanya memiliki link ke kuliah dan silabus, 806 00:37:21,250 --> 00:37:25,490 dan ia menggunakan bahwa daftar unordered tag-- tag UL yang kita gunakan terakhir kali. 807 00:37:25,490 --> 00:37:28,800 Dan jika pada kenyataannya, jika saya membuka View Page Source, 808 00:37:28,800 --> 00:37:31,710 Anda akan melihat bahwa ini adalah benar-benar, benar-benar HTML sederhana. 809 00:37:31,710 --> 00:37:35,460 Dan pada kenyataannya, meskipun ini adalah file PHP di bawah tenda, 810 00:37:35,460 --> 00:37:38,620 itu masih hanya meludah out hanya HTML untuk saat ini. 811 00:37:38,620 --> 00:37:41,312 >> Jadi jika saya klik pada Lectures, kita melihat hal ini terjadi. 812 00:37:41,312 --> 00:37:43,020 Dan jika saya klik pada minggu nol, kita melihat hal ini. 813 00:37:43,020 --> 00:37:44,920 Dan jika saya klik pada Rabu, kita melihat hal ini. 814 00:37:44,920 --> 00:37:47,900 Dan ini tampaknya adalah PDF slide dari hari itu. 815 00:37:47,900 --> 00:37:52,020 Semua yang telah saya lakukan Link dengan anchor tag ke URL ini di sini. 816 00:37:52,020 --> 00:37:55,400 >> Jadi ini hanya untuk mengatakan ini adalah cukup Versi sederhana dari situs CS50 ini. 817 00:37:55,400 --> 00:37:56,790 Mari kita lihat bagaimana hal itu diimplementasikan. 818 00:37:56,790 --> 00:38:01,240 Jika saya pergi ke direktori mvc0, kita akan melihat beberapa file. 819 00:38:01,240 --> 00:38:03,250 Salah satunya adalah README, jadi jika beberapa ini terlalu cepat, 820 00:38:03,250 --> 00:38:05,166 Anda hanya dapat melihat-lihat lebih santai nanti. 821 00:38:05,166 --> 00:38:07,930 Dan pemberitahuan di sini adalah file index.php. 822 00:38:07,930 --> 00:38:09,960 Ternyata bahwa jika Anda sendiri, manusia, 823 00:38:09,960 --> 00:38:14,460 tidak menentukan nama akhir dalam URL, server web biasanya 824 00:38:14,460 --> 00:38:17,010 menyimpulkan beberapa nama standar untuk Anda. 825 00:38:17,010 --> 00:38:20,060 Indeks dot sesuatu umumnya default. 826 00:38:20,060 --> 00:38:23,010 >> Jadi itu sebabnya beberapa saat yang lalu ketika saya mengunjungi URL ini di sini, 827 00:38:23,010 --> 00:38:26,750 tidak ada nama file, tidak ada file ekstensi, ada periode dalam URL. 828 00:38:26,750 --> 00:38:29,710 Itu hanya tahu entah bagaimana ajaib untuk mencari index.php. 829 00:38:29,710 --> 00:38:30,870 Ini hanya sebuah konvensi. 830 00:38:30,870 --> 00:38:32,360 Bisa disebut apa-apa. 831 00:38:32,360 --> 00:38:35,110 >> Jadi jika sekarang saya pergi ke index.php, Anda akan melihat 832 00:38:35,110 --> 00:38:37,100 bahwa, indeed-- mari menyingkirkan komentar 833 00:38:37,100 --> 00:38:39,500 di sini karena ada benar-benar ada yang menarik untuk itu-- 834 00:38:39,500 --> 00:38:41,579 ini hanya sulit kode HTML. 835 00:38:41,579 --> 00:38:43,370 Jadi itu konsisten, meskipun, dengan klaim saya 836 00:38:43,370 --> 00:38:45,230 bahwa Anda dapat bercampur HTML dan PHP. 837 00:38:45,230 --> 00:38:48,060 Tidak ada sebenarnya pemrograman logika dalam sini. 838 00:38:48,060 --> 00:38:51,030 >> Dan file lain cukup banyak hanya sebagai menarik. 839 00:38:51,030 --> 00:38:56,240 Hanya saja keras-kode minggu satu di sini untuk satu minggu m dan minggu satu w, 840 00:38:56,240 --> 00:38:57,510 untuk hari Senin dan Rabu. 841 00:38:57,510 --> 00:39:01,890 Dan kemudian jika saya membuka minggu nol, melihat itu hampir identik. 842 00:39:01,890 --> 00:39:03,320 >> Dan itu semacam takeaway kunci. 843 00:39:03,320 --> 00:39:06,180 Perhatikan betapa berlebihan ini. 844 00:39:06,180 --> 00:39:10,710 File-file ini hampir tidak berubah, namun saya menarik salah satu copy / pekerjaan pasta ini 845 00:39:10,710 --> 00:39:13,420 di mana saya mengambil satu file-- mungkin dalam minggu zero-- disalin 846 00:39:13,420 --> 00:39:16,320 ketika minggu satu datang, dan tweak beberapa nilai. 847 00:39:16,320 --> 00:39:18,590 Kita mungkin harus dapat untuk berbuat lebih baik daripada ini. 848 00:39:18,590 --> 00:39:21,800 >> Jadi mari kita kembali ke MVC dan masuk ke versi satu. 849 00:39:21,800 --> 00:39:24,810 Dan melihat saya punya beberapa file, karena apa yang 850 00:39:24,810 --> 00:39:29,870 adalah umum untuk semua file-file hanya saat ago-- jika aku kembali ke versi 0, 851 00:39:29,870 --> 00:39:32,600 mari kita kembali ke indeks, dan hanya postulate-- 852 00:39:32,600 --> 00:39:36,090 setelah saya menyingkirkan comments-- yang apa bagian dari halaman ini 853 00:39:36,090 --> 00:39:40,072 adalah mungkin dalam setiap salah satu dari file saya? 854 00:39:40,072 --> 00:39:40,780 Sebut saja keluar. 855 00:39:40,780 --> 00:39:44,620 Yang garis diduplikasi mungkin di semua halaman ini? 856 00:39:44,620 --> 00:39:45,120 Ya? 857 00:39:45,120 --> 00:39:46,110 >> SISWA: [tak terdengar]. 858 00:39:46,110 --> 00:39:47,660 >> DAVID J. Malan: 1 sampai 9. 859 00:39:47,660 --> 00:39:48,720 Ya, benar-benar. 860 00:39:48,720 --> 00:39:52,080 1 sampai 9, kecuali mungkin 8 perubahan sedikit karena CS50 861 00:39:52,080 --> 00:39:54,650 menjadi kuliah atau Minggu nol atau sesuatu. 862 00:39:54,650 --> 00:39:55,970 Tapi hampir identik. 863 00:39:55,970 --> 00:39:58,657 Jadi semua hal ini hanya jenis disalin dan disisipkan. 864 00:39:58,657 --> 00:40:00,490 Dan ada pasangan jalur lain yang dapat saya pikirkan 865 00:40:00,490 --> 00:40:05,000 itu mungkin identik di semua file. 866 00:40:05,000 --> 00:40:06,315 >> STUDENT: 12 dan 13. 867 00:40:06,315 --> 00:40:07,190 DAVID J. Malan: Ya. 868 00:40:07,190 --> 00:40:11,220 Tentu, 12, 13, dan 14 mungkin, hanya karena hal-hal yang menarik 869 00:40:11,220 --> 00:40:15,460 yang terjadi pada baris 11 dan 10, sehingga akan tampak. 870 00:40:15,460 --> 00:40:18,350 Jadi mari kita lihat versi 1, yang mencoba untuk memperbaiki ini. 871 00:40:18,350 --> 00:40:24,020 Dalam versi 1 dari example-- MVC ini kita akan menjelaskan apa artinya MVC di moment-- sebuah 872 00:40:24,020 --> 00:40:27,420 jika saya pergi ke indeks, itu jenis terlihat sedikit membingungkan sekarang. 873 00:40:27,420 --> 00:40:28,880 Ini tidak sesederhana seperti sebelumnya. 874 00:40:28,880 --> 00:40:30,906 >> Tapi begitu Anda mulai membacanya dengan cermat, itu 875 00:40:30,906 --> 00:40:32,530 cukup sederhana apa yang dilakukannya. 876 00:40:32,530 --> 00:40:34,397 Rupanya baris 1 dan baris 8 telah diganti 877 00:40:34,397 --> 00:40:37,230 semua hal yang Anda hanya identified-- meskipun hanya untuk mengukur baik, 878 00:40:37,230 --> 00:40:41,900 Aku meninggalkan ULS sana hanya dalam kasus beberapa hari tidak memiliki daftar hal-hal. 879 00:40:41,900 --> 00:40:47,860 Dan begitu membutuhkan adalah jenis seperti pound termasuk di C. Ini salinan dan pasta 880 00:40:47,860 --> 00:40:50,470 isi secara efektif di sini ke dalam file ini. 881 00:40:50,470 --> 00:40:53,650 >> Jadi dalam header.php, karena Anda mungkin menyimpulkan dari namanya, 882 00:40:53,650 --> 00:40:55,330 akan menjadi header halaman. 883 00:40:55,330 --> 00:40:57,110 Ini semacam yatim di sini. 884 00:40:57,110 --> 00:41:01,820 Hanya memiliki bagian atas untuk itu, tapi tidak ada lagi konten di bawah ini. 885 00:41:01,820 --> 00:41:05,070 >> Dan jika saya melihat footer sementara itu, yang merupakan file lain mentioned-- 886 00:41:05,070 --> 00:41:08,830 yang satu ini bahkan kalah menarik, tapi sekali lagi, itu umum untuk semuanya. 887 00:41:08,830 --> 00:41:10,250 Jadi ini adalah footer. 888 00:41:10,250 --> 00:41:11,300 Ini adalah header. 889 00:41:11,300 --> 00:41:13,950 Ini adalah file yang berubah, jadi mengapa tidak 890 00:41:13,950 --> 00:41:18,140 mencoba untuk faktor luar kesamaan tersebut dengan dua baris di sini? 891 00:41:18,140 --> 00:41:20,090 >> Tapi kita bisa membersihkan ini up sedikit lebih jauh. 892 00:41:20,090 --> 00:41:23,260 Aku akan pergi ke depan dan membuka versi dua di mana 893 00:41:23,260 --> 00:41:27,106 kita akan melihat bahwa ada file baru, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Kita akan melihat apa itu dalam sekejap. 895 00:41:28,610 --> 00:41:30,930 Mari kita pergi ke indeks, sebagai entry point seperti sebelumnya. 896 00:41:30,930 --> 00:41:35,230 >> Dan sekarang melihat saya membutuhkan helpers.php, tidak header atau footer. 897 00:41:35,230 --> 00:41:41,720 Tapi pembantu adalah jenis seperti helpers.c dan helpers.h dari PSET 2 898 00:41:41,720 --> 00:41:46,150 atau PSET 3 lama ketika Anda benar-benar melakukan pencarian dan menemukan untuk PSET itu, 899 00:41:46,150 --> 00:41:50,950 dan Anda memiliki semua kode Anda untuk menyortir dan mencari dalam file terpisah. 900 00:41:50,950 --> 00:41:52,510 Itulah yang terjadi di sini. 901 00:41:52,510 --> 00:41:54,390 >> Dan sekarang baris 3 terlihat sedikit berbeda. 902 00:41:54,390 --> 00:41:55,920 Dan itu hanya satu baris. 903 00:41:55,920 --> 00:41:57,950 Untuk membuat ini bahkan lebih jelas, saya hanya bisa 904 00:41:57,950 --> 00:42:01,820 jangan ini menjadi Gaya konsisten dengan segala sesuatu yang kita lakukan. 905 00:42:01,820 --> 00:42:04,130 Tapi itu tidak benar-benar mengubah fungsi tersebut. 906 00:42:04,130 --> 00:42:05,880 Ini hanya satu baris kode yang nyata. 907 00:42:05,880 --> 00:42:09,010 >> Rupanya, ada fungsi di suatu tempat yang disebut membuat header, 908 00:42:09,010 --> 00:42:11,420 dan ini adalah di mana hal-hal mendapatkan cukup kuat. 909 00:42:11,420 --> 00:42:17,040 Perhatikan bahwa dalam kurung yang adalah apa bagian lain dari sintaks? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Ini mungkin agak sulit untuk mengatakan, tapi perhatikan there's-- Aku akan menaruh beberapa putih 912 00:42:23,350 --> 00:42:24,300 ruang. 913 00:42:24,300 --> 00:42:25,530 Ada tanda kurung siku. 914 00:42:25,530 --> 00:42:29,700 >> Dan tanda kurung siku kita melihat sedikit lalu dalam konteks array asosiatif, 915 00:42:29,700 --> 00:42:31,580 yang, sekali lagi, seperti tabel hash. 916 00:42:31,580 --> 00:42:36,230 Dan jika Anda berpikir sekarang untuk C, urutan argumen ke fungsi 917 00:42:36,230 --> 00:42:37,570 harus selalu sama. 918 00:42:37,570 --> 00:42:41,146 Anda harus ingat apa yang memesan x is--, y, z atau z, y, x-- 919 00:42:41,146 --> 00:42:44,020 dan Anda harus selalu memberi mereka dalam urutan yang sama atau melihat mereka 920 00:42:44,020 --> 00:42:45,100 jika Anda lupa. 921 00:42:45,100 --> 00:42:51,140 >> Tapi ini tampaknya menjadi cara yang cerdas lewat sebuah nilai kunci sewenang-wenang 922 00:42:51,140 --> 00:42:55,840 pasang dimana judul nama dari argumen dalam kasus ini 923 00:42:55,840 --> 00:42:58,334 dan CS50 adalah nilainya. 924 00:42:58,334 --> 00:43:00,250 Dan fakta bahwa saya memiliki ini tanda kurung siku 925 00:43:00,250 --> 00:43:02,560 di sini berarti bahwa aku bisa juga lulus dalam sesuatu 926 00:43:02,560 --> 00:43:07,550 seperti seminggu adalah 1 atau 0 atau 2 atau 3. 927 00:43:07,550 --> 00:43:10,550 Jadi kita sudah parameter fungsi ini sedemikian rupa 928 00:43:10,550 --> 00:43:15,180 bahwa diperlukan waktu beberapa masukan, tapi untuk saat itu hanya satu. 929 00:43:15,180 --> 00:43:20,060 >> Jika saya sekarang pergi ke helpers.php, melihat apa yang dilakukannya. 930 00:43:20,060 --> 00:43:22,030 Ini adalah sedikit fungsi baru, 931 00:43:22,030 --> 00:43:24,190 tapi untuk saat ini hanya mengambil pada iman bahwa ini adalah 932 00:43:24,190 --> 00:43:26,570 sintaks yang Anda mendefinisikan fungsi dalam PHP. 933 00:43:26,570 --> 00:43:27,840 Anda benar-benar mengatakan fungsi. 934 00:43:27,840 --> 00:43:30,090 Anda tidak menentukan return mengetik, dan itu konsisten 935 00:43:30,090 --> 00:43:33,880 dengan detail variabel sebelumnya di mana Anda tidak benar-benar kuat mengetik. 936 00:43:33,880 --> 00:43:35,650 >> Ini hanya menentukan itu, secara default, ini 937 00:43:35,650 --> 00:43:37,460 mengambil asosiatif array sebagai argumen. 938 00:43:37,460 --> 00:43:38,210 Dan kau tahu apa? 939 00:43:38,210 --> 00:43:41,450 Jika pengguna tidak lulus satu in, asumsikan nilai default. 940 00:43:41,450 --> 00:43:44,680 >> Ini adalah fitur yang C tidak memiliki bagi kami, yang bagus, karena sekarang 941 00:43:44,680 --> 00:43:46,430 data, bahkan jika Anda tidak memberikan apa-apa, 942 00:43:46,430 --> 00:43:49,300 akan menjadi Array tapi satu kosong. 943 00:43:49,300 --> 00:43:51,860 Dan sebagai samping, ekstrak hanya melakukan sesuatu yang funky 944 00:43:51,860 --> 00:43:56,380 di mana dibutuhkan semua kunci dari ini array asosiatif, semua hal-hal 945 00:43:56,380 --> 00:43:59,950 Anda bisa dimasukkan ke dalam tanda kurung siku, dan menciptakan variabel dari mereka 946 00:43:59,950 --> 00:44:06,270 sehingga kita akhirnya dapat memiliki akses kepada mereka dalam footet.php dan header.php. 947 00:44:06,270 --> 00:44:08,950 Itu abstrak kecil, jadi biar menunjukkan ini. 948 00:44:08,950 --> 00:44:12,990 >> Dalam index.php, perhatikan bahwa aku lewat di nilai pasangan kunci dari judul 949 00:44:12,990 --> 00:44:14,850 dengan nilai CS50. 950 00:44:14,850 --> 00:44:18,660 Jika saya sekarang melihat helpers.php, melihat RenderHeader yang 951 00:44:18,660 --> 00:44:23,870 adalah penggalian data yang saya lewat in, dan kemudian membutuhkan header.php. 952 00:44:23,870 --> 00:44:27,970 Apa yang saya lakukan adalah semacam orang miskin implementasi sekarang berikut. 953 00:44:27,970 --> 00:44:31,720 >> Jika saya membuka header.php, pemberitahuan bahwa saya sudah tidak lagi keras 954 00:44:31,720 --> 00:44:34,890 dikodekan CS50 kata dalam file header ini. 955 00:44:34,890 --> 00:44:39,310 Aku sudah menempatkan ini diakui atrociously fungsi bernama, HTML karakter khusus, 956 00:44:39,310 --> 00:44:40,170 di sana. 957 00:44:40,170 --> 00:44:41,640 Tapi perhatikan apa yang telah kulakukan. 958 00:44:41,640 --> 00:44:44,240 Aku punya terbuka HTML. 959 00:44:44,240 --> 00:44:47,420 Saya kemudian memiliki kepala terbuka dan judul terbuka. 960 00:44:47,420 --> 00:44:52,380 >> Dan kemudian dalam judul terbuka dan tag dekat, saya punya sedikit kode PHP. 961 00:44:52,380 --> 00:44:56,670 Dan ini adalah bagus tapi sintaksis, yang hanya berarti echo keluar. 962 00:44:56,670 --> 00:44:59,840 Secara harfiah berarti this-- gema following-- yang 963 00:44:59,840 --> 00:45:01,910 tapi ini lebih seksi untuk menulis. 964 00:45:01,910 --> 00:45:05,000 Echo keluar judul yang telah berlalu dalam. 965 00:45:05,000 --> 00:45:07,560 >> Tapi apa yang Anda pikirkan HTML char khusus adalah semua tentang, 966 00:45:07,560 --> 00:45:10,590 terutama jika Anda memiliki beberapa pengalaman sebelumnya HTML? 967 00:45:10,590 --> 00:45:14,050 Karakter apa yang mungkin berbahaya untuk lulus ke halaman 968 00:45:14,050 --> 00:45:17,980 di mana Anda menghasilkan dinamis halaman web dengan kode seperti ini? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Biarkan aku pergi ke file ini, versi dua, dan melihat apakah saya tidak dapat menginduksi ini. 971 00:45:24,650 --> 00:45:26,210 >> Versi kedua adalah ini. 972 00:45:26,210 --> 00:45:28,510 Dan memperhatikan segala sesuatu baik-baik saja, bekerja dengan baik. 973 00:45:28,510 --> 00:45:35,280 Tapi bagaimana kalau aku pergi ke index.php dan Aku ditentukan bahwa judul halaman saya 974 00:45:35,280 --> 00:45:36,630 tidak CS50. 975 00:45:36,630 --> 00:45:44,930 Ini adalah braket terbuka peringatan skrip hello world, dekat kutip tunggal, 976 00:45:44,930 --> 00:45:49,740 kurung tutup, titik koma, braket terbuka, skrip slash. 977 00:45:49,740 --> 00:45:51,897 >> Script, seperti yang akan kita akhirnya melihat, adalah tag 978 00:45:51,897 --> 00:45:54,480 yang dapat Anda gunakan untuk penggunaan lain bahasa pemrograman yang disebut 979 00:45:54,480 --> 00:45:56,330 JavaScript dalam halaman web. 980 00:45:56,330 --> 00:45:57,960 Dan sekarang melihat logika di sini. 981 00:45:57,960 --> 00:45:59,840 Berikut ini adalah kunci yang disebut judul. 982 00:45:59,840 --> 00:46:02,690 Berikut adalah itu nilai panjang gila sekarang. 983 00:46:02,690 --> 00:46:07,840 >> Tetapi jika aku pergi ke pembantu page- atau lebih tepatnya, halaman header, 984 00:46:07,840 --> 00:46:11,310 Aku memanggil fungsi ini pada gelar pertama. 985 00:46:11,310 --> 00:46:15,250 Jadi jika sekarang saya kembali halaman ini, saya melihat ini, yang tampak konyol, 986 00:46:15,250 --> 00:46:16,110 tapi aman. 987 00:46:16,110 --> 00:46:17,310 Itu hanya tampak bodoh. 988 00:46:17,310 --> 00:46:20,320 >> Tapi bagaimana kalau sebaliknya Aku lupa ini. 989 00:46:20,320 --> 00:46:24,660 Dan menandai kata-kata saya, sejumlah nol Anda akan lupa untuk melakukan hal ini 990 00:46:24,660 --> 00:46:27,790 dan Anda akan mendapatkan beberapa rajin siswa atau teman datang 991 00:46:27,790 --> 00:46:31,540 Anda di pameran CS50 atau anonim pada malam hari mengaduk-aduk di website Anda 992 00:46:31,540 --> 00:46:35,300 dan pada dasarnya menyuntikkan kode tanpa sepengetahuan Anda ke situs Anda 993 00:46:35,300 --> 00:46:35,800 entah bagaimana. 994 00:46:35,800 --> 00:46:39,000 >> Karena jika saya hanya meludah out judul di sini dan judul 995 00:46:39,000 --> 00:46:44,330 besar-- baik, jika judul harfiah terlihat seperti ini dan PHP 996 00:46:44,330 --> 00:46:47,660 sebagai bahasa yang bisa meludah out teks bahasa lain, 997 00:46:47,660 --> 00:46:50,650 ini benar-benar terjadi untuk mengganti tag ini dengan, 998 00:46:50,650 --> 00:46:53,010 Tentu saja, apa yang saya meletakkan di tempat lain. 999 00:46:53,010 --> 00:46:57,640 >> Jadi jika sekarang saya pergi di sini dan kembali setelah mengurai mekanisme-mekanisme keamanan, 1000 00:46:57,640 --> 00:46:59,982 sekarang aku punya hello world sini. 1001 00:46:59,982 --> 00:47:02,690 Nah, itu tidak semua yang besar dari menangani, tetapi Anda bisa melakukan sesuatu 1002 00:47:02,690 --> 00:47:05,119 sedikit lebih berbahaya di sini, seperti ada 1003 00:47:05,119 --> 00:47:08,410 tags-- lainnya seperti yang akan kita lihat setelah kami menghabiskan lebih banyak waktu di JavaScript-- seperti lokasi 1004 00:47:08,410 --> 00:47:14,910 dot href mendapat, kutipan, tanda kutip, HTTP business.com, tapi kebalikan dari itu 1005 00:47:14,910 --> 00:47:15,950 dari hari lainnya. 1006 00:47:15,950 --> 00:47:20,120 Dan sekarang Anda dapat menginduksi web Laman benar-benar pergi segera 1007 00:47:20,120 --> 00:47:21,190 ke halaman web ini di sini. 1008 00:47:21,190 --> 00:47:23,000 >> Dan sebenarnya, aku tidak ingin bahkan pergi ke business.com 1009 00:47:23,000 --> 00:47:24,749 karena saya tidak ingin untuk mengetahui apa itu. 1010 00:47:24,749 --> 00:47:28,710 Tapi ini juga akan memicu kode untuk disuntikkan ke dalam halaman ini. 1011 00:47:28,710 --> 00:47:32,680 Jadi ini hanya untuk mengatakan bahwa meskipun kami memperkenalkan super awal pada beberapa 1012 00:47:32,680 --> 00:47:36,800 struktur ini lebih kompleks, itu semua menuju akhir memastikan 1013 00:47:36,800 --> 00:47:39,320 bahwa kode Anda tidak dieksploitasi. 1014 00:47:39,320 --> 00:47:40,960 >> Jadi sekarang versi ketiga di sini. 1015 00:47:40,960 --> 00:47:42,470 Sudah mulai pelamun kecil. 1016 00:47:42,470 --> 00:47:44,875 Aku tidak benar-benar like-- sisi anal saya 1017 00:47:44,875 --> 00:47:47,750 semakin sedikit terganggu oleh fakta bahwa saya telah fungsi yang disebut 1018 00:47:47,750 --> 00:47:51,940 RenderHeader dan RenderFooter yang hampir identik. 1019 00:47:51,940 --> 00:47:55,400 Jadi aku sadar, mengapa tidak dilakukan Saya parameterisasi fungsi-fungsi ini 1020 00:47:55,400 --> 00:47:59,180 menjadi hanya satu yang disebut render, memilikinya mengambil argumen kedua 1021 00:47:59,180 --> 00:48:04,420 seperti nama template, final untuk render-- baik header atau footer? 1022 00:48:04,420 --> 00:48:07,160 Dan kemudian opsional, jika saya ingin untuk lulus dalam beberapa pasangan nilai kunci 1023 00:48:07,160 --> 00:48:10,580 seperti yang saya lakukan untuk judul untuk sundulan tetapi tidak untuk footer, 1024 00:48:10,580 --> 00:48:11,800 Aku bisa melakukan itu. 1025 00:48:11,800 --> 00:48:16,510 >> Dan jika aku pergi ke helpers.php, itu sedikit lebih kompleks. 1026 00:48:16,510 --> 00:48:19,670 Dan aku akan melambaikan tangan saya di Rincian, tapi itu hanya satu fungsi. 1027 00:48:19,670 --> 00:48:21,890 Jadi itu langkah menuju desain yang lebih baik. 1028 00:48:21,890 --> 00:48:23,360 >> Kita dapat mengambil satu langkah lebih jauh. 1029 00:48:23,360 --> 00:48:28,890 Jika saya pergi ke keempat saya versi ini, perhatikan sekarang 1030 00:48:28,890 --> 00:48:31,320 bahwa saya melakukan sesuatu bahkan lebih jenis samar. 1031 00:48:31,320 --> 00:48:33,230 Dan aku tahu ini adalah banyak menyerap sekaligus, 1032 00:48:33,230 --> 00:48:35,080 tapi kami hanya jenis membersihkan segalanya. 1033 00:48:35,080 --> 00:48:38,550 Sekarang aku menempatkan pembantu saya file ke sebuah folder bernama 1034 00:48:38,550 --> 00:48:41,190 includes-- hanya sewenang-wenang nama di mana saya ingin menempatkan barang-barang 1035 00:48:41,190 --> 00:48:44,300 yang ingin saya include-- dan kemudian sisa ini adalah sama. 1036 00:48:44,300 --> 00:48:47,140 >> Tetapi jika saya melihat sekarang di gedit, pemberitahuan bahwa aku sudah menyingkirkan 1037 00:48:47,140 --> 00:48:51,940 dari semua file-file lain dan saya sudah memindahkan mereka, misalnya, menjadi di sini. 1038 00:48:51,940 --> 00:48:55,110 Dan kemudian di template, Aku punya ini di sini, juga. 1039 00:48:55,110 --> 00:48:59,292 Dan jadi ini semua sekarang menuju langkah menggunakan pola desain yang jauh lebih baik. 1040 00:48:59,292 --> 00:49:01,000 Dan kami sangat cepat akan pindah 1041 00:49:01,000 --> 00:49:03,870 dari fungsi default PHP, yang kita mulai di sini dengan, 1042 00:49:03,870 --> 00:49:07,655 di mana Anda hanya bercampur PHP, dan HTML, dan CSS Anda, 1043 00:49:07,655 --> 00:49:09,780 dan Anda hanya meludah keluar dan Anda pergi tentang cara Anda. 1044 00:49:09,780 --> 00:49:11,404 Ini tidak akan menjadi sangat dipertahankan. 1045 00:49:11,404 --> 00:49:14,481 Sama seperti di C, kami mulai menggunakan beberapa file dan beberapa fungsi 1046 00:49:14,481 --> 00:49:15,730 dan hal anjak piutang yang keluar. 1047 00:49:15,730 --> 00:49:16,688 Kami akan melakukan hal yang sama di sini. 1048 00:49:16,688 --> 00:49:19,970 Dan pada kenyataannya, di kelima dan terakhir versi di sini, saya melakukan satu hal lain. 1049 00:49:19,970 --> 00:49:23,710 Anda bahkan dapat menggunakan dot dot, yang, lagi, hanya direktori induk. 1050 00:49:23,710 --> 00:49:28,260 Agar sadar keamanan bahkan lebih, karena jika saya melihat mendengarkan yang 1051 00:49:28,260 --> 00:49:32,450 di sini untuk kelima dan versi final, pemberitahuan bahwa saya memiliki satu direktori di sini disebut 1052 00:49:32,450 --> 00:49:35,180 publik, dan kemudian pada tingkat yang sama, sehingga untuk berbicara, 1053 00:49:35,180 --> 00:49:38,490 Aku punya mencakup dan template dan kemudian file teks readme. 1054 00:49:38,490 --> 00:49:41,130 >> Dan alasan saya sudah terstruktur rasanya this-- dan begitu banyak web 1055 00:49:41,130 --> 00:49:44,330 host, terutama mereka $ 5 yang bulan atau yang $ 10 per bulan, 1056 00:49:44,330 --> 00:49:47,170 jika Anda pernah memiliki salah satu dari ini services-- apa yang begitu banyak dari mereka 1057 00:49:47,170 --> 00:49:50,690 adalah mereka hanya mengharapkan Anda untuk membuang semua file Anda ke dalam satu direktori, 1058 00:49:50,690 --> 00:49:53,640 seperti yang kita lakukan sudah dengan Contoh pertama ini. 1059 00:49:53,640 --> 00:49:56,740 >> Tapi begitu Anda mulai membangun lebih situs canggih yang hanya menyimpan 1060 00:49:56,740 --> 00:50:00,480 Data yang Anda sayangi dan file Anda peduli, benar-benar mengatur hal-hal 1061 00:50:00,480 --> 00:50:05,060 benar dan dengan keamanan yang lebih kesadaran dalam pikiran dapat 1062 00:50:05,060 --> 00:50:07,927 kita mulai untuk mempertahankan terhadap semua teman-teman 1063 00:50:07,927 --> 00:50:10,135 bahwa Anda memiliki baik dalam atau di luar kelas ini yang, 1064 00:50:10,135 --> 00:50:12,510 segera setelah Anda mulai membuat program sendiri di web, 1065 00:50:12,510 --> 00:50:15,140 akan mulai memilih pada Anda dan pada mereka. 1066 00:50:15,140 --> 00:50:17,420 >> Dan kita akan melihat akhirnya pada desain ini. 1067 00:50:17,420 --> 00:50:20,010 Ini hanya gambar yang menggambarkan sebagai berikut. 1068 00:50:20,010 --> 00:50:22,897 Kita akan menempatkan semua kami pemrograman logika dalam satu atau lebih file, 1069 00:50:22,897 --> 00:50:25,230 dan kita akan hanya mulai memanggil orang-orang pengendali. 1070 00:50:25,230 --> 00:50:28,022 Ini adalah di mana otak website kami sebenarnya. 1071 00:50:28,022 --> 00:50:29,730 Maka kita akan memiliki pandangan, dan pandangan 1072 00:50:29,730 --> 00:50:32,480 adalah sesederhana hanya terpisah files-- disebut template, sering. 1073 00:50:32,480 --> 00:50:34,410 Mereka hanya memiliki estetika halaman saya, 1074 00:50:34,410 --> 00:50:37,020 apa yang saya ingin halaman untuk melihat like-- warna dan tata letak 1075 00:50:37,020 --> 00:50:38,870 dan posisi semua variabel. 1076 00:50:38,870 --> 00:50:41,120 >> Dan kemudian lebih menarik bahwa pada akhirnya kita akan sampai ke 1077 00:50:41,120 --> 00:50:45,420 adalah model, yang akan menjadi hanya kata kita menampar pada teknologi lainnya 1078 00:50:45,420 --> 00:50:47,771 yang kita bawa ke dalam gambar, seperti database yang sebenarnya, 1079 00:50:47,771 --> 00:50:49,520 sehingga ketika Anda ingin untuk menyimpan informasi, 1080 00:50:49,520 --> 00:50:52,140 Anda tidak hanya mengirim email untuk pengawas atau untuk diri sendiri, 1081 00:50:52,140 --> 00:50:57,350 Anda benar-benar menyimpannya dalam database menggunakan bahasa lain yang dikenal sebagai SQL. 1082 00:50:57,350 --> 00:51:00,450 Dan jadi kita akan pergi dari sini hari ini dan mengambil dengan ini pada hari Rabu 1083 00:51:00,450 --> 00:51:02,990 dan memperkenalkan database kemudian. 1084 00:51:02,990 --> 00:51:06,940 >> [MUSIC PLAYING] 1085 00:51:06,940 --> 00:54:24,555