DOUG LLOYD: Takže v naší video na syntaxi PHP, jsme si povídali o tom, jak hodně PHP lze použít na příkazovém řádku spustit programy způsobem, který Jsme docela obeznámeni s od C. Ale jak jsem se také zmínil V tomto video, PHP byl původně vyvinut pro implementovat webové programování, webové stránky. A tak v tomto videu jsme mluvit o tom, jak použít PHP v kontextu vývoj webových aplikací. Víme již, z naše video na HTML, že webové stránky jsou postaveny ze souboru HTML tagy že sémanticky definují struktura webové stránky. Ale webové stránky, které jsou postavený s čistým HTML trpí velmi, velmi závažné omezení. A pro ilustraci toto omezení, pojďme zvážit následující. Takže teď chci postavit webovou stránku že vždy, když uživatel navštíví ji to mi dává proud čas v Cambridge, Mass., jeho zobrazení na poslední chvíli. Kdybych dělal právě teď, Mohl bych říci něco takového. Aktuální čas v Cambridge-- takže mám HTML tagy, tagy hlava, název značky, Tělo tags-- proud čas v Cambridge je 14:08, vytisknout vojenské čas. Co se stane, když je to už 14:09, 14:09? No tak daleko, s HTML, mám jít a změnit ji na 14:09. A pak o minutu více, Musím to opět změnit. A pak o minutu více, Musím to opět změnit. A jak si dokážete představit, že to Pravděpodobně nejhorší práce vůbec. Jsi webmaster pro webovou stránku, a každou minutu, 24 hodin denně, budete muset aktualizovat aktuální čas Ruční otevření time.html a měnící se jen, že fragment kódu říkat aktuální čas v hodinách a minutách. To asi není moc dobré využití našich zdrojů, jak lidských, tak výpočetní. Webové stránky, které jsou všechny HTML jsou naprosto statické. Jediný způsob, jak můžete aktualizovat Obsah, jak jsme právě viděli, je ručně otevřít ty zdroj soubory, upravovat je a ukládat je. A pak, když se uživatel obnoví stránku, nebo navštíví stránku pro první čas, budou mít nejnovější obsah. Ale jen proto, že my máme ručně upravovat ho. Začneme-li míchat nějaké PHP tam, náš kód může dostat mnohem pružnější. A můžeme mít cestu našich stránkách aby byly dynamické, nebo aktualizovat sami, aniž by bylo nutné naše chudé webmaster v předchozím příkladě být manuálně aktualizovat věci. Mohou to udělat automaticky. Nemáme zasáhnout. Můžeme se vyspat. Což je asi dobrá věc, pokud děláte hodně programování pro web. Takže CS50 IDE, my spustit webový server s názvem Apache. Je to velmi běžně používaný, open source systém webový server. Tento systém má schopnost interpretovat PHP, který bude užitečné, pokud chcete dělat žádné programování v PHP. A v CS50 IDE, máme příkaz aby se to velmi snadné dělat, apache50 začít. A pak, že lomítko cesta, lomítko se, lomítko dir, to je jen opravdu obyčejný způsob, jak označující, co jste tady zadaný je cesta k určité adresář, který chtějí být kořen site, nebo kořen stránky, nebo ze složky, odkud váš webový server začne zkoumat soubory a sloužit je až do klienty, kteří o ně požádají. Takže pojďme pop se k CS50 IDE, jen proto, aby ukáže, opravdu rychle, jak to funguje. Tak tady v CS50 IDE, že jsem v adresář s názvem Týden Zero Nine. A já mám two-- mám popraven Příkaz LS jen výše, aby vám ukázat, že mám dva adresáře sem, PHP, což je sada souborů, které I používá v PHP syntax video, a pak PHP-web, což je sada souborů, které jsem chtěli použít v tomto videu. A já bych chtěl začít instance webový server s obsahem PHP-webové složky protože soubory jsou servírované. Tak co mám dělat? Budu psát apache50 prostor start, prostor PHP, pomlčka web. To je cesta k adresáři odkud I v současné době jsem. Pak jsem stiskněte klávesu Enter. Bude to udělat trochu věcí zde. A pak se to bude říkat, Apache úspěšně spuštěna. Váš web je nyní k dispozici a at-- pak je tu adresu URL pro web. Tak co mám dělat? Chystám se rychle kopírovat to. A já jdu otevřít a up-- Budu oddálit trochu here-- Jdu otevřít nová karta v prohlížeči Chrome. A já jdu navštívit tuto adresu URL. Budu stiskněte klávesu Enter. Bude to načíst. A já budu opět oddálit. A vidíme, zde se Obsah mé PHP webové adresáře. Takže teď, co se v podstatě děje tady je, můj instance CS50 IDE se servírují tyto soubory do Každý, kdo žádá o ně. A v průběhu toto video, budeme tak nějak se podívat na spoustu z nich různé soubory v kontextu. Chcete-li otestovat, že vaše Apache server pracuje, který je obecně děje být v případě CS50 IDE, ale pokud to budete dělat obecněji, a začít budovat svůj vlastní web servery, tam je opravdu obyčejný druh analogově, "hello world", která je obvykle použity pro vývoj PHP webových aplikací. Což je mít soubor skládající se z právě tento code-- PHP oddělovač set s PHP info, závorky, středník mezi tím. Což je v podstatě speciální PHP funkce, která vám řekne, jakou verzi PHP používáte. Takže CS50 IDE, mám že soubor k dispozici jen vám ukázat, co by to vypadat. Takže jsem při pohledu na mé indexu z mého instance PHP. Moje Apache instance běží obsah PHP-Web. A já mám soubor zde info.php. Chystám se na něj, oddálit. To je to, co budete vidět, docela hodně. To je jen říct, že můj Apache server pracuje. A to je, zdá se, že verze PHP, že běžím. To je můj analogový na "Hello World". Takže vím, co jsou v provozu. Takže jsme dobré jít. Můžeme pokračovat odtud. Takže pojďme znovu, že Doba příklad jsme byli mluví o naší špatnou webmasterovi který měl aktualizovat stránku neustále. To by mohlo být oprava, jak Chtěl bych realizovat věci takže webmaster ne mít na aktualizaci času. Bylo by tak nějak dít automaticky. Níže uvedený dolů, HTML, je to dost podobné, s jednou výjimkou. Ale tady mám nějaké PHP v horní části. Jsem se, zdá se, že volal tuto Funkce date_default_timezone_set. A nemluvíme o všem Tyto funkce v CS50, proto, že PHP má pravděpodobně desítky tisíc. To by mohla být tak trochu nadsázka, ale to nemusí být. Má to spoustu funkcí postavena v roce. A tak to je funkce zjevně nastaví časové pásmo jako US / Eastern, což je časové pásmo, že jsem V současné době na výrobu tohoto videa. Pak jsem volat do volání funkce, datum. A zdá se, že jsem ukládání HIS něco volal, času. Takže to, co se tady děje? No, v podstatě to, co je děje se, dělám hovor k nějakému serveru, který se chystá řekni mi, co je v současné době čas. A já převedením do formátu z hodiny, minuty, sekundy. A důvod, proč to je kapitál H je to se chystá dát mi 24 hodin času, ne 12 čas hodina, což by bylo malými písmeny h. A já jen, že uložení v proměnné nazvané, čas. Tak, že druhý řádek PHP tam, volání funkce, datum, je jen dostat některé řetězce, což je mi dáš datum, a čas, a spoustu dalších informací. A první argument, tam, že jeho, právě extrakci důležitou roli že mi záleží, pro tento příklad, což je hodina, minuty a sekundy. Tak to je vše, co se děje. Tak jsem obchod, který v proměnné $ dobu. A pak se u tam velmi dole, já mít tento zkratka pro vytisknout aktuální čas. Takže já jsem prostě jít do tisku na to, co je aktuální čas. Takže pojďme se podívat na to v CS50 IDE a uvidíte, jak jsme nyní ukládání, které webmaster spoustu problémů. Dobře, tak jsem tady znovu zpět v kořenovém adresáři mého instance Apache. A mám tady soubor s názvem time.php. Já jsem prostě jít klikněte na to. A já budu posouvat nahoru, protože jsme přiblížení docela daleko. Aktuální čas je 14:20:34. Takže já to dělám hodin, minutách a sekundách. A mohu obnovit stránky a získat nový čas. --41. Chystám se aktualizovat stránku a získat nový čas, 44, 46, 47. Takže, já jsem jasně ne nic neměnit sám. Jsem tu stránku obnovit. Takže nemohu být zpátky tam editace. A slibuji vám, vůbec se mi nelíbí máte nějaké spojence kteří jsou úpravou souboru mým jménem na boku. Já jsem jen pomocí této funkce PHP, čas, generovat čas pro mě automaticky. Takže i když spím, a můj webový server běží, Uživatel, který navštíví, že stránka je stále dostane přesně aktuální čas. Tak to je docela dobré. Udělal jsem můj web dynamičtější s ne příliš mnoho PHP kód. Bylo to jen dva řádky kódu a poté trochu tiskové prohlášení. A já už mají mnohem dynamičtější místo než toho prvního příkladu jsme viděli, Na začátku videa. Takže, vzpomínám z videa o syntaxi PHP že když je interpreter PHP běží náš program, ignoruje vše to není uvnitř oddělovače PHP, plivat to. V tomto příkladu, co je věc že to bylo plivat byl HTML. A to znamená, že mohu nyní promíchat HTML a PHP dohromady. Vzhledem k tomu, interpret bude jen ignorovat HTML a výstupu doslova za to. Což je dobře, ne? Vzhledem k tomu, pravděpodobně, na konci dne, Rád bych své stránky do být zhotoveny z HTML. Tak, že libovolného webového prohlížeče, může interpretovat to, nebo pochopit HTML na stránce a učinit ji jako něco, co my může skutečně chápat jako lidé. A mohu použít pouze PHP pro ty části mého webu require dynamiku, které vyžadují mě mají věci, které neustále aktualizovat. Statický Informace může zůstat stejná. OK, tak to je v pořádku. Ale proč by to udělat? Proč bych mix HTML a PHP? Mohl bych vytisknout všechny HTML, PHP pomocí funkce tisku. Proč nejsem dělat, že? Zamyslete se nad tím na chvíli. Proč, když jsem mohl jen vytisknout out-- I by mohlo mít řádky PHP, který právě říkají, print HTML tag, tisková hlava. Proč nejsem dělat, že? Proč jsem smíchání PHP a HTML? No, pokud si myslíte, o tom na chvíli. PHP, interpret má interpretovat to, co vidí. A tak to bude mít vykonat řádek kódu. Vytiskněte HTML. Vytiskněte otevřené hlavy tag. Vytiskněte otevřený název značky. Bude to muset provádět a interpretovat že každý jednotlivý krok na cestě. Proč ne jen nechat interpret jen zakrýt věci nerozumí a dělat to automaticky? Bude to mi ušetřit spoustu času míchat mého HTML kódu a moje PHP dohromady. A tak to je důvod, proč jsme ne Jen mají otevřený PHP oddělovač a pak už jen vytisknout kompletní Obsah naší strany jako jeden obří PHP volání funkce, tisk, a poté V blízkosti PHP oddělovač a budeme hotovi. Takže to je důvod, proč jsme se míchat dohromady. Zatím jsme neviděli příliš mnoho rozdíl od obecné syntaxe PHP. Bylo to docela jednoduché. Už jsme viděli otazník, se rovnat. Viděli jsme několik nových funkcí volání, ale opravdu nic vymyšleného děje. Pojďme možná dělat věci trochu milovník. Co když chceme předat informace mezi různými PHP soubory, takže možná uživatel může předložit informace ke mně. A pak bych mohl něco udělat s ním na jiné stránce. Když PHP má podporu pro něco, co nazývá Super Global Proměnné, které zní docela úžasné. Jsou to opravdu jen asociativní pole obří které přispějí k provedení tohoto funkčnost procházení informací mezi PHP soubory, které jsou existující na našem serveru. První z těchto Super globals se nazývá $ _GET. A je to asi nejjednodušší pochopit. Co se stane s $ _GET? Tak, v podstatě, je uživatel bude psát další informace na konci našich URL. A všechno, co píšete, za předpokladu, že je to ve formátu určitým způsobem volal řetězec dotazu, který je jen sada klíče a hodnoty oddělené by ampersandy. Tyto páry klíč hodnota bude uloženy v $ _GET asociativní pole. A z našeho videa na Syntaxe PHP, víme, jak pracovat s asociativní pole již. Zde je tedy příkladem někteří PHP, kde jsem si, že jsem extrahování všech párů klíčových hodnot že uživatel dodávané v URL. Takže mám Otevřít PHP oddělovač. Mám smyčky foreach. Jsem iterací přes Super Globální Array s názvem $ _GET. A já chci, aby mohli postoupit jak klíč a hodnotou. A já jsem jim jen tisk out, každý z nich na zdánlivě vlastní odstavec značka zde. Jsem vytištění nějaké HTML a interpolaci hodnoty klíče a hodnoty do tohoto prohlášení. Takže pojďme se podívat na to, jak to bude skutečně pracují na našich IDE. A možná, že to pomůže ilustrují trochu z toho, co dostanete, je ve skutečnosti dělá. Takže jsem tady v mé webové root. A já budu přiblížit v Trochu vám ukázat že mám soubor s názvem, get1.php. Takže pojďme klikněte na get1.php. A nevidím žádný obsah. To je divný, že jo? No, vlastně ne ve skutečnosti. Protože jsem neposkytl něco v URL. Chystám se get1.php, ale já neposkytla žádné klíče a hodnoty, jako součást mé řetězec dotazu. Takže pojďme přidat řetězec dotazu a uvidíme, co tento soubor může udělat. Chcete-li začít řetězec dotazu budete stačí napsat otazník. Pak možná Řeknu name = Doug & rok = 2015. A pak budu stiskněte Enter. Teď si všimnout, co se děje. Jsem pořád v get1.php. Ale teď jsem součástí dodávky klíče a hodnoty, a já jsem jejich tisku na vlastní pěst paragraph-- jméno, Doug-- rok 2015. To je přesně ten kód, který jsme právě Viděl na snímku před chvílí. A když chci třeba přidat další hodnota dvojice klíč, a class = CS50. Teď mám další hodnota klíče Dvojice, která je vytištěna Když jsem znovu adresu URL znovu. Nyní možná to není formátované strašně dobře. Takže mám další verzi get.php. Je to get2.php. Rozdíl v tomto jeden je mám CSS soubor, a to formáty věcí, trochu víc pěkně pro mě. To možná ne nejvíce Krásná CSS na světě. Ale je to jen další způsob, jak dělat to. Tak jsem se může ještě získat přístup mých proměnné pomocí $ _GET. A v tomto případě, já jsem jen trochu dělat CSS trochu fantazie. A pokud bychom pop se k můj IDE na vteřinu, Já vám ukážu, v mé PHP web adresář zde, get2.php. Budeme otevřete ji, trochu HTML zde. Zřejmě jsem spojující v tom, že CSS soubor jsem mluvil. Otevřu tag tabulky. A pak tady je můj foreach smyčky. Zde je to, že to, co jsem ukázal na snímku před. Jediný rozdíl je, že jsem mají tento klíč a hodnoty CSS styling, že jsem se na ně vztahují. Ale to je všechno, co dělám, je, že jsem iterací přes $ _GET dostat všechny párů klíčových hodnot. A já jsem jejich tisk, jak tabulky. A zdá se, že jsem formátování klíče v jednom směru, s