1 00:00:00,000 --> 00:00:02,400 [Powered by Google Translate] [PHP Syntax] 2 00:00:02,400 --> 00:00:04,400 [Tommy MacWilliam] [Harvard University] 3 00:00:04,400 --> 00:00:07,400 [To je CS50.] [CS50.TV] 4 00:00:07,400 --> 00:00:10,080 >> V tem videu bomo uvesti PHP - 5 00:00:10,080 --> 00:00:12,820 eden od jezikov, ki jih boste uporabljali v CS50 6 00:00:12,820 --> 00:00:15,480 kot smo prehod na razvoj spletnih strani. 7 00:00:15,480 --> 00:00:19,250 PHP je kratica za PHP Hypertext Processor, 8 00:00:19,250 --> 00:00:23,440 ali PHP Hypertext Processor Hypertext Processor, 9 00:00:23,440 --> 00:00:24,880 in bom ustaviti. 10 00:00:24,880 --> 00:00:29,280 PHP je rekurzivni akronim, ki mislim, da je res super. 11 00:00:29,280 --> 00:00:32,020 >> Torej, kaj je napisal "Hello world" v PHP, 12 00:00:32,020 --> 00:00:37,240 ki bo nekoliko drugačen od "Hello World" v C, ki smo jih spoznali in ljubezen. 13 00:00:37,240 --> 00:00:40,330 Namesto ustvarjanja datoteko z imenom hello.c, 14 00:00:40,330 --> 00:00:42,990 bomo ustvarili hello.php. 15 00:00:42,990 --> 00:00:52,430 Vsi naši PHP kode bodo vsebovala med . 16 00:00:52,430 --> 00:00:56,160 Če bomo imeli PHP kodo, ki se nahaja 17 00:00:56,160 --> 00:00:59,140 zunaj teh ločila, da ne bo izvrševala. 18 00:00:59,140 --> 00:01:01,740 Lahko imamo, kot mnoge od teh PHP blokov 19 00:01:01,740 --> 00:01:05,090 saj želimo znotraj enega samega PHP datoteko. 20 00:01:05,090 --> 00:01:09,000 V PHP ni potrebe za glavno funkcijo. 21 00:01:09,000 --> 00:01:15,540 Namesto tega bo naša PHP koda teče v vrstnem redu, kot se pojavlja v našem PHP datoteki. 22 00:01:15,540 --> 00:01:20,970 Oba C in PHP imajo "printf" funkcijo za prikazovanje podatkov. 23 00:01:20,970 --> 00:01:27,270 Toda v PHP, nam ni treba, da # vključuje nobenih datotek z glavami, kot standardIO.h. 24 00:01:27,270 --> 00:01:31,830 To je zato, ker v PHP ne bomo zbiranje našo kodo. 25 00:01:31,830 --> 00:01:35,560 Ko smo pisali C kodo naš potek dela večinoma za odpiranje 26 00:01:35,560 --> 00:01:39,560 ena ali več. c ali. h datoteke, ki jih spreminjajo, jih urejajo, 27 00:01:39,560 --> 00:01:41,980 in teče nastalo binarno. 28 00:01:41,980 --> 00:01:45,800 Oglejte si video prevajalnike za več informacij o tem procesu. 29 00:01:45,800 --> 00:01:51,480 >> Za razliko od C, PHP je razlaga - ne zbirajo - jezik. 30 00:01:51,480 --> 00:01:54,080 To pomeni, da PHP kodo pišemo 31 00:01:54,080 --> 00:01:57,360 bo potekal po posebnem programu, se imenuje tolmač, 32 00:01:57,360 --> 00:02:00,440 kar bo izvršitev našo kodo. 33 00:02:00,440 --> 00:02:03,020 Teči našo PHP kodo, 34 00:02:03,020 --> 00:02:07,860 ga bomo poslali skupaj z PHP tolmača, ki bo ročaj njegovega izvajanja, 35 00:02:07,860 --> 00:02:11,260 namesto da bi jo pripravi za strojno kodo. 36 00:02:11,260 --> 00:02:13,450 Poglejmo tolmača v akciji. 37 00:02:13,450 --> 00:02:17,010 Bomo odprli terminal in zaženite ukaz PHP 38 00:02:17,010 --> 00:02:21,130 sledi poti k datoteki PHP Radi bi teči. 39 00:02:21,130 --> 00:02:25,690 Bomo rekli, "php hello.php". 40 00:02:25,690 --> 00:02:30,200 In gremo. Tam je izhod našega PHP program. 41 00:02:30,200 --> 00:02:33,460 Mi ni bilo treba zbrati našo datoteko PHP sploh. 42 00:02:33,460 --> 00:02:37,280 Namesto tega smo imeli še en program - PHP interpreter - 43 00:02:37,280 --> 00:02:40,070 izvršiti izvorno kodo, ki smo pisali. 44 00:02:40,070 --> 00:02:43,280 >> PHP more storiti veliko več kot samo printf. 45 00:02:43,280 --> 00:02:46,490 Dajmo napisati nekaj bolj zapletene PHP programe. 46 00:02:46,490 --> 00:02:52,240 Sintaksa za konstrukte - všeč, če drugega, medtem ko je za, in stikalo - 47 00:02:52,240 --> 00:02:55,440 je enako v PHP in C. 48 00:02:55,440 --> 00:03:01,180 Tako kot C, vsaka od teh konstruktov uporablja naramnice razmejiti svoje telo, 49 00:03:01,180 --> 00:03:04,420 in tako kot v C, vsaka linija pišemo 50 00:03:04,420 --> 00:03:06,830 se mora končati s podpičjem; 51 00:03:06,830 --> 00:03:10,700 Vendar pa so spremenljivke ravna nekoliko drugače PHP. 52 00:03:10,700 --> 00:03:15,630 Prvič, vse spremenljivke v PHP mora začeti s znak za dolar. 53 00:03:15,630 --> 00:03:18,700 Zdi se malo čudno na prvi, ampak boste dobili navadil. 54 00:03:18,700 --> 00:03:22,150 Drugič, PHP je ohlapno vnesli jezik 55 00:03:22,150 --> 00:03:24,570 kar pomeni, da vam ni treba izrecno navesti 56 00:03:24,570 --> 00:03:27,640 tip spremenljivke, ko jo ustvarite. 57 00:03:27,640 --> 00:03:33,430 Kje v C, kar bi morali reči, int x = 5; 58 00:03:33,430 --> 00:03:38,650 ali char y = ''; 59 00:03:39,250 --> 00:03:44,790 v PHP moremo preprosto reči, $ x = 5; 60 00:03:44,790 --> 00:03:48,930 in $ y = '. " 61 00:03:48,930 --> 00:03:52,360 Enako velja za funkcije. 62 00:03:52,360 --> 00:04:01,290 Namesto da bi rekel int f () {telo našega delovanja} 63 00:04:01,290 --> 00:04:12,160 v PHP bomo rekli funkcijo f () {telo našega delovanja}. 64 00:04:12,160 --> 00:04:17,579 Nam ni treba izrecno navesti vrsto vrnitev našega funkcije f. 65 00:04:17,579 --> 00:04:22,070 Funkcije v PHP, prav tako ne bi bilo treba vrniti isto vrsto 66 00:04:22,070 --> 00:04:23,840 vsakič, ko so usmrtili. 67 00:04:23,840 --> 00:04:27,940 Na primer, lahko bi napisal funkcijo, ki vrne false o napaki 68 00:04:27,940 --> 00:04:29,750 in še en tip, če mu uspe. 69 00:04:29,750 --> 00:04:33,060 >> To je lahko tudi nam pomagajo napisati več generičnih funkcij. 70 00:04:33,060 --> 00:04:35,710 Na primer, lahko bi napisal eno funkcijo add 71 00:04:35,710 --> 00:04:39,200 da se lahko vrne celo število, če so podani 2 cela 72 00:04:39,200 --> 00:04:41,250 ali plovec, če so na voljo 2 plovci. 73 00:04:41,250 --> 00:04:45,530 V C, bi morali napisati 2 ločeni funkciji, da to storijo. 74 00:04:45,530 --> 00:04:49,230 Medtem ko je v C, ki jih uporabljamo kazalce za povišico in godala, 75 00:04:49,230 --> 00:04:52,170 ne bomo mogli uporabljati kazalce v PHP. 76 00:04:52,170 --> 00:04:58,030 Namesto tega sta nizi in godala so vgrajene v vrstah v PHP. 77 00:04:58,030 --> 00:04:59,660 Oni so zgradili prav v jezik. 78 00:04:59,660 --> 00:05:02,270 Če želite ustvariti polje v PHP, lahko rečemo, 79 00:05:02,270 --> 00:05:11,280 $ = Array (1, 2, 3); 80 00:05:11,280 --> 00:05:19,400 ali bolj enostavno $ = [1, 2, 3]. 81 00:05:19,400 --> 00:05:24,990 Mi lahko kazalo v tem polju z enako sintakso, da smo se uporabljajo za iz C. 82 00:05:24,990 --> 00:05:31,780 Da bi dobili prvi del bomo rekli, $ [0];. 83 00:05:31,780 --> 00:05:36,290 PHP ima tudi vgrajeno podporo za asociativnih polj. 84 00:05:36,290 --> 00:05:41,460 Povezovalne matrike so prav tako kot hash tabele strukturo podatkov, ki smo jih že videli - 85 00:05:41,460 --> 00:05:44,060 jih preslikati ključ do vrednosti. 86 00:05:44,060 --> 00:05:46,070 >> Oglejmo si primer. 87 00:05:46,070 --> 00:06:14,740 Lahko rečemo, $ osebje = ["inštruktor" => "David", "tf" => "Tommy"];. 88 00:06:14,740 --> 00:06:21,020 Tukaj imam asociativno paleto z 2 ključema - inštruktorja in tf. 89 00:06:21,020 --> 00:06:24,910 Dvojne puščice, ali enako-več-kot, 90 00:06:24,910 --> 00:06:29,660 se uporablja za ločevanje ključ in temu ustrezno vrednostjo. 91 00:06:29,660 --> 00:06:41,830 Torej, vrednost $ osebje ["tf"] je niz "Tommy". 92 00:06:41,830 --> 00:06:44,430 Vrednosti asociativni niz - 93 00:06:44,430 --> 00:06:47,540 tako kot vsi drugi niz - lahko katerekoli vrste. 94 00:06:47,540 --> 00:07:23,370 Na primer, lahko bi rekli, $ osebje = ["inštruktor" => "David", "TFS" => ["Tommy", "rob"]]. 95 00:07:23,370 --> 00:07:27,810 Sedaj vrednost "TFS" je matrika. 96 00:07:27,810 --> 00:07:33,030 To pomeni, da se vrednosti znotraj ene povezovalne matrike lahko različnih tipov. 97 00:07:33,030 --> 00:07:36,750 >> PHP nizi tudi nimajo fiksne dolžine, 98 00:07:36,750 --> 00:07:40,200 tako da bomo lahko dodate ali odstranite elemente iz matrike. 99 00:07:40,200 --> 00:07:49,130 Recimo, imamo preprosto niz kot $ = [1, 2, 3]. 100 00:07:49,130 --> 00:07:51,860 Če želite dodati nov element v tem polju, 101 00:07:51,860 --> 00:07:57,160 lahko rečemo, $ [] = 4;. 102 00:07:57,160 --> 00:08:03,630 Sedaj naše matrika sestavljena iz štirih elementov - [1, 2, 3, 4]. 103 00:08:03,630 --> 00:08:06,980 Spomnimo se, da če bi želeli narediti kaj takega v C, 104 00:08:06,980 --> 00:08:09,610 mi bi morali dodeliti povsem nov niz, 105 00:08:09,610 --> 00:08:12,400 kopirati vsebino našega prvega niza, v to, 106 00:08:12,400 --> 00:08:15,870 in nato nastavite zadnji element novega niza do naše nove vrednosti. 107 00:08:15,870 --> 00:08:18,390 To je veliko lažje v PHP. 108 00:08:18,390 --> 00:08:21,230 Če je naša array je asociativna polja, 109 00:08:21,230 --> 00:08:24,810 smo lahko enostavno določiti nov ključ za ustvarjanje element 110 00:08:24,810 --> 00:08:26,250 če še ne obstaja. 111 00:08:26,250 --> 00:08:30,010 Če imamo prej paleto - $ osebje - 112 00:08:30,010 --> 00:08:38,679 lahko rečemo $ osebje ["skupaj"] = 3;. 113 00:08:38,679 --> 00:08:43,330 Zdaj imamo nov ključ z vrednostjo 3. 114 00:08:43,330 --> 00:08:46,460 >> Da bi dobili število elementov v matriki, 115 00:08:46,460 --> 00:08:48,230 lahko uporabite "grof" funkcijo. 116 00:08:48,230 --> 00:08:56,100 Če rečemo, štetje ($), ki bo imela vrednost 4. 117 00:08:56,100 --> 00:09:01,930 V PHP, bomo lahko ustvarili strune z eno-ali dvoposteljne ponudb, 118 00:09:01,930 --> 00:09:04,470 tako da sta od teh spremenljivk so strune. 119 00:09:04,470 --> 00:09:21,780 $ S1 = "string"; $ s2 = 'en niz. " 120 00:09:21,780 --> 00:09:23,920 Kakšna je razlika med tema dvema? 121 00:09:23,920 --> 00:09:26,950 No, to je precej pogosti, da želijo vključiti 122 00:09:26,950 --> 00:09:29,600 vrednost spremenljivke znotraj niza. 123 00:09:29,600 --> 00:09:34,390 Eden od načinov za to bi bila uporaba PHP dot operaterja, 124 00:09:34,390 --> 00:09:36,630 ki concatenates strune. 125 00:09:36,630 --> 00:09:38,680 Lahko bi naredil kaj takega - 126 00:09:38,680 --> 00:09:53,800 $ N = 5; $ e = 'n' $ n.;. 127 00:09:53,800 --> 00:09:57,430 Tu naša n spremenljivka je celo število. 128 00:09:57,430 --> 00:10:00,020 Toda, ko smo ga združite z vrvico, 129 00:10:00,020 --> 00:10:04,110 PHP bo samodejno pretvoriti v niz za nas. 130 00:10:04,110 --> 00:10:09,090 Ali pa lahko preprosto uporabite dvojne narekovaje postaviti spremenljivko v nizu sama. 131 00:10:09,090 --> 00:10:19,290 Lahko rečemo, $ s = "n $ n". 132 00:10:19,290 --> 00:10:24,040 Sedaj bo vrednost $ s je "n 5 '. 133 00:10:24,040 --> 00:10:34,250 Če bomo uporabili enojne narekovaje namesto, kot v $ e = 'n $ n'; 134 00:10:34,250 --> 00:10:39,670 vrednost s bo "n $ n ';. 135 00:10:39,670 --> 00:10:43,720 Vrednost n ne bo nadomestil če uporabimo apostrof, 136 00:10:43,720 --> 00:10:47,150 vendar pa bo, če bomo uporabili dvojne narekovaje. 137 00:10:47,150 --> 00:10:51,800 Če želimo uporabljati dvojne narekovaje, da se vključi vrednost matrike v nizu, 138 00:10:51,800 --> 00:10:55,060 bomo morali vključevati zavite oklepaje okoli matriki, kot je ta - 139 00:10:55,060 --> 00:11:14,470 $ S = "{$ osebje ['skupno']}." 140 00:11:14,470 --> 00:11:20,350 >> Poglejmo zdaj si na majhnem delčku v C in ga prevesti v PHP. 141 00:11:20,350 --> 00:11:25,410 Tukaj smo ustvariti funkcijo, ki natisne črke niza, 142 00:11:25,410 --> 00:11:27,310 en znak na vrstico. 143 00:11:27,310 --> 00:11:32,250 Naredimo isto stvar v PHP. 144 00:11:32,250 --> 00:11:36,530 Najprej bomo morali naše PHP ločila. 145 00:11:36,530 --> 00:11:39,000 Ko smo ustvarili naše delovanje, 146 00:11:39,000 --> 00:11:42,740 nam ni treba navesti svoje vrste vrnitvi ali vrsto njene trditve. 147 00:11:42,740 --> 00:11:46,890 Naše s spremenljivo mora začeti tudi z znak za dolar. 148 00:11:46,890 --> 00:11:51,590 PHP funkcija strlen nam daje dolžino niza, 149 00:11:51,590 --> 00:11:55,660 tako kot C? strlen nam daje dolžino niza. 150 00:11:55,660 --> 00:11:59,060 Pod pokrovom, čeprav te funkcije dejansko malo drugače 151 00:11:59,060 --> 00:12:03,010 saj niz je vgrajeno v tip v PHP. 152 00:12:03,010 --> 00:12:06,930 Sintaksa našega "za" zanke je enaka. 153 00:12:06,930 --> 00:12:13,530 >> V PHP, lahko uporabite tudi matrično zapis za dostop do znakov v nizu. 154 00:12:13,530 --> 00:12:19,350 Mi lahko sedaj uporabite funkcijo tiskanja natisniti vsako črko niza. 155 00:12:19,350 --> 00:12:23,080 S funkcijo tiskanja PHP, nam ni treba skrbeti za ograde - 156 00:12:23,080 --> 00:12:28,200 kot% d in% c - ko želimo natisniti spremenljivko, ki ni niz. 157 00:12:28,200 --> 00:12:33,590 Namesto tega lahko preprosto prenese spremenljivke katere koli vrste za funkcijo tiskanja 158 00:12:33,590 --> 00:12:36,810 in se pretvori v niz in prikazani. 159 00:12:36,810 --> 00:12:43,430 In to je to! Poglejmo sedaj vodijo našo datoteko z "php print.php". 160 00:12:43,430 --> 00:12:48,160 In tam je izhod smo videli iz našega programa C. 161 00:12:48,160 --> 00:12:52,120 >> PHP podpira tudi konstrukt, imenovan "foreach" zanka. 162 00:12:52,120 --> 00:12:54,800 V "foreach" zanka je tako kot "za" zanko, 163 00:12:54,800 --> 00:12:59,080 vendar dodaja nekaj skladenjsko sladkorja, da bi stvari bolj berljiva. 164 00:12:59,080 --> 00:13:03,690 Tukaj smo ustvariti novo vrsto imenovano "$ niz". 165 00:13:03,690 --> 00:13:10,090 Zdaj lahko rečemo, foreach ($ niz kot $ številko), 166 00:13:10,090 --> 00:13:12,390 in smo lahko natisnete $ številko. 167 00:13:12,390 --> 00:13:20,650 Ko smo teči ta slika - php foreach.php--vidimo vsako številko v svoji vrstici. 168 00:13:20,650 --> 00:13:26,700 >> Ko smo pisali C kodo, je bilo pogosto koristno organizirati našo kodo v ločenih datotekah. 169 00:13:26,700 --> 00:13:29,170 V PHP, da lahko storijo enako stvar. 170 00:13:29,170 --> 00:13:33,870 Recimo, da imamo nekaj funkcij v datoteko z imenom math.php. 171 00:13:33,870 --> 00:13:38,900 Če želim uporabiti te funkcije v drugi PHP datoteki, kot calculator.php, 172 00:13:38,900 --> 00:13:44,110 Lahko uporabite PHP require_once () funkcijo. 173 00:13:44,110 --> 00:13:47,110 Require_once je tako kot # include. 174 00:13:47,110 --> 00:13:52,050 Ko so ga dajali pot do datoteke, bo v bistvu kopiranje in lepljenje vsebine 175 00:13:52,050 --> 00:13:54,930 te datoteke v trenutni datoteki. 176 00:13:54,930 --> 00:14:00,150 Require_once zagotavlja, da je vsaka datoteka vključena v trenutno datoteko samo enkrat, 177 00:14:00,150 --> 00:14:05,680 kar je lahko koristno, če imate veliko zbirko PHP datotek, ki potrebujejo drug drugega. 178 00:14:05,680 --> 00:14:07,750 Oglejmo si primer. 179 00:14:07,750 --> 00:14:12,620 Tukaj imamo zbirko funkcij, ki bi jih rad uporabiti v druge datoteke. 180 00:14:12,620 --> 00:14:14,990 Oglejmo si, kako jih lahko uporabite. 181 00:14:14,990 --> 00:14:20,700 Na progi 3, smo zahtevajo math.php. 182 00:14:20,700 --> 00:14:27,170 "__DIR__" Je posebna konstanta, ki predstavlja trenutni imenik 183 00:14:27,170 --> 00:14:33,440 saj so math.php in calculator.php nahaja v istem imeniku. 184 00:14:33,440 --> 00:14:38,010 Potem bomo potrebovali math.php, lahko uporabite funkcije 185 00:14:38,010 --> 00:14:41,690  kot da smo jih opredeljeno v calculator.php. 186 00:14:41,690 --> 00:14:47,440 Oglejmo teči to s "php calculator.php". Super! 187 00:14:47,440 --> 00:14:50,880 >> To je za našo uvodu skladnje PHP. 188 00:14:50,880 --> 00:14:53,700 Če želite izvedeti več, si oglejte PHP.net. 189 00:14:53,700 --> 00:14:59,470 PHP ima veliko vgrajenih funkcij, in na srečo njegovo dokumentacijo je res super. 190 00:14:59,470 --> 00:15:02,680 Moje ime je Tommy, in to je CS50. 191 00:15:02,680 --> 00:15:04,680 [CS50.TV] 192 00:15:04,680 --> 00:15:14,000 >> ... Nosilec, mi je zmanjkalo prostora. Prekleto! To je zadnji video, kjer sem uporabo velikih besed v kodi.