1 00:00:00,000 --> 00:00:02,400 [Powered by Google Translate] [Syntax PHP] 2 00:00:02,400 --> 00:00:04,400 [Tommy MacWilliam] [Universiti Harvard] 3 00:00:04,400 --> 00:00:07,400 [Ini adalah CS50.] [CS50.TV] 4 00:00:07,400 --> 00:00:10,080 >> Dalam video ini, kami akan memperkenalkan PHP - 5 00:00:10,080 --> 00:00:12,820 salah satu bahasa yang kita akan menggunakan dalam CS50 6 00:00:12,820 --> 00:00:15,480 seperti yang kita beralih kepada pembangunan web. 7 00:00:15,480 --> 00:00:19,250 PHP adalah singkatan bagi PHP Hypertext Processor, 8 00:00:19,250 --> 00:00:23,440 PHP atau Hypertext Processor Hypertext Processor, 9 00:00:23,440 --> 00:00:24,880 dan saya akan berhenti di situ. 10 00:00:24,880 --> 00:00:29,280 PHP adalah singkatan rekursi, yang saya fikir adalah benar-benar hebat. 11 00:00:29,280 --> 00:00:32,020 >> Jadi, mari kita menulis 'hello dunia' dalam PHP, 12 00:00:32,020 --> 00:00:37,240 yang akan menjadi sedikit berbeza daripada 'hello dunia dalam C yang kita telah datang untuk mengetahui dan cinta. 13 00:00:37,240 --> 00:00:40,330 Sebaliknya mewujudkan fail yang dipanggil hello.c, 14 00:00:40,330 --> 00:00:42,990 kita akan mewujudkan hello.php. 15 00:00:42,990 --> 00:00:52,430 Semua kod PHP kami akan terkandung di antara . 16 00:00:52,430 --> 00:00:56,160 Jika kita mempunyai apa-apa kod PHP yang terletak 17 00:00:56,160 --> 00:00:59,140 luar ini pembatas, ia tidak akan melaksanakan. 18 00:00:59,140 --> 00:01:01,740 Kita boleh mempunyai sebagai banyak blok-blok PHP 19 00:01:01,740 --> 00:01:05,090 seperti yang kita mahu di dalam fail PHP tunggal. 20 00:01:05,090 --> 00:01:09,000 Dalam PHP tidak perlu untuk fungsi utama. 21 00:01:09,000 --> 00:01:15,540 Sebaliknya, kod PHP kami akan berjalan dalam perintah itu ia muncul dalam fail PHP kita. 22 00:01:15,540 --> 00:01:20,970 Kedua-dua C dan PHP mempunyai fungsi 'printf' untuk keluarkan data. 23 00:01:20,970 --> 00:01:27,270 Tetapi dalam PHP, kita tidak perlu ke # termasuk mana-mana fail header seperti standardIO.h. 24 00:01:27,270 --> 00:01:31,830 Ini kerana dalam PHP kita tidak akan menyusun kod kami. 25 00:01:31,830 --> 00:01:35,560 Apabila kita menulis kod C kerja kita cenderung untuk membuka 26 00:01:35,560 --> 00:01:39,560 satu atau lebih. c atau. h fail, menukar mereka, menyusun mereka, 27 00:01:39,560 --> 00:01:41,980 dan berjalan perduaan yang dihasilkan. 28 00:01:41,980 --> 00:01:45,800 Daftar keluar video Compilers untuk maklumat lebih lanjut mengenai proses ini. 29 00:01:45,800 --> 00:01:51,480 >> Tidak seperti C, PHP adalah ditafsirkan - bahasa - dan bukannya dikumpulkan. 30 00:01:51,480 --> 00:01:54,080 Ini bermakna bahawa kod PHP yang kita menulis 31 00:01:54,080 --> 00:01:57,360 akan dijalankan melalui satu program khas yang dikenali sebagai jurubahasa, 32 00:01:57,360 --> 00:02:00,440 yang seterusnya akan melaksanakan kod kami. 33 00:02:00,440 --> 00:02:03,020 Untuk menjalankan kod PHP kami, 34 00:02:03,020 --> 00:02:07,860 kami akan menghantar bersama-sama dengan jurubahasa PHP yang akan mengendalikan pelaksanaannya, 35 00:02:07,860 --> 00:02:11,260 bukannya menyusun kepada kod mesin. 36 00:02:11,260 --> 00:02:13,450 Mari kita lihat jurubahasa dalam tindakan. 37 00:02:13,450 --> 00:02:17,010 Kami akan membuka terminal dan menjalankan arahan PHP 38 00:02:17,010 --> 00:02:21,130 diikuti dengan laluan kepada fail PHP kita ingin jalankan. 39 00:02:21,130 --> 00:02:25,690 Kami akan berkata, 'php hello.php. 40 00:02:25,690 --> 00:02:30,200 Dan ada kita pergi. Ada pengeluaran program PHP kami. 41 00:02:30,200 --> 00:02:33,460 Kita tidak perlu untuk menyusun fail PHP kami di semua. 42 00:02:33,460 --> 00:02:37,280 Sebaliknya, kita mempunyai satu lagi program - jurubahasa PHP - 43 00:02:37,280 --> 00:02:40,070 melaksanakan kod sumber yang kita menulis. 44 00:02:40,070 --> 00:02:43,280 >> PHP boleh melakukan lebih daripada sekadar printf. 45 00:02:43,280 --> 00:02:46,490 Mari kita menulis beberapa program PHP yang lebih kompleks. 46 00:02:46,490 --> 00:02:52,240 Syntax untuk membina - seperti jika, lain, manakala, bagi, dan switch - 47 00:02:52,240 --> 00:02:55,440 adalah sama dalam PHP dan C. 48 00:02:55,440 --> 00:03:01,180 Sama seperti C, masing-masing membina menggunakan penyokong gigi untuk menandakan badan mereka, 49 00:03:01,180 --> 00:03:04,420 dan sama seperti dalam C, setiap baris kita menulis 50 00:03:04,420 --> 00:03:06,830 mesti berakhir dengan koma bernoktah; 51 00:03:06,830 --> 00:03:10,700 Walau bagaimanapun, pemboleh ubah dikendalikan sedikit berbeza dalam PHP. 52 00:03:10,700 --> 00:03:15,630 Pertama, semua pembolehubah dalam PHP mesti bermula dengan tanda dolar. 53 00:03:15,630 --> 00:03:18,700 Ia seolah-olah sedikit pelik pada mulanya, tetapi anda akan mendapat digunakan untuk ia. 54 00:03:18,700 --> 00:03:22,150 Kedua, PHP adalah bahasa yang longgar ditaip 55 00:03:22,150 --> 00:03:24,570 yang bermakna anda tidak perlu jelas menyenaraikan 56 00:03:24,570 --> 00:03:27,640 jenis yang berubah-ubah apabila anda membuat ia. 57 00:03:27,640 --> 00:03:33,430 Jika dalam mana-C anda akan perlu untuk mengatakan int x = 5; 58 00:03:33,430 --> 00:03:38,650 atau char y = 'a'; 59 00:03:39,250 --> 00:03:44,790 dalam PHP kita hanya boleh mengatakan $ x = 5; 60 00:03:44,790 --> 00:03:48,930 dan $ y = 'a';. 61 00:03:48,930 --> 00:03:52,360 Begitu juga dengan fungsi. 62 00:03:52,360 --> 00:04:01,290 Dan bukannya mengatakan f int () {badan fungsi kami}, 63 00:04:01,290 --> 00:04:12,160 dalam PHP kita akan mengatakan fungsi f () {badan fungsi kita}. 64 00:04:12,160 --> 00:04:17,579 Kami tidak perlu dengan jelas menyatakan jenis pulangan fungsi f kami. 65 00:04:17,579 --> 00:04:22,070 Fungsi dalam PHP juga tidak perlu untuk kembali jenis yang sama 66 00:04:22,070 --> 00:04:23,840 setiap kali mereka dilaksanakan. 67 00:04:23,840 --> 00:04:27,940 Sebagai contoh, kita boleh menulis fungsi yang mengembalikan palsu mengenai kesilapan 68 00:04:27,940 --> 00:04:29,750 dan jenis yang lain jika ia berjaya. 69 00:04:29,750 --> 00:04:33,060 >> Ini juga boleh membantu kita menulis fungsi yang lebih generik. 70 00:04:33,060 --> 00:04:35,710 Sebagai contoh, kita boleh menulis fungsi add tunggal 71 00:04:35,710 --> 00:04:39,200 yang boleh mengembalikan integer jika 2 integer diberi 72 00:04:39,200 --> 00:04:41,250 atau terapung jika 2 terapung diberikan. 73 00:04:41,250 --> 00:04:45,530 Dalam C, kita akan perlu menulis 2 fungsi berasingan untuk melakukan ini. 74 00:04:45,530 --> 00:04:49,230 Ketika di C kita menggunakan petunjuk untuk menaikkan dan tali, 75 00:04:49,230 --> 00:04:52,170 kita tidak akan dapat menggunakan petunjuk dalam PHP. 76 00:04:52,170 --> 00:04:58,030 Sebaliknya, kedua-dua tatasusunan dan rentetan adalah terbina dalam jenis dalam PHP. 77 00:04:58,030 --> 00:04:59,660 Mereka dibina terus ke dalam bahasa. 78 00:04:59,660 --> 00:05:02,270 Untuk mewujudkan pelbagai dalam PHP kita boleh katakan, 79 00:05:02,270 --> 00:05:11,280 $ A array = (1, 2, 3); 80 00:05:11,280 --> 00:05:19,400 atau lebih mudah $ a = [1, 2, 3];. 81 00:05:19,400 --> 00:05:24,990 Kami boleh indeks ke pelbagai ini menggunakan sintaks yang sama yang kami digunakan untuk dari C. 82 00:05:24,990 --> 00:05:31,780 Untuk mendapatkan elemen pertama kita akan berkata, $ a [0];. 83 00:05:31,780 --> 00:05:36,290 PHP juga mempunyai built-in sokongan untuk barisan bersekutu. 84 00:05:36,290 --> 00:05:41,460 Array bersekutu adalah seperti jadual hash struktur data yang kita telah melihat - 85 00:05:41,460 --> 00:05:44,060 mereka merancang kunci untuk nilai. 86 00:05:44,060 --> 00:05:46,070 >> Mari kita lihat satu contoh. 87 00:05:46,070 --> 00:06:14,740 Kita boleh berkata, $ kakitangan = ["pengajar" => "lagu", "tf" => "Tommy"];. 88 00:06:14,740 --> 00:06:21,020 Di sini, saya mempunyai pelbagai bersekutu dengan 2 kunci - pengajar dan tf. 89 00:06:21,020 --> 00:06:24,910 Dua anak panah, atau sama-lebih-daripada, 90 00:06:24,910 --> 00:06:29,660 digunakan untuk memisahkan kunci dan nilai yang berkaitan. 91 00:06:29,660 --> 00:06:41,830 Jadi, nilai $ kakitangan ["tf"] adalah rentetan "tommy". 92 00:06:41,830 --> 00:06:44,430 Nilai-nilai pelbagai bersekutu - 93 00:06:44,430 --> 00:06:47,540 sama seperti mana-mana pelbagai lain - boleh menjadi apa-apa jenis. 94 00:06:47,540 --> 00:07:23,370 Sebagai contoh, kita boleh katakan, $ kakitangan = ["pengajar" => "lagu", "TFS" => ["Tommy", "merompak"]];. 95 00:07:23,370 --> 00:07:27,810 Sekarang nilai 'TFS' adalah array. 96 00:07:27,810 --> 00:07:33,030 Ini bermakna bahawa nilai-nilai dalam satu array bersekutu boleh jenis yang berbeza. 97 00:07:33,030 --> 00:07:36,750 >> Tatasusunan PHP juga tidak mempunyai tempoh masa yang tetap, 98 00:07:36,750 --> 00:07:40,200 supaya kita boleh menambah atau membuang unsur-unsur dari array. 99 00:07:40,200 --> 00:07:49,130 Katakan kita mempunyai lokasi yang mudah seperti $ a = [1, 2, 3];. 100 00:07:49,130 --> 00:07:51,860 Untuk menambah elemen baru kepada pelbagai ini, 101 00:07:51,860 --> 00:07:57,160 kita boleh katakan, $ a [] = 4;. 102 00:07:57,160 --> 00:08:03,630 Sekarang pelbagai kami terdiri daripada empat elemen - [1, 2, 3, 4]. 103 00:08:03,630 --> 00:08:06,980 Ingat bahawa jika kita mahu melakukan sesuatu seperti ini di C, 104 00:08:06,980 --> 00:08:09,610 kita akan mempunyai untuk memperuntukkan pelbagai baru, 105 00:08:09,610 --> 00:08:12,400 menyalin kandungan array pertama kami ke dalamnya, 106 00:08:12,400 --> 00:08:15,870 dan kemudian menetapkan elemen terakhir array baru kepada nilai baru kami. 107 00:08:15,870 --> 00:08:18,390 Ini adalah lebih mudah dalam PHP. 108 00:08:18,390 --> 00:08:21,230 Jika pelbagai kami adalah pelbagai bersekutu, 109 00:08:21,230 --> 00:08:24,810 kita hanya boleh menentukan kunci baru untuk mewujudkan unsur 110 00:08:24,810 --> 00:08:26,250 jika ia tidak wujud lagi. 111 00:08:26,250 --> 00:08:30,010 Jika kita mempunyai pelbagai awal kami - $ staff - 112 00:08:30,010 --> 00:08:38,679 kita boleh mengatakan $ kakitangan ["total"] = 3;. 113 00:08:38,679 --> 00:08:43,330 Sekarang kita mempunyai kunci baru dengan nilai 3. 114 00:08:43,330 --> 00:08:46,460 >> Untuk mendapatkan bilangan elemen dalam array, 115 00:08:46,460 --> 00:08:48,230 kita boleh menggunakan 'count' berfungsi. 116 00:08:48,230 --> 00:08:56,100 Jika kita katakan, mengira ($ a);, yang akan mempunyai nilai 4. 117 00:08:56,100 --> 00:09:01,930 Dalam PHP, kita boleh mewujudkan rentetan menggunakan tanda petikan berganda atau tunggal, 118 00:09:01,930 --> 00:09:04,470 supaya kedua-dua pembolehubah ini adalah rentetan. 119 00:09:04,470 --> 00:09:21,780 $ S1 = "rentetan"; $ s2 = 'satu lagi rentetan';. 120 00:09:21,780 --> 00:09:23,920 Apakah perbezaan di antara kedua-dua? 121 00:09:23,920 --> 00:09:26,950 Nah, ia agak biasa untuk mahu termasuk 122 00:09:26,950 --> 00:09:29,600 nilai dalam pembolehubah rentetan. 123 00:09:29,600 --> 00:09:34,390 Salah satu cara untuk melakukan ini adalah dengan menggunakan operator dot PHP ini, 124 00:09:34,390 --> 00:09:36,630 yang concatenates tali. 125 00:09:36,630 --> 00:09:38,680 Kita boleh melakukan sesuatu seperti ini - 126 00:09:38,680 --> 00:09:53,800 $ N = 5; $ s = 'n' $ n.;. 127 00:09:53,800 --> 00:09:57,430 Berikut n ubah kami adalah integer. 128 00:09:57,430 --> 00:10:00,020 Tetapi apabila kita concatenate dengan tali, 129 00:10:00,020 --> 00:10:04,110 PHP secara automatik akan menukar kepada rentetan untuk kita. 130 00:10:04,110 --> 00:10:09,090 Atau kita hanya boleh menggunakan tanda petikan berganda untuk meletakkan berubah-ubah ke dalam tali itu sendiri. 131 00:10:09,090 --> 00:10:19,290 Kita boleh berkata, $ s = "n $ n";. 132 00:10:19,290 --> 00:10:24,040 Sekarang nilai $ s akan menjadi 'n adalah 5. 133 00:10:24,040 --> 00:10:34,250 Jika kita menggunakan tanda petikan tunggal sebaliknya, seperti dalam $ s = 'n $ n'; 134 00:10:34,250 --> 00:10:39,670 nilai s akan 'n $ n';. 135 00:10:39,670 --> 00:10:43,720 Nilai n tidak akan diganti jika kita menggunakan tanda petikan tunggal, 136 00:10:43,720 --> 00:10:47,150 tetapi ia akan menjadi jika kita menggunakan tanda petikan berganda. 137 00:10:47,150 --> 00:10:51,800 Jika kita mahu menggunakan tanda petikan berganda termasuk nilai pelbagai dalam tali, 138 00:10:51,800 --> 00:10:55,060 kita perlu termasuk pendakap kerinting sekitar pelbagai, seperti ini - 139 00:10:55,060 --> 00:11:14,470 $ S = "{$ kakitangan ['jumlah']}";. 140 00:11:14,470 --> 00:11:20,350 >> Sekarang mari kita lihat pada potongan kecil di C dan menterjemahkannya kepada PHP. 141 00:11:20,350 --> 00:11:25,410 Di sini, kami mewujudkan fungsi yang mencetak keluar surat tali, 142 00:11:25,410 --> 00:11:27,310 satu watak setiap baris. 143 00:11:27,310 --> 00:11:32,250 Mari kita buat perkara yang sama dalam PHP. 144 00:11:32,250 --> 00:11:36,530 Pertama, kita perlu pembatas PHP kami. 145 00:11:36,530 --> 00:11:39,000 Apabila kita mewujudkan fungsi kami, 146 00:11:39,000 --> 00:11:42,740 kita tidak perlu untuk menentukan jenis pulangan atau jenis hujahnya. 147 00:11:42,740 --> 00:11:46,890 Kita ubah s juga mesti bermula dengan tanda dolar. 148 00:11:46,890 --> 00:11:51,590 Strlen fungsi PHP yang memberikan kita panjang tali, 149 00:11:51,590 --> 00:11:55,660 seperti C strlen memberikan kita panjang rentetan. 150 00:11:55,660 --> 00:11:59,060 Di bawah hud walaupun, fungsi-fungsi ini sebenarnya agak berbeza 151 00:11:59,060 --> 00:12:03,010 sejak rentetan adalah sejenis terbina dalam dalam PHP. 152 00:12:03,010 --> 00:12:06,930 Sintaks kami 'for' adalah sama. 153 00:12:06,930 --> 00:12:13,530 >> Dalam PHP, kita juga boleh menggunakan pelbagai notasi untuk mengakses watak rentetan. 154 00:12:13,530 --> 00:12:19,350 Kita kini boleh menggunakan fungsi cetak untuk mencetak setiap huruf tali. 155 00:12:19,350 --> 00:12:23,080 Dengan fungsi cetak PHP, kita tidak perlu bimbang tentang ruang letak - 156 00:12:23,080 --> 00:12:28,200 seperti% d% c atau - apabila kita hendak mencetak ubah yang tidak rentetan. 157 00:12:28,200 --> 00:12:33,590 Sebaliknya, kita hanya boleh lulus ubah apa-apa jenis untuk fungsi cetak, 158 00:12:33,590 --> 00:12:36,810 dan ia akan ditukar kepada rentetan dan dipaparkan. 159 00:12:36,810 --> 00:12:43,430 Dan itu sahaja! Mari kita sekarang menjalankan fail kami dengan 'php print.php. 160 00:12:43,430 --> 00:12:48,160 Dan ada output yang kita dapati daripada program C kami. 161 00:12:48,160 --> 00:12:52,120 >> PHP juga menyokong gagasan yang dipanggil 'foreach' gelung. 162 00:12:52,120 --> 00:12:54,800 Gelung 'foreach' adalah sama seperti 'untuk' gelung, 163 00:12:54,800 --> 00:12:59,080 tetapi ia menambahkan sedikit gula sintaktik untuk membuat perkara yang lebih mudah dibaca. 164 00:12:59,080 --> 00:13:03,690 Di sini, kami mencipta pelbagai baru yang dikenali sebagai '$ array'. 165 00:13:03,690 --> 00:13:10,090 Sekarang kita boleh berkata, foreach ($ array sebagai $ nombor), 166 00:13:10,090 --> 00:13:12,390 dan kita boleh mencetak $ nombor. 167 00:13:12,390 --> 00:13:20,650 Apabila kita menjalankan fail ini - php foreach.php--kita dapat melihat setiap nombor pada baris sendiri. 168 00:13:20,650 --> 00:13:26,700 >> Apabila kita menulis kod C, ia sering berguna untuk mengatur kod kita ke dalam fail berasingan. 169 00:13:26,700 --> 00:13:29,170 Dalam PHP, kita boleh melakukan perkara yang sama. 170 00:13:29,170 --> 00:13:33,870 Katakan kita mempunyai beberapa fungsi dalam fail yang dipanggil math.php. 171 00:13:33,870 --> 00:13:38,900 Jika saya mahu menggunakan fungsi-fungsi dalam fail PHP yang lain, seperti calculator.php, 172 00:13:38,900 --> 00:13:44,110 Saya boleh menggunakan require_once PHP ini () fungsi. 173 00:13:44,110 --> 00:13:47,110 Require_once adalah sama seperti # include. 174 00:13:47,110 --> 00:13:52,050 Apabila diberi laluan untuk fail, ia pada dasarnya akan menyalin kandungan 175 00:13:52,050 --> 00:13:54,930 fail itu ke dalam fail semasa. 176 00:13:54,930 --> 00:14:00,150 Require_once memastikan setiap fail yang dimasukkan ke dalam fail semasa sekali sahaja, 177 00:14:00,150 --> 00:14:05,680 yang boleh membantu jika anda mempunyai koleksi besar fail PHP memerlukan satu sama lain. 178 00:14:05,680 --> 00:14:07,750 Mari kita lihat satu contoh. 179 00:14:07,750 --> 00:14:12,620 Di sini kita mempunyai koleksi fungsi yang saya ingin gunakan dalam fail lain. 180 00:14:12,620 --> 00:14:14,990 Mari kita lihat bagaimana kita boleh menggunakan mereka. 181 00:14:14,990 --> 00:14:20,700 On line 3, kita memerlukan math.php. 182 00:14:20,700 --> 00:14:27,170 The '__DIR__' adalah berterusan khas mewakili direktori semasa 183 00:14:27,170 --> 00:14:33,440 sejak math.php calculator.php dan terletak dalam direktori yang sama. 184 00:14:33,440 --> 00:14:38,010 Selepas kita memerlukan math.php, kita boleh menggunakan fungsi-fungsi 185 00:14:38,010 --> 00:14:41,690  seolah-olah kita telah ditakrifkan mereka dalam calculator.php. 186 00:14:41,690 --> 00:14:47,440 Mari kita berjalan ini dengan 'php calculator.php. Hebat! 187 00:14:47,440 --> 00:14:50,880 >> Itu sahaja untuk pengenalan kami untuk sintaks PHP ini. 188 00:14:50,880 --> 00:14:53,700 Untuk mengetahui lebih lanjut, lihat PHP.net. 189 00:14:53,700 --> 00:14:59,470 PHP mempunyai banyak fungsi terbina dalam, dan bernasib baik kerana dokumentasi adalah benar-benar hebat. 190 00:14:59,470 --> 00:15:02,680 Nama saya Tommy, dan ini adalah CS50. 191 00:15:02,680 --> 00:15:04,680 [CS50.TV] 192 00:15:04,680 --> 00:15:14,000 >> ... Kurungan, saya keluar dari bilik. Celaka! Ini adalah video yang lepas di mana saya menggunakan perkataan yang besar di dalam kod.