1 00:00:00,000 --> 00:00:02,400 [Powered by Google Translate] [PHP syntaxe] 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 tomto videu si představíme PHP - 5 00:00:10,080 --> 00:00:12,820 v jednom z jazyků, které budeme používat v CS50 6 00:00:12,820 --> 00:00:15,480 jak jsme přechod na vývoj webových aplikací. 7 00:00:15,480 --> 00:00:19,250 PHP je zkratka pro PHP Hypertext Processor, 8 00:00:19,250 --> 00:00:23,440 nebo PHP Hypertext Hypertext Procesor Procesor, 9 00:00:23,440 --> 00:00:24,880 a já tam zastavit. 10 00:00:24,880 --> 00:00:29,280 PHP je rekurzivní zkratka, což myslím, že je opravdu úžasné. 11 00:00:29,280 --> 00:00:32,020 >> Takže, pojďme napsat "hello world" v PHP, 12 00:00:32,020 --> 00:00:37,240 který bude trochu jiný, než "Hello World" v C, které jsme poznali a milují. 13 00:00:37,240 --> 00:00:40,330 Namísto vytváření souboru s názvem hello.c, 14 00:00:40,330 --> 00:00:42,990 budeme vytvářet hello.php. 15 00:00:42,990 --> 00:00:52,430 Všechny naše PHP kódu budou obsaženy mezi . 16 00:00:52,430 --> 00:00:56,160 Pokud budeme mít PHP kód, který je umístěn 17 00:00:56,160 --> 00:00:59,140 mimo tyto oddělovače, nebude to provést. 18 00:00:59,140 --> 00:01:01,740 Můžeme mít tolik, kolik z těchto bloků PHP 19 00:01:01,740 --> 00:01:05,090 jak chceme v jediném souboru PHP. 20 00:01:05,090 --> 00:01:09,000 V PHP není potřeba hlavní funkce. 21 00:01:09,000 --> 00:01:15,540 Namísto toho bude náš PHP kód se spustí v pořadí, v jakém se objeví v našem souboru PHP. 22 00:01:15,540 --> 00:01:20,970 Oba C a PHP mají "printf" funkce pro výstup dat. 23 00:01:20,970 --> 00:01:27,270 Ale v PHP, nepotřebujeme # include všechny hlavičkové soubory, jako standardIO.h. 24 00:01:27,270 --> 00:01:31,830 To proto, že v PHP nebudeme sestavování náš kód. 25 00:01:31,830 --> 00:01:35,560 Když jsme psali kód v C našeho workflow inklinoval být otevření 26 00:01:35,560 --> 00:01:39,560 jeden nebo více. C nebo. h soubory, mění, jejich sestavování, 27 00:01:39,560 --> 00:01:41,980 a běží výsledný binární. 28 00:01:41,980 --> 00:01:45,800 Podívejte se na video, kompilátory pro více informací o tomto procesu. 29 00:01:45,800 --> 00:01:51,480 >> Na rozdíl od C, PHP je interpretovaný - spíše než zkompilovaný - jazyk. 30 00:01:51,480 --> 00:01:54,080 To znamená, že PHP kód budeme psát 31 00:01:54,080 --> 00:01:57,360 bude probíhat speciální program nazvaný interpret, 32 00:01:57,360 --> 00:02:00,440 která bude zase spustit náš kód. 33 00:02:00,440 --> 00:02:03,020 Chcete-li spustit náš PHP kód, 34 00:02:03,020 --> 00:02:07,860 budeme to pošlu do PHP interpretru, který bude mít na starosti jeho plnění, 35 00:02:07,860 --> 00:02:11,260 spíše než sestavování jej do strojového kódu. 36 00:02:11,260 --> 00:02:13,450 Pojďme se podívat na tlumočníka v akci. 37 00:02:13,450 --> 00:02:17,010 Budeme otevřít terminál a spusťte příkaz PHP 38 00:02:17,010 --> 00:02:21,130 následovaný cestou k souboru PHP bychom chtěli spustit. 39 00:02:21,130 --> 00:02:25,690 Budeme říkat, 'php hello.php ". 40 00:02:25,690 --> 00:02:30,200 A jdeme na to. K dispozici je výstup našeho PHP programu. 41 00:02:30,200 --> 00:02:33,460 Nepotřebovali jsme zkompilovat naši soubor PHP vůbec. 42 00:02:33,460 --> 00:02:37,280 Místo toho jsme měli jiný program - interpret PHP - 43 00:02:37,280 --> 00:02:40,070 provedení zdrojových že jsme napsali. 44 00:02:40,070 --> 00:02:43,280 >> PHP můžete dělat mnohem víc, než jen printf. 45 00:02:43,280 --> 00:02:46,490 Pojďme napsat nějaké složitější PHP programy. 46 00:02:46,490 --> 00:02:52,240 Syntaxe pro konstrukce - jako if, else, while, for, a switch - 47 00:02:52,240 --> 00:02:55,440 je stejná v PHP a C 48 00:02:55,440 --> 00:03:01,180 Stejně jako C, každý z těchto konstruktů používá rovnátka vymezit své tělo, 49 00:03:01,180 --> 00:03:04,420 a stejně jako v C, každý řádek napíšeme 50 00:03:04,420 --> 00:03:06,830 musí končit středníkem; 51 00:03:06,830 --> 00:03:10,700 Nicméně proměnné jsou řešeny trochu jinak v PHP. 52 00:03:10,700 --> 00:03:15,630 Za prvé, musí být všechny proměnné v PHP začíná znakem dolaru. 53 00:03:15,630 --> 00:03:18,700 Zdá se, že to trochu divné na první, ale zvyknete si na to. 54 00:03:18,700 --> 00:03:22,150 Za druhé, PHP je volně typový jazyk, 55 00:03:22,150 --> 00:03:24,570 což znamená, že nemusíte být výslovně 56 00:03:24,570 --> 00:03:27,640 typ proměnných, pokud ji vytvořit. 57 00:03:27,640 --> 00:03:33,430 Kde C si musíte říct, int x = 5; 58 00:03:33,430 --> 00:03:38,650 nebo char y = 'a'; 59 00:03:39,250 --> 00:03:44,790 v PHP můžeme jednoduše říci, $ x = 5; 60 00:03:44,790 --> 00:03:48,930 a $ y = 'a';. 61 00:03:48,930 --> 00:03:52,360 To samé platí i pro funkce. 62 00:03:52,360 --> 00:04:01,290 Spíše než říkat int f () {tělo funkce našeho} 63 00:04:01,290 --> 00:04:12,160 v PHP budeme říkat funkci f () {tělo funkce našeho}. 64 00:04:12,160 --> 00:04:17,579 Nepotřebujeme explicitně určit návratový typ naší funkce f. 65 00:04:17,579 --> 00:04:22,070 Funkce v PHP také nemusí vrátit stejný typ 66 00:04:22,070 --> 00:04:23,840 pokaždé, když jsou provedeny. 67 00:04:23,840 --> 00:04:27,940 Například bychom mohli napsat funkci, která vrátí hodnotu false na chyby 68 00:04:27,940 --> 00:04:29,750 a jiný typ, pokud se to podaří. 69 00:04:29,750 --> 00:04:33,060 >> To může také pomoci nám napište obecnější funkcí. 70 00:04:33,060 --> 00:04:35,710 Například bychom mohli napsat jediný přidat funkci 71 00:04:35,710 --> 00:04:39,200 které mohou vrátí celočíselnou hodnotu, pokud jsou uvedeny dvě celá čísla 72 00:04:39,200 --> 00:04:41,250 nebo float-li dva plováky jsou uvedeny. 73 00:04:41,250 --> 00:04:45,530 V jazyce C, tak musíme napsat dva samostatné funkce, jak to udělat. 74 00:04:45,530 --> 00:04:49,230 Zatímco v C používáme ukazatele o zvýšení platu a smyčce, 75 00:04:49,230 --> 00:04:52,170 nebudeme moci používat ukazatele v PHP. 76 00:04:52,170 --> 00:04:58,030 Místo toho, jak jsou pole a řetězce vestavěných typů v PHP. 77 00:04:58,030 --> 00:04:59,660 Jsou zabudovány přímo do jazyka. 78 00:04:59,660 --> 00:05:02,270 Chcete-li vytvořit pole v PHP můžeme říci, 79 00:05:02,270 --> 00:05:11,280 $ A = array (1, 2, 3); 80 00:05:11,280 --> 00:05:19,400 nebo jednodušeji $ a = [1, 2, 3],. 81 00:05:19,400 --> 00:05:24,990 Můžeme index do tohoto pole pomocí stejné syntaxe, kterou jsme zvyklí z C. 82 00:05:24,990 --> 00:05:31,780 Chcete-li získat první prvek budeme říkat, $ a [0];. 83 00:05:31,780 --> 00:05:36,290 PHP má také vestavěnou podporu pro asociativní pole. 84 00:05:36,290 --> 00:05:41,460 Asociativní pole jsou stejně jako hash struktury dat tabulky jsme již viděli - 85 00:05:41,460 --> 00:05:44,060 mapují klíč s hodnotou. 86 00:05:44,060 --> 00:05:46,070 >> Pojďme se podívat na příklad. 87 00:05:46,070 --> 00:06:14,740 Dá se říci, $ zaměstnance = ["instruktor" => "david", "tf" => "Tommy"];. 88 00:06:14,740 --> 00:06:21,020 Zde mám asociativní pole se 2 klíči - instruktor a tf. 89 00:06:21,020 --> 00:06:24,910 Dvojitá šipka, nebo rovno-větší než, 90 00:06:24,910 --> 00:06:29,660 používá se k oddělení klíč a odpovídající hodnoty. 91 00:06:29,660 --> 00:06:41,830 Takže hodnota $ zaměstnanců ["tf"] je řetězec "tommy". 92 00:06:41,830 --> 00:06:44,430 Hodnoty asociativním poli - 93 00:06:44,430 --> 00:06:47,540 stejně jako jakékoli jiné pole - může být jakéhokoliv typu. 94 00:06:47,540 --> 00:07:23,370 Například bychom mohli říci, $ zaměstnanci = ["instruktor" => "david", "TFS" => ["Tommy", "rob"]];. 95 00:07:23,370 --> 00:07:27,810 Nyní je hodnota "TFS" je pole. 96 00:07:27,810 --> 00:07:33,030 To znamená, že se hodnoty v rámci jednoho asociativní pole mohou být různých typů. 97 00:07:33,030 --> 00:07:36,750 >> PHP pole také nemají pevnou délku, 98 00:07:36,750 --> 00:07:40,200 takže můžeme přidat nebo odebrat prvky z pole. 99 00:07:40,200 --> 00:07:49,130 Řekněme, že máme jednoduché pole jako $ a = [1, 2, 3];. 100 00:07:49,130 --> 00:07:51,860 Chcete-li přidat nový prvek do tohoto pole, 101 00:07:51,860 --> 00:07:57,160 můžeme říci, že $ a [] = 4;. 102 00:07:57,160 --> 00:08:03,630 Nyní naše pole se skládá ze čtyř elementů - [1, 2, 3, 4]. 103 00:08:03,630 --> 00:08:06,980 Připomeňme si, že pokud bychom chtěli udělat něco takového v C, 104 00:08:06,980 --> 00:08:09,610 budeme muset vyčlenit celou novou řadu, 105 00:08:09,610 --> 00:08:12,400 zkopírovat obsah našeho prvního pole do něj, 106 00:08:12,400 --> 00:08:15,870 a poté nastavte poslední prvek nového pole do naší nové hodnoty. 107 00:08:15,870 --> 00:08:18,390 To je mnohem jednodušší v PHP. 108 00:08:18,390 --> 00:08:21,230 Pokud je naše pole je asociativní pole, 109 00:08:21,230 --> 00:08:24,810 můžeme jednoduše definovat nový klíč k vytvoření prvku 110 00:08:24,810 --> 00:08:26,250 pokud ještě neexistuje. 111 00:08:26,250 --> 00:08:30,010 Pokud máme starší pole $ - zaměstnanci - 112 00:08:30,010 --> 00:08:38,679 můžeme říci, $ zaměstnanci ["celkem"] = 3;. 113 00:08:38,679 --> 00:08:43,330 Nyní máme nový klíč s hodnotou 3. 114 00:08:43,330 --> 00:08:46,460 >> Chcete-li získat počet prvků v poli, 115 00:08:46,460 --> 00:08:48,230 můžeme použít "počítání" funkci. 116 00:08:48,230 --> 00:08:56,100 Řekneme-li, počítat ($), která bude mít hodnotu 4. 117 00:08:56,100 --> 00:09:01,930 V PHP, můžeme vytvořit řetězce pomocí dvojité nebo jednoduché uvozovky, 118 00:09:01,930 --> 00:09:04,470 takže obě z těchto proměnných jsou řetězce. 119 00:09:04,470 --> 00:09:21,780 $ S1 = "string"; $ s2 = "jiný řetězec ';. 120 00:09:21,780 --> 00:09:23,920 Jaký je rozdíl mezi těmito dvěma? 121 00:09:23,920 --> 00:09:26,950 No, to je docela běžné, že chtějí, aby zahrnovala 122 00:09:26,950 --> 00:09:29,600 hodnota proměnné uvnitř řetězce. 123 00:09:29,600 --> 00:09:34,390 Jeden způsob, jak to udělat, by bylo použít PHP operátoru tečka, 124 00:09:34,390 --> 00:09:36,630 který zřetězí řetězce. 125 00:09:36,630 --> 00:09:38,680 Mohli bychom udělat něco takového - 126 00:09:38,680 --> 00:09:53,800 $ N = 5; $ s = 'n' $ n.;. 127 00:09:53,800 --> 00:09:57,430 Zde náš n proměnná je celé číslo. 128 00:09:57,430 --> 00:10:00,020 Ale když jsme se spojit s řetězci, 129 00:10:00,020 --> 00:10:04,110 PHP automaticky převede na řetězec pro nás. 130 00:10:04,110 --> 00:10:09,090 Nebo můžeme jednoduše použít uvozovky dát proměnné do řetězce sám. 131 00:10:09,090 --> 00:10:19,290 Dá se říci, $ s = "n $ n";. 132 00:10:19,290 --> 00:10:24,040 Nyní se hodnota $ s bude "n je 5 '. 133 00:10:24,040 --> 00:10:34,250 Pokud budeme používat apostrofy místo, stejně jako v $ s = 'n je $ n "; 134 00:10:34,250 --> 00:10:39,670 Hodnota S bude "n je $ n ',. 135 00:10:39,670 --> 00:10:43,720 Hodnota n nebude nahrazena, pokud budeme používat apostrofy, 136 00:10:43,720 --> 00:10:47,150 ale bude, pokud budeme používat uvozovky. 137 00:10:47,150 --> 00:10:51,800 Pokud chceme použít uvozovky zahrnout hodnotu pole v řetězci, 138 00:10:51,800 --> 00:10:55,060 budeme muset zahrnout složené závorky kolem pole, jako je tato - 139 00:10:55,060 --> 00:11:14,470 $ S = "{$ zaměstnanci ['celkem']}";. 140 00:11:14,470 --> 00:11:20,350 >> Pojďme se teď podívat na malého úryvku v C a převést ji do PHP. 141 00:11:20,350 --> 00:11:25,410 Zde jsme vytvořit funkci, která vytiskne písmena řetězce, 142 00:11:25,410 --> 00:11:27,310 jeden znak na řádku. 143 00:11:27,310 --> 00:11:32,250 Pojďme udělat to samé v PHP. 144 00:11:32,250 --> 00:11:36,530 Za prvé, budeme muset naše PHP oddělovače. 145 00:11:36,530 --> 00:11:39,000 Když vytvoříme naši funkci, 146 00:11:39,000 --> 00:11:42,740 nepotřebujeme specifikovat jeho návratový typ nebo typ argumentu. 147 00:11:42,740 --> 00:11:46,890 Naše je variabilní také musí začínat znakem dolaru. 148 00:11:46,890 --> 00:11:51,590 PHP strlen funkce nám dává délku řetězce, 149 00:11:51,590 --> 00:11:55,660 stejně jako C je strlen nám dává délku řetězce. 150 00:11:55,660 --> 00:11:59,060 Pod kapotou však tyto funkce jsou ve skutečnosti trochu jinak 151 00:11:59,060 --> 00:12:03,010 protože řetězec je vestavěný typ v PHP. 152 00:12:03,010 --> 00:12:06,930 Syntaxe našeho "pro" smyčky je stejný. 153 00:12:06,930 --> 00:12:13,530 >> V PHP můžeme také použít pole notaci pro přístup k znakům řetězce. 154 00:12:13,530 --> 00:12:19,350 Nyní můžeme použít funkci tisku vytisknout každé písmeno řetězce. 155 00:12:19,350 --> 00:12:23,080 S funkcí tisku PHP, nemusíme se starat o umístění - 156 00:12:23,080 --> 00:12:28,200 jako% d nebo% c - když chceme vytisknout proměnnou, která není řetězec. 157 00:12:28,200 --> 00:12:33,590 Místo toho je možné jednoduše přenést proměnnou libovolného typu funkcí tisku, 158 00:12:33,590 --> 00:12:36,810 a bude převeden na řetězec a zobrazeny. 159 00:12:36,810 --> 00:12:43,430 A to je! Pojďme se nyní spustíme soubor "php print.php". 160 00:12:43,430 --> 00:12:48,160 A tady je výstup jsme viděli z našeho programu C. 161 00:12:48,160 --> 00:12:52,120 >> PHP podporuje také konstrukt nazvaný "foreach" smyčky. 162 00:12:52,120 --> 00:12:54,800 V "foreach" smyčka je stejně jako "pro" smyčky, 163 00:12:54,800 --> 00:12:59,080 ale přidá trochu syntaktický cukr, aby se věci lépe čitelné. 164 00:12:59,080 --> 00:13:03,690 Zde jsme vytvořit nové pole s názvem "$ array '. 165 00:13:03,690 --> 00:13:10,090 Nyní můžeme říci, že foreach ($ pole as $ číslo), 166 00:13:10,090 --> 00:13:12,390 a můžeme tisknout $ číslo. 167 00:13:12,390 --> 00:13:20,650 Když jsme se spustit tento soubor - php-foreach.php-vidíme každé číslo na samostatném řádku. 168 00:13:20,650 --> 00:13:26,700 >> Když jsme psali kód v C, to bylo často užitečné organizovat náš kód do samostatných souborů. 169 00:13:26,700 --> 00:13:29,170 V PHP můžeme udělat totéž. 170 00:13:29,170 --> 00:13:33,870 Řekněme, že máme několik funkcí v souboru s názvem math.php. 171 00:13:33,870 --> 00:13:38,900 Pokud chci, aby tyto funkce používat v jiném souboru PHP, stejně jako calculator.php, 172 00:13:38,900 --> 00:13:44,110 Mohu použít PHP require_once () funkce. 173 00:13:44,110 --> 00:13:47,110 Require_once je stejně jako # include. 174 00:13:47,110 --> 00:13:52,050 Když daný cestu k souboru, bude v podstatě kopírovat a vkládat obsah 175 00:13:52,050 --> 00:13:54,930 z tohoto souboru do aktuálního souboru. 176 00:13:54,930 --> 00:14:00,150 Require_once zajišťuje, že každý soubor je zahrnut do aktuálního souboru pouze jednou, 177 00:14:00,150 --> 00:14:05,680 což může být užitečné, pokud máte velkou sbírku PHP soubory, které vyžadují navzájem. 178 00:14:05,680 --> 00:14:07,750 Pojďme se podívat na příklad. 179 00:14:07,750 --> 00:14:12,620 Zde máme sbírku funkcí, které bych chtěl použít v jiném souboru. 180 00:14:12,620 --> 00:14:14,990 Pojďme se podívat na to, jak můžeme použít. 181 00:14:14,990 --> 00:14:20,700 Na řádku 3, jsme vyžaduje math.php. 182 00:14:20,700 --> 00:14:27,170 "__DIR__" Je speciální konstanta představující aktuální adresář 183 00:14:27,170 --> 00:14:33,440 od math.php a calculator.php jsou umístěny ve stejném adresáři. 184 00:14:33,440 --> 00:14:38,010 Poté, co požadujeme math.php, můžeme použít funkce 185 00:14:38,010 --> 00:14:41,690  jako kdyby jsme je definovali v calculator.php. 186 00:14:41,690 --> 00:14:47,440 Spusťme to s 'php calculator.php ". Skvělé! 187 00:14:47,440 --> 00:14:50,880 >> A je to pro náš úvod do syntaxe PHP. 188 00:14:50,880 --> 00:14:53,700 Chcete-li se dozvědět více, podívejte se na PHP.net. 189 00:14:53,700 --> 00:14:59,470 PHP má mnoho vestavěných funkcí a naštěstí jeho dokumentace je opravdu skvělé. 190 00:14:59,470 --> 00:15:02,680 Jmenuji se Tommy, a to je CS50. 191 00:15:02,680 --> 00:15:04,680 [CS50.TV] 192 00:15:04,680 --> 00:15:14,000 >> Držák ..., já jsem z místnosti. Sakra! Toto je poslední video, kde používám velká slova v kódu.