[Powered by Google Translate] [§ 8] [méně komfortní]
[Nate Hardison] [Harvard University]
[To je CS50.] [CS50.TV]
>> Vítejte v našem sekundě poslední části.
V tomto týdnu budeme mluvit o PHP, a pak příští týden
uděláme malou recenzi na Quiz 1.
Budeme začít na straně 3 tohoto problému sady pack,
a budeme pracovat prostřednictvím sekce otázek poměrně rychle.
Na stránce 3, začneme mluvit o tomto rozdílu mezi C a PHP
v tom smyslu, že PHP je dynamicky typový jazyk,
vzhledem k tomu, C je staticky zadali,
a někdo opravdu rychle udělat nějaké kódování v něco jako PHP
nebo Python nebo Ruby před JavaScriptu?
Zcela nový? Dobře.
>> Všechny z těchto jazyků, které jsem právě zmínil
jsou velmi odlišné od jazyků, jako je C a C + + a Java
v tom smyslu, že když deklarujete proměnnou nemusíte deklarovat
jaké proměnné je, tak v C jsme přilepená museli vždycky říkám
to bude int proměnné, nebo to bude char * variabilní,
vzhledem k tomu, s PHP, Python, Ruby, s
s mnoha z těchto více moderních jazyků nemusíte dělat, že vůbec.
Stačí deklarovat svou proměnnou, a v případě PHP
můžete prohlásit, že je to proměnná prefixing to s znakem $,
a pak se typ proměnné je určen kterékoliv hodnoty to drží,
což je docela fajn.
Chcete-li hrát si s tímto trochu, máme ukázkový PHP kód přímo zde
mezi počáteční a koncovou značku.
Jsme použití tohoto druhu jako HTML v tom smyslu, že
máme tyto úhelníky zde pro otevření a zavření.
Uvidíte to s HTML.
Uvidíte stejnou syntaxi s XML taky.
>> To ukazuje na začátek bloku PHP.
To? Php je specifické pro PHP.
Zavřeme vše s> i.
Pojďme otevřít soubor v našem zařízení za použití jakýchkoliv byste chtěli.
V tomto paketu se říká, volat dynamic.php.
Po pravdě řečeno, můžete volat to, co si přejete, ale název souboru přijde
a být důležité později, takže stačí vzpomenout jak se tomu říká.
Chystám se přejít na spotřebiče,
a já budu dělat adresář pro
oddíl 9 Věřím, že jsme teď.
A půjdeme do sekce 9,
a budu používat gedit.
Pojďme se podívat, gedit, a budu volat moje dynamic.php.
Boom.
V dynamic.php, protože to je PHP souboru
a chci spustit tak prostřednictvím tlumočníka PHP
Musím začít všechno pryč s těmi otevřenými značek,
takže budu začít ty hned,
dávám málo místa v mezi značkami,
a pak bod tohoto cvičení bylo hrát si s
tato funkce se nazývá GetType, tak GetType, tuto funkci tady.
>> Všimněte si, že tam je žádné podtržení nebo prostor nebo pomlčku nebo něco podobného, ​​že
oddělení na 2 slova, získat a zadejte, jen jedno slovo úplně.
Ale co to bude dělat, je-li jsem se projít v proměnné GetType,
říkají, $ var nebo $ x,
to mi druh ve ladění formátu
to, co název tohoto typu je.
Budeme experimentovat zde.
Zejména, když se podíváte zpátky na PSet spec
máme několik různých řádků kódu zde.
V prvním řádku kódu jsme inicializovat proměnnou, $ var,
se rovná 7, a pak máme tento printf linku
, který říká, hey, printf var je prázdný.
Printf je jedním z mnoha způsobů, jak lze vytisknout věci v PHP.
Často uvidíte echo funkci použít místo printf,
ale printf jsme všichni obeznámeni s mít been kódování v C na chvíli.
Co můžete udělat, je skutečně uvidíme, jestli kopírování a vložení práce.
Chystám se dát to zkusit.
Vrátíme se k zařízení.
Dobře, a tam jdeme.
A rozestup je trochu funky, ale je to tady.
Máme tento kód zde.
>> [Student] Není to dobrý styl na kartě to?
Je nám líto?
[Student] Je to konvenční záložce?
Správně, takže Sam se zeptá, zda je to konvence kartu, nebo ne.
Typicky ano.
V tomto případě jsem zvolil ne.
Upřímně řečeno, uvidíte různé věci mezi různými programátory.
PHP se obvykle používá často v kombinaci s HTML
a další jazyky, a tak někdy tisk bude vypadat trochu funky
Pokud odrážka v počáteční a koncovou PHP značku.
To opravdu záleží.
V tomto případě zkopírujte a vložte ani vložit karty v pro mě,
ale rozhodně to, jak jsi říkal, aby to jasnější.
Dobře, pokud si uložit tento kód do dynamic.php
pak to, co můžete udělat, je přijít dolů do okna terminálu, kde jsem tady dole
v gedit, a to ekvivalent kompilaci
používání make a pak běží kód v C
vše, co musíte udělat, se souborem PHP je nastartovat tlumočníka PHP,
což je malý program, nazvaný PHP,
a argument dát na tlumočníka, je soubor, který chcete interpretovat.
V tomto případě, dynamic.php.
Jejda, kde jsem dal to?
Oh, jsem si ho v kapitole 9, a jsem tady. To je důvod, proč.
>> Nyní, když jsem spustit znova
vidíme, že v mé první výzvě GetType funkce
var je celé číslo.
V příští var je řetězec, a pak ve třetí var je boolean.
Co je na tom zajímavé je, pokud bychom se posunout zpět, vidíme, že
jsou typy podobné těm, které jsme měli v C.
Měli jsme ints v C.
Jsme trochu měli řetězců v C,
takže řetězce nebyly úplně důvěryhodně typ v tom smyslu, že
náš CS50 řetězec byl opravdu to, co?
Je nám líto? Missy?
[Missy] Char *.
Jo, to byl tento char * jsme použili.
Na samém začátku semestru jsme používali typ řetězce,
ale bylo to opravdu char * pod kapotou.
Právě jsme typem definoval to, že v PHP tyto řetězce jsou pro konkrétní typ.
Není více o tomto char věci * typ.
>> Uvidíte, že můžeme dělat mnohem více věcí s řetězci
mnohem snadněji v PHP, než jsme mohli v C,
a pak konečně, máme tuto booleovský typ, a velký rozdíl je, že
pokud bychom se posunout zpět dolů, vidíme, že název těchto typů
jsou nyní integer, string, a boolean místo int a bool,
a jak si vyzvednout různé programovací jazyky,
za předpokladu, že v určitém okamžiku ve vašich životech vám přijít do styku s
různé ty si všimnete malé mouchy, jako je tato
kde C volá celá čísla typu int.
Někteří to nazývají celá čísla.
Existují i ​​jiné pojmy, které budete spouštět do.
Big int jsme dnes viděli v SQL.
Tam jsou také množství a klepněte na bool, boolean,
všechny druhy rozdílů tam.
>> To není příliš zajímavé, ale teď budu vám trochu času,
pokud se přiblížit zpět k práci toto cvičení na spodní straně 3
kde se požaduje, jaké typy odpovídají tyto hodnoty zde dole.
Máme 3,50.
Máme tu věc tady, což je zajímavé.
Neviděli jsme, že dříve, ale pokud jste sledovali společně v přednášce
již pravděpodobně víte, co to je.
Pak máme toto, což je druh funky.
Poznáváte tohle.
Co je to v C?
Sam? Co by to dát v C?
To by otevřít soubor s názvem dynamic.php a učinit z něj čitelné.
Jo, a jaké by měly být typ proměnné, které bychom přiřadit to? Hvězdy souboru >>.
Přesně tak, bychom přiřadit to do souboru hvězdy.
To je legitimní PHP příliš.
Spustit to. Podívejte se, co se stane, když minete, že do GetType.
A pak také zjistit, co null, co by to mohlo být v PHP.
Dám vám pár minut.
Můžete si doslova zkopírovat a vložit tyto hodnoty,
a pak budeme dělat trochu náhodný hovor na vás
a uvidíte, co máš.
>> [Student] Mám dotaz. << Jo.
V jedné z přednášek David řekl, že je to něco, co si můžete dát v horní části souboru
takže nemusíte psát v PHP pokaždé.
Co to bylo?
On byl pravděpodobně mluví o libře třesku, hash bang.
Je to směrnice, která, pokud označíte soubor jako spustitelný
pak to, co dělá, je při spuštění souboru
bude vyprávět shell program
používat PHP interpret interpretovat obsah souboru.
Otázkou je, co je to speciální linka
že jsme je mohli zařadit na vrcholu našich PHP souborů nemusí zahrnovat
tento řádek PHP nebo tento příkaz PHP kdykoliv chceme spustit soubor?
A můžete skutečně udělat s partou různých souborů.
Věřím, že to záleží na tom, kde je uložen binární PHP,
ale často usr / bin / php je dobré místo pro start.
Můžete přijít na tohle přesně tím, že jde zpátky do svého zařízení
a psát, jaké php.
Který příkaz zjistí, když jste provádění binární
nebo příkaz, kde odpovídající soubor.
To mi říká, že PHP je opravdu aliasing tento binární soubor
že jsou uloženy v usr / bin, což je, kde jsou nainstalovány mnoho systémových binárních souborů.
Například, když jsem přejděte až na vrchol, teď, když jsem si tohle #! linka zde
Mohu přejděte dolů, a můžu zkusit spustit
dynamic.php, ale já jsem tuto chybu o povolení zbaven,
a co to znamená, je to, že tento soubor není v současné době dává spustitelných oprávnění.
Není to označeno jako soubor, který někdo může běžet.
>> Když běžel iniciovat nebo zvonění a máte spustitelný z něj
kompilátor byl dost chytrý, aby věděl, že hej, já stavím spustitelný.
Pravděpodobně budete chtít provést, tak to by automaticky nakonfigurovat
oprávnění pro vás.
To není případ, i když, když vytvoříte normální soubor od nuly,
Důvodem je obvykle nechcete mít libovolný soubor v systému být spustitelný,
takže máte skutečně jít a ručně to.
Nejjednodušší způsob, jak to udělat, je pomocí příkazu chmod,
a chmod + x říká přidat spustitelný bit
protože tam je čtení bit, zápisu bit a bit spouštění,
r, w a x,
a říká chmod + x zapne spustitelného bit
pro pak soubor, který jsme určíte, která v tomto případě bude dynamic.php.
>> [Student] je, že se obrátil na pro každého?
Pojďme se podívat na tohle, tak jak bych zkontrolovat oprávnění?
Víte, jak bych zkontrolovat oprávnění souboru?
[Neslyšitelné Student odpověď]
Je nám líto? >> [Student] XSD.
XSD nám dává soubor hacků.
Výpis všech souborů,-l, ukáže mi všechny soubory v mém adresáři
druh v jejich dlouhé, seznam podrobného, ​​a tak zde vidíme, že
tento dynamic.php soubor
byla naposledy editována 5.listopadu v 16:21.
Majitel tohoto souboru je jharvard.
To je uživatel, který je přihlášen
To je uživatel pracuji jako,
a pokud jste také v zařízení budete také pracovat jako uživatel jharvard.
Jste ve skupině studentů,
a to jsou věci, které uvidíte dost často.
>> Můžeme jít do množství detailů zde
ale z velké části to, co budete chtít podívat na když hledáte vidět
zda je soubor spustitelný je primárně
uživatel, který vlastní soubor, majitel,
tak to jharvard, a pak máme
oprávnění, bity přes tu na levé straně,
a způsob čtení je to, že poslední bit
obvykle se používá k označení, zda-alespoň v tomto případě
Tento poslední bit bude často být nastaven na reklamní uvést
že soubor je adresář a ne jen normální soubor.
Pak následující 3 bity přímo zde
určit oprávnění, že vlastníkem souboru má,
takže v tomto případě jharvard, jako vlastníka souboru, umí číst a psát tento soubor,
ale tam je pomlčka říká, že jharvard nelze spustit tento soubor.
Dalších 3 bity jsou pro skupinu, takže toto je studenti skupina,
takže pokud tam byly více uživatelů na mém zařízení,
a my jsme více uživatelů jako součást studentů skupiny,
pak mohou všichni tento soubor číst, ale neumí psát to,
a podobně někdo jiný, svět
lze pouze číst tento soubor také.
Tam je dobrý, dlouho writeup o tom,
takže si můžete přečíst on-line.
V spec problému nastavené jdeme do toho podrobněji.
>> [Student] Je 218 s odkazem na světě?
The 218 je-off z vrcholu mé hlavě jsem zapomněla,
ale ne.
Pojďme se podívat,. Jsem zaslepení na tom teď.
Zpět na to, co jsme měli co do činění s tímto chmod + x
kde jsme chtěli dát dynamic.php spustitelné oprávnění,
a bylo otázkou, zda nebo ne toto by spustitelné oprávnění pro každého
nebo jen jharvard, a můžeme vidět podle
spuštění příkazů a psaní ls-l,
a teď vidíme, že je to označeno jako spustitelný.
Můžete vidět, že tam byla změna barvy.
Nyní dynamic.php je uveden v zelené,
a vypadá to, že odpověď na otázku je to, co, Charlotte?
[Charlotte] Pouze jharvard. >> Pouze jharvard, jo.
>> Pokud bychom chtěli se otočit spustitelný bit pro všechny
jak můžeme udělat, že?
Jakékoliv myšlenky? >> + X?
Jo, přesně tak.
Charlotte řekla, co můžeme udělat chmod o + x z dynamic.php,
a teď, když jsme se spustit ls-l vidíme, že spustitelné bity
skutečně zapnuta pro každého.
A můžete skutečně udělat opak tohoto, takže si můžete vypnout pro všechny
pomocí minus.
Nyní je vypnutý, a nyní můžeme jej znovu zapněte pro jharvard
takže můžeme skutečně spustit hned,
a teď vidíte, když jsme se spustit kód této speciální #! linka nahoře,
#! line, řekl shell,
řekl našemu terminálu hey, při spuštění tento soubor,
použít / usr / bin / php interpretovat tento soubor
a pak vytisknout výstup.
[Neslyšitelné Student otázka]
Jistě, dovolte mi, abych se posunout zpět. Stejně jako tento.
Uvidíte všechny z těchto směrnic začít s tímto libru a pak vykřičník,
někdy volal shebang, hash bang.
>> [Student] Jak můžeme spustit s dynamic.php php, než jsme dělat to spustitelný?
Otázkou bylo, jak můžeme spustit toto použití binární PHP
zatímco dynamic.php není spustitelný?
To je super důležité, protože to je přesně to, jak
že to bude fungovat, když píšete problém sadu 7.
Většinu času PHP soubory nejsou přímo spustitelný.
Způsob, jakým funguje, je proto, že je to PHP binární, že je spustitelný.
Tlumočník je věc, která je prováděna,
a tak to, co to dělá je doslova slurping v části obsahu
našeho dynamic.php souboru a jít řádek po řádku
a provádění těchto příkazů, takže je to s použitím našeho PHP souboru
jako seznam instrukcí.
Není to přímo spuštěním.
To je místo, kde můžeme říci, že tyto soubory jsou interpretovány v době běhu.
Je to doba chodu jazyk místo něčeho, co v době překladu,
není zkompilovaný jazyk jako C.
>> Existuje způsob, jak získat běhovou jazyk chovat, jako by to kompilace čas jazyk,
jako když máte všechny chodu udělal na serveru
spíše než víte, co tím myslím?
Ano, tak je otázkou
Existuje způsob, jak se dostat doba chodu jazyky jednat více jako kompilace typy jazyků?
A jsou tu, myslím, že je aktivní oblast výzkumu pro mnoho z těchto společností.
Věřím, že Facebook udělal hodně práce s PHP
a sestavování ho, což je rychlejší, optimalizací
protože jejich stránky jsou založeny na PHP.
Pokud jste sledovali node.js vůbec,
který je tak trochu o tlumočníka JavaScript
aby bylo možné spouštět JavaScript mimo prohlížeč, mimo Vašem webovém prohlížeči,
protože tradičně JavaScript by jen spustit uvnitř Firefoxu nebo Chrome,
a to by být použity, aby chladné animace stalo na webové stránce
a aby vaše webové stránky dynamické.
, Která byla postavena na hodně práce, že Google udělal
aby JavaScript a C + +
svázat dohromady, takže je tu spousta aktivního výzkumu na
se tyto jazyky k interakci a optimalizovat,
především proto, že mnoho lidí může kód v PHP a JavaScriptu
protože je to mnohem jednodušší.
Je to mnohem lepší. Nemáte ukazatele.
Nemáte typy kolovat.
Chtěli získat výhody z těchto kompilace jazycích
se všemi kontrolu typu a rychlosti a nižší využití paměti a všechny, které
při zachování flexibility a snadnosti použití těchto novějšími.
>> Zpět k naší původní plán útoku.
Máme některé z těchto otázek zde v naší spec problému set.
Pojďme přes ně opravdu rychle, a půjdeme po místnosti.
Charlotte, jaký typ je 3,50?
[Charlotte] To je dvojí. >> Je to double.
Jimmy, co je ta další? >> Pole.
Pole, úžasné, a Jared, co je fopen?
[Jared] Je to zdroj. >> Je to zdroj.
To je trochu nového, ne soubor hvězdy, ne soubor.
Je to zdroj typu v PHP,
a je mi líto, Ella, poslední null je to, co?
Null.
Null, jak je napsána v PHP? >> Stejným způsobem.
Stejným způsobem, hlavice? >> Jo.
Jo, v pořádku.
Jdeme na to, máme double, máme celou řadu,
máme zdroj, a pak máme null.
Pojďme se podívat teď jste viděli-
uvidíme, takže teď myslím, že to, co jsem také chtějí udělat, je vytáhnout
tato webová stránka přímo zde, tento php.net / manual,
takže pokud jste rozumím a otevřít webový prohlížeč.
Jdu vytáhnout Chrome, dej to dovnitř
Chci ti ukáže to nejen proto, že
můžeme mluvit celý den o typech a vše, co zábavné věci
ale spíše proto, že to je manuál PHP,
a existuje spousta PHP programátorů tam.
Existuje mnoho internetových stránek PHP tam,
a jako výsledek, tam je spousta dokumentace na PHP,
a manuální, to php.net, je opravdu dobré místo, jít
pokud máte otázky o tom, co je nejlepší způsob, jak to udělat X v PHP
nebo co to funkce vypadat?
Tak nějak, jak se seznámit s tím, co to vypadá, protože
budete sem často, bit pro problém nastavit 7.
>> Pokud jste skončili dělat závěrečný projekt, který používá PHP
to bude místo, staneš se velmi dobře obeznámený s.
Často tak lidé dělají, je, že používají Google k hledání místa,
a nemají použijte vyhledávací pole, které je tady v pravém horním rohu, který je tak trochu malý.
Pokud jste Googling asi něco dělat s PHP a uvidíte
jeden z manuálních odkazů vyskočí můžete obvykle spolehnout na to
jako docela dobrý zdroj.
Úžasné, tak z těchto typů, jen tak ze zvědavosti,
které z nich ještě jsme neviděli?
Cokoliv jsme neviděli tu?
[Student] Resource. >> Viděli jsme zdroj s fopen hovoru.
[Student] objektů. >> Námitky jsme neviděli určitě.
Volání jsme neviděli.
K dispozici jsou některé z těchto pseudo-typů.
Určitě viděl pouze integer a double.
Neviděli jsme někteří jiní, takže pokud klikneme na celá čísla
můžeme vidět, jsou ještě nějaké další celočíselné hodnoty, které oni mají tady?
Jsou všichni-tak integer, integer, integer.
Některé jazyky mají větší celočíselné typy,
jak jsme viděli na MySQL dnes tam byl int a pak velké int.
Cool.
>> Takže, PHP manuál.
Vraťme se k našemu problému spec set, a my nyní přejděte na stránku 4.
Jedna z věcí, které se stane, když se dostanete tyto jazyky
které nemají tuto statickou psaní, takže tyto jazyky, kde musíte deklarovat
typ přední proměnné až
je dostanete na případy, kdy můžete začít s proměnné různých typů
interakce mezi sebou navzájem,
a PHP dělá tuto věc, kde se snaží udělat
to, co považuje za nejrozumnější věc
když máte 2 různé typy na sebe vzájemně působí.
Například, pokud se podíváme na tyto řádky kódu přímo zde
vidíte, že jsme dostali to, co se stane, když
snažíme přidat řetězec 1 na celé číslo 2.
Co se stane, když se budeme snažit a přidat řetězec, který není číselná hodnota
ale skutečné znaky, CS k počtu 50?
Pak uvidíme, je tam něco jiného, ​​co se děje, kde
místo přidání řetězec na číslo jsme zapsání čísla na řetězec,
a tak dále a tak dále do bodu, kdy jsme získali
nějaký divný věci tady, kde máme 7 + pravda.
Co sakra to znamená?
>> Pokud jste jít dopředu a vložte některé z tohoto kódu do vašeho přístroje.
Můžete držet ji v dynamic.php.
Uvidíme, co se stane.
[Student] Stačí použít tisk, ne printf?
Jo, takže zjistíte, že tisk je také platný funkce pro tisk v PHP.
Existuje mnoho různých způsobů, jak to udělat.
Uvidíme se za pár příkladů později, jakmile začneme mluvit
o unikátní problému, který budeme psát
a pak koncentrace problém, který budeme psát
že i když máme fopen a fclose
to často není nejjednodušší způsob, jak číst v obsahu souboru.
PHP má mnoho z těchto C-jako holdovers.
[Student] Když jsem dal ve všech 6 těchto věcí, které jsem jen jednu řadu jako výstup.
[Nate H.] Když dáš ve všech 6 těchto věcí.
Pojďme se podívat, je to proto, že je to možná-
jedna věc je, že tyto tiskové hovory nejsou ukončeny na konci se nových tratích.
Tam je žádný nový přímka oddělující každý z těchto tiskových hovorů,
takže možná, že jste stále jeden velký počet,
a je to opravdu jen amalgám znaky nového řádku.
[Student] Dobře, jak se mohu ujistit,-
No, existuje banda různými způsoby.
Dalo by se ručně dát do tisku nového řádku znak,
ozvěna znak nového řádku,
vytisknout nové řady.
[Student] Tak echo je totéž jako printf?
>> Printf je jako C printf
kde tisknete formátovaný řetězec.
Ty dodává jí formátovací řetězec a pak všechny zástupné proměnné.
Je to často něco, co se nepoužívá,
uvidíme, jak vyloučení odpovědnosti,
Jsem méně obeznámen s PHP, než jsem s jinými webovými jazyky,
a když jsem se naprogramovat v PHP jsem obvykle nepoužívají printf
protože mi to rychlejší použít Schopnosti řetězec interpolace, že to má,
které půjdeme do a já vám ukážu, pár sekund,
vzhledem k tomu, v C jsme trochu muset udělat hacky věc, aby si to vytisknout správně.
Můžete totiž proměnné přímo do řetězce v PHP.
Printf je trochu příliš dlouho na to, co obvykle dělám. Ano, Ella.
[Ella] Obecně, pokud se dostanete chybě analýzy to znamená,
jako na C to nemůžu říct, kde přesně je chyba, a co to je,
Takže to znamená, podívej přes celou kódu a to přišel?
Je to obvykle cíleněji než to.
Myslím, že v tomto případě to bylo trochu mimo,
takže myslím, že v tomto případě jsme byli chybí středník.
To se snažil najít smysl všeho,
tak jako těchto interpretovaných jazyků, tlumočník se bude snažit
a co nejlépe, aby se všechno práci odpovídajícím způsobem.
>> Uvidíte, například v JavaScriptu
Budete často-line příkazy end se středníkem stejně, jako je tomu v PHP,
stejně jako je tomu v C.
V JavaScriptu některých tlumočníků JavaScript
v mnoha prohlížečích se dát do středníky pro vás
pokud jste náhodou, že chybí jim.
Budou se snažit a přizpůsobit pro některé nedbalosti na vaší straně.
To je místo, kde by to mohlo být se snaží a snaží a snaží věci fungují,
a pak nakonec se dostaneme k bodu, kde se říká v pořádku,
Nemůžu dělat věci pracovat na kauci, a to je místo, kde dostanete číslo řádku
že by se mohlo zdát trochu mimo od přesného místa.
Dobře, tak pojďme projít to opravdu rychle.
Jsme skončili s Ellou, takže pojďme se k Missy,
a Missy, co tisk řetězce 1 plus počet 2 vám?
[Missy] 3. >> 3.
Dává to smysl? Tak nějak?
Znamená to dát číslo? Znamená to dát řetězec?
[Missy] číslo. >> Je to číslo.
Ale je to tisk, takže to bude dát nějaký řetězec.
>> Jedna věc, kterou můžeme udělat, abychom zjistili, zda na to
Je-li my $ var = 1 + 2
a pak řekneme, ozvěnu GetType,
takže jsme použili třetí druh tisku zde.
Nyní můžeme vidět, co se děje tady.
Zde, co máme, je máme celé číslo z toho.
I přesto, že se přidá tento řetězec na číslo,
jsme nedostali řetězec z toho, stejně jako Missy řekla.
Jsme dostávali celé číslo.
Dobře, takže uvidíme, next up, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Dává to smysl?
[Kevin] Jo.
[Nate H.] Proč? Proč má smysl pro vás?
[Kevin] Protože je to jen mít řetězec, s číslem hodnotu nula.
Jo, skvělý.
Druh nejednoznačných situací, ale je to dobré vědět, co se stane.
Stella, co se bude dít dál s číslem 1 + string 2?
[Stella] 3. >> 3 znovu.
A v tomto případě, získáme řetězec nebo číslo?
>> Dejme to zkusit.
Někdo rychleji než mi dostat odpověď? Charlotte?
Oh, I didn't-v pořádku, uvidíme, budeme dělat stejný druh věci
kde máme řadu plus řetězec, a budeme echo typu,
uvidíme, co dostaneme.
Také jsme si celé číslo.
Nezáleží na tom, který z nich je řetězec, který z nich je číslo.
Pořád dostaneme celé číslo.
Je to stále bude dělat to, co bychom mohli očekávat.
Dobře, takže Sam, co 90 + 9 lahví piva na zdi?
[Sam] 99. >> 99.
Žádné láhve piva na stěně, i když.
To nám dává trochu více informací o tom, co se děje.
[Sam] Pokud jste psal 9 v dopisech
pak budete mít 90, ne?
[Nate H.] Jo.
Otázkou bylo, jestli bychom napsal 9 out jako N-I-N-E
bychom dostali 99 nebo 90?
Měli bychom si 90.
Je to doslova jen hledá číslice znaky.
Je to dost chytrý, aby rozpoznat počet slov, a že tak. Ano.
>> [Student] Je tam taková věc jako obsadit v PHP?
K dispozici je, a je to přesně tak, jak byste to udělat v C.
Co 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Jo, takže to, co by mohlo být překvapivé o tom?
Co by se stalo, kdyby jste stejný druh věci v C,
pokud jste 10/7 v C?
[Charlotte] To by jen vy-v závislosti na tom, jak jste typecasted Myslím, že
to by vám pouze omezený počet číslic za desetinnou čárkou.
Jo, takže omezený počet číslic za desetinnou čárkou.
Co jiného by mohlo být, to by vám nějaké číslic za desetinnou?
Často ne, tak znovu, v závislosti na tom, jak jste ji obsadit
může nebo nemusí jej převést na desetinné číslo.
Tady to bylo docela fajn, že to udělal.
Kdybychom vám ukáže vám to zpátky, když jsme začali dělat tento druh věcí v C
by pravděpodobně udělal trochu větší smysl
že není jen tak, aby 1.
A pak konečně, Jamie, co 7 + pravda?
[Jamie] 8. >> 8.
Co to znamená?
Myslím, že to dává jen pravda, hodnota 1.
Jo. Co se stane, když změníme, že na false?
[Student] 7.
Jo, tak si pamatujte, kde budeme mluvit o těchto binárních hodnot,
1 je zapnuto, 0 je vypnuto?
Nyní máme pravda je 1, 0 je false,
a nemusí to viděli v příkladech C, které jsme udělali letos v semestru,
ale historicky bool typ v C nebyl typ real,
takže lidé používají 0 a 1 v místě true a false.
To je projevem, který.
>> Dobře, takže jedna důležitá část o všem
je to, že máme tyto různé typy.
Mohou na sebe vzájemně působí.
Oni mohou často na sebe vzájemně působí v cestách, které jsou hezké, jak jsme viděli tady.
Je to pěkné, mít možnost řetězec 1 a číslo 2, přidejte je dohromady a dostanete 3.
To dává smysl.
Nicméně, když píšete webové stránky, a to zejména, když jste zpracování
uživatelský vstup, takže říct, že jsi napsal webový formulář
, který shromažďuje informace od uživatele a pak jde do zpracovávat
na zadní konec, na straně serveru ve vašem PHP kódu
pokud jste očekával, že hodnota, která uživatel napsaný a předložen
Do formuláře se celé číslo nebo být číslo s plovoucí čárkou, nebo něco takového
budete muset explicitně přetypovat
a pak udělat nějaké kontroly typu.
>> Vy nechcete jen spoléhat na tomto systému typu žonglování, aby to vyjde,
zejména z bezpečnostních důvodů a jen pro robustnost své webové stránky.
Jen něco mít na paměti, že když jste manipulaci dat z formulářů,
cokoliv, co přijde v poště nebo get superglobálních
ujistěte se, že jste vždy ověřit, a převést ji a obsadit jej.
A stejně jako jsme mluvili o chvíli před tímto obsadit
v PHP je přesně stejný jako v C, kde budete mít závorky
a pak typ.
Mějte na paměti, že.
Jedna funkce, která přijde vhod, když to děláš
je jsme používali a tohle je jako stranou,
jsme používali tuto GetType funkce tady
zjistit typ proměnné,
a když je to užitečné pro ladění a zjistit, jaké proměnné je typ
nechcete používat to, například, ve stavu, kdy
máte kontrolu, zda GetType na $ var = integer něco udělat.
To je špatný, špatný, špatný.
Místo toho jsou tyto funkce nazývají je integer, je řetězec,
je pole, které chcete použít místo toho, aby v tomto případě
co bych chtěl dělat, místo toho chlapa tady
je použít je celé číslo var.
A oni často odkazoval se is_ * v tom smyslu, že byste mohli nahradit * s integer,
string, et cetera, a jen aby se ujistil, opravdu rychlý
je to int PHP.
Vypadá to, že můžete udělat je buď int, nebo je tam je celé číslo, stejně?
Ano, alias, takže int celočíselné pseudonymy.
Cool.
>> Jak jsme na tom?
Pojďme zvednout tempo trochu.
Teď budeme mluvit o pole, tak jak můžete vidět
V další části spec budeme mluvit o tom, jak pole v PHP
jsou mírně odlišné, než jsou v C.
Ve skutečnosti, oni jsou trochu amalgámu
na pole, které jste poznali a lásku v C
kde všechno je stejného typu
uloženy po sobě a souvisle v paměti,
a budete mít tyto číselné indexy.
Máte index 0, index 1, index 2,
a uložení hodnot v těchto indexů.
Můžete také v C, když jste napsal pravopisu, hodně z vás
udělal hash tabulky přístup, a viděl, že tam jsme měli
jiný druh skladování, kde jsme byli mapování
klíč na hodnotu, takže když jste se pokusili uložit něco v hašovací tabulce
jste měli určit, že jste chtěli uložit s konkrétní klíč,
a že klíč určuje umístění hodnoty a kde by to být uloženy.
Jste trochu dostal obou těchto pojmů se děje v současně v poli PHP,
a jako výsledek, často nazývají tyto asociativních polí
kde jsme sdružující klíč v hodnotě.
V této další části budeme mluvit o jednoduchou PHP pole
kde máme klávesy A, B a C,
všechny řetězce, mapování celých čísel 1, 2, a 3.
A můžete mít klíče různých typů.
>> Můžete mít některé klávesy, které jsou struny, některé klávesy, které jsou celá čísla.
Můžete mít hodnoty různých typů.
Můžete mít hodnotu, která je řetězec, hodnota, která je celé číslo,
hodnota, která je předmět nebo další pole, například,
vše v jednom poli objektu, který je trochu zvláštní.
Nemusíte mít pole, které právě dostal jeden typ prvku v něm.
Můžete mít mnoho různých věcí se tam děje.
Druhá věc k poznámce je, že když vidím něco takového v kódu,
který je platný PHP prohlásit pole právě tak jako to, 0, 1, 2, 3, 4, 5,
že prohlásí inicializován $ arr být toto pole.
Ale to, co jste vlastně stále pod kapotou je tento druh implicitní
generace klíčů, kde jsme se dostali 0-0, 1-1, 2-2, 3-3.
A ukázalo se, že i když máte pole, jako je ten chlap tady
kde máte, B a C a klíče
a pak začít používat pole metodu dodávání začít používat toto pole jako hromada,
takže můžete vidět, že toto pole objekt, je toto pole opravdu stávat přetížení.
Můžeme jej použít jako pole. Můžeme jej použít jako tabulky hash.
Můžeme jej použít jako zásobník.
Když začít tlačit věci na tomto poli
První věc, kterou budete tlačit na to bude index 0 a pak index 1 a index 2.
Můžete si tento druh implicitního generace klíčů
pokud zadáte explicitně.
Tak, jak si zadat klíče explicitně, samozřejmě, je pomocí tohoto držáku zápis,
, který je podobný polí s výjimkou místo pouze umožňuje
celočíselné indexy v tady a teď necháme něco.
Pokud chcete, aby vaše klíčové být řetězec, měli byste zadat to takhle.
Pokud chcete, aby to bylo int, zadáte jej s int, kterou chcete použít.
>> Otázky týkající se, že tak daleko?
Jednou z pěkné věci o této myšlence
je, že můžete jen někdy mít jednu hodnotu uloženou s určitým klíčem.
Vrátíme-li se k našemu zařízení, dovolte mi, abych odstranit některé z těchto věcí.
A řekněme, že jsem inicializovat pole být 0, 1, 2, hotovo.
Kdybych teď vím, že například, když jsem echo $ arr [0]
Jdu si hodnotu 0 vytisknout,
a protože tam může být jedině jedna hodnota uložena pro konkrétní klíč
pokud uložím něco na $ arr [0], řekněme,
pak vím, že když jsem echo $ arr [0] znovu
Nebudu se dostat 0 vytiskne stejně jako předtím.
Já jsem jen dostanu.
Takže to je v podstatě říká, že nemůžu mít $ arr [0] ukládání 2 různé hodnoty.
To nemůže ukládat jak 0 a řetězec se, takhle doslova nahrazuje
co je v $ arr [0] dříve.
Důvod, proč jsem přinést to až se jej spustit, uvidíme, co se stane.
Podívejte se zde, že jsem se dostal 0 vytisknout a pak tady dole.
Není nový řádek tam, protože jsem byl líný a nedal, že dovnitř
Co je v pohodě na tom je, můžeme použít jako způsob
zachytit tuto myšlenku souboru
kde nemůžeme mít více klíčů v rámci pole.
Nemůžeme mít stejné klíče v poli.
Nemůžu mít klíčovou 0 a hodnotu 1 a klíče 0 a hodnotu a
nebo tlačítko 0 a hodnota true.
Klíče jsou-je jen 1 klíč v poli.
I když je možné mít stejný uloženou hodnotu
několikrát v poli pod různými klíči
to není možné, mají stejné klíčů vícekrát v PHP pole.
>> Podíváme-li se na tento další problém, unique.php,
tam, kde chceme otevřít PHP soubor
obsahující seznam řetězců, jeden řetězec na řádek,
a chceme najít všechny jedinečné řetězce v tomto souboru
vše, co musíte udělat, je použít jeden z těchto PHP pole
a používat řetězce v souboru klíče k tohoto pole
a zachovat aktualizaci naší nabídku, jak budeme ukládat tyto nové klíče.
Jak jsme si řádky z souboru, můžeme uložit v poli,
a na konci budeme mít jako naše klíče v našem poli
všechny jedinečné řetězce v souboru.
Dává to smysl?
Pojďme se podívat, jak to funguje.
Budeme otevírat, podle specifikace, nový soubor s názvem unique.php.
Otevřít. Jejda, omlouvám se, nový soubor.
Budeme začít ho se stejným počátečním a koncovým tagy.
Budeme jej uložit do oddílu 9, a budeme to nazývat unique.php.
Dobře, teď Zoom
Nápad tady je otevření souboru,
číst v souboru řádek po řádku.
Pro každý řádek v souboru
budeme mít pole, kde jsme
lince jako náš klíč.
A pak, když se dostaneme na konec zde
$ Arr tyto klávesy jsou jedinečné linie
ze souboru, protože víme, že když jsem dal linky do tohoto pole
několikrát to bude jen držet přepsání staré hodnoty,
a můžeme skutečně dát pole řádek jako sám jen tak.
>> To je divný.
Jsme ukládání stejný klíč hodnota pár znovu a znovu a znovu,
ale protože jsme zaručit, že tam bude jen 1 klíč nazývá řádek
takže pokud máme soubor, který říká, že-soubor zvířecích zvuků a má Haf haf,,
meow, meow, bučet, bučet, a pokaždé, když čteme zvířecí zvuk out
jako tkanina a uložíme v našem poli dostaneme Haf, a pak podruhé
uložíme Woof přepíše poprvé, že jsme uložené to.
Na konci budeme mít pouze jednu položku v poli
pro každou z zvířecí zvuky v našem souboru zvířecí zvuky.
Myslíte si, kluci si jisti, že můžete řešit otevření souboru v PHP?
Jeden způsob, jak to udělat, pojďme na tento rychle-jeden způsob, jak to udělat
je funkce fopen, jak jsme viděli dříve.
Můžete fopen some_file.txt.
Můžete jej otevřít v režimu pro čtení, stejně jako v C.
To je jeden naprosto dobrý způsob, jak to udělat.
Můžete také pak pro čtení v souboru řádek po řádku
mají stejné funkce, mnoho z nich, které jste udělali v C.
Máte fgets.
Máte feof, i když se nám nelíbí, že pomocí
protože, pamatujte, že to není velký v C.
Můžete to udělat stejným způsobem,
ale tady je opravdu super věc.
Je nám líto, nechci dělat $ file, ale tam je funkce nazvaná soubor v PHP,
a tato funkce tady je v pohodě, protože to přečte celý obsah
spisu, který určíte, tak some_file.txt,
přečte celý obsah tohoto souboru do pole
a pak umožňuje iteraci nad ním, což je docela šikovný.
>> Pokud půjdeme, například pro náš webovém prohlížeči
a my se podíváme na Google pro tento soubor PHP
můžete vidět, že naše manuál říká, že soubor přečte celý soubor do pole,
a můžeme file_get_contents vrátit obsah souboru jako řetězec,
ale obvykle jen na to, jako pole, je opravdu pěkné, protože to, co dělá
je to rozbije tak, že každý prvek
v poli je jeden řádek souboru,
takže pokud se podíváme na soubor 0, to je první řádek souboru.
Soubor 1, druhý řádek, soubor 2, třetí řádek, a tak dále, a tak dále.
Nebylo by hezké, kdyby to bylo všechno, co musel udělat v C?
Docela šikovný.
David ukázal to v přednášce, a účastníků stylu ukázal byl
že kromě našeho standardu pro loop-v PHP jsme, že
for ($ i = 0; i <10; i + +),
a můžete to udělat v PHP taky, to samé-
máme také tuto skvělou konstrukci s názvem foreach.
Foreach je opravdu užitečné, když iterace poli nebo těchto datových struktur
protože vám umožní vytáhnout každý prvek pole
aniž byste museli ručně udělat Indexing sami,
aniž by bylo nutné ručně vytvořit proměnnou indexu, zvyšte ji,
vytáhněte hodnotu v poli v tomto bodě, protože to je velmi běžná věc dělat.
>> Pravděpodobně jste udělal, že tuny době, kdy jste dělali C věci
nad semestru, takže v této foreach
můžeme smyčku tohoto souboru pole,
a syntax je, že chceme nyní smyčce během tohoto pole
a určit, že proměnná budeme používat pro ukládání
prvek tohoto pole lokálně, místní oblasti působnosti této smyčky foreach,
se budeme říkat line.
Pokud je to soubor několika slov a tam je jedno slovo v řádku
bychom mohli nazvat to slovo stejně, opravdu jen dáte to jméno,
co chcete říkat,
a pak uvnitř smyčky, můžete dělat, co chcete s tímto proměnných.
Pokud to není dost, aby si hodnotu pole a budete také chtít, aby se
index spolu s ním si můžete zadat název indexu
stejně jako hodnota, a teď máte přístup k 2 proměnných.
Máte $ i a vedení
kde $ i je index v poli,
a přímka je přímka, že získat ze souboru.
Například, pokud chceme vytisknout echo řádku 0 v souboru jako je tento,
bychom mohli udělat to stejně jako to, "Line $ i ze souboru $ line,"
a tady je něco, co také ještě neviděli ani
kde jsem prostě úplně přeskočil celý tento% s% d podnikání
že jsme se museli vypořádat v C, a místo toho jsem šel rovnou do
psaní proměnné v souladu v mém řetězci.
>> To se nazývá proměnná interpolace, interpolace string
kam nádivkou proměnné přímo v, a interpret PHP
je dost chytrý na to, když je to čtení přes řetězec, který začíná s uvozovkami-
ne jediné citace, se samostatnými uvozovky, můžete to udělat,
ale s dvojitými uvozovky, protože přečte to hledá proměnných.
Je to lov je dolů, a pokud to bude považovat proměnné, bude mít hodnotu proměnné
a nacpat si ho do řetězce, pokud to může převést do řetězcové vyjádření,
což je docela šikovný.
Pro tuto chvíli, pojďme komentář mimo zbytek všeho,
uložte tento, a to, co můžeme udělat, je můžeme otevřít soubor
že můžeme volat some_file.txt-let 's vytvoření nového souboru,
a můžeme dát si pár věcí nesmysl sem jen vyzkoušet všechno ven,
uložit, říkají some_file.txt, jak dělám tady nahoře,
a teď když jsem oddálit jen ujistit, že všechno je ve stejném adresáři,
vypadá to, že mám unique.php a some_file.txt ve stejném adresáři.
Kdybych spustit php unique.php
vidět, jak to vytiskne každý řádek v mém souboru a co linka je?
>> To je dost silný, ne?
Podívejte se, trvalo 3 řádky kódu otevřít soubor.
No, 4 řádky kódu. Nedokážu spočítat dnes jasně.
Ale opravdu jen 2 zajímavé řádky kódu, protože další 2 byly složené závorky,
ale v tomto hodně kód, který jsme byli schopni otevřít soubor, iterovat přes to,
vytáhněte číslo řádku a řádku sám
a vytisknout.
Vychytávky ke stažení. Charlotte.
[Charlotte] Mám otázku o syntaxi.
Takže foreach se zabývá každou jednotlivou řádku souboru, který si otevře,
a pak, když chcete dělat věci s každým řádku stačí to udělat jako
a pak přidružit hodnotu.
[Nate H.] Co můžete udělat právě tady otázka byla
foreach má co do činění s polem, takže foreach syntaxe
je opravdu foreach, a všimněte si, že tam není prostor
nebo něco mezi pro a každý.
Musí jít přímo vedle sebe,
a pak se v poli,
a pak máte tento další klíčové slovo názvem jako má být tam,
a pak po jak můžete buď dát jednu název proměnné,
V takovém případě je to bude vytahovat hodnoty pole,
ne indexy, nebo pokud si to, jak jsme napsal níže
dostanete klíče a hodnoty.
Ty mají foreach prvek pole nebo pár pole, jak výčnělkem, hodnoty
nebo jako jen hodnota.
V závislosti na tom, co budete potřebovat, pokud nepotřebujete klíče,
pak může jít s hodnotou.
Pokud chcete, aby tlačítek můžete jít s nimi taky.
>> [Charlotte] Také jsem si uvědomila, že nikdy deklaroval i nebo linku.
Jak to ani neví, co to je?
[Nate H.] Co myslíš tím prohlásit?
[Charlotte] Nikdy jsme jim řekli, co jsem nebo linka prostředky.
[Nate H.] Nikdy jsme řekli počítači, co jsem nebo čára značí, pokud jde o-
[Charlotte] To, že jsou indexovány nebo Jsou v-
[Nate H.] Nikdy jsme řekli, že to má být index nebo klíč a hodnota,
a to proto, že to je PHP interpret.
To slouží jako prohlášení a říká pořádku, klíč bude
proměnné volal i uložen v proměnné s názvem i.
Hodnota se bude uložen v proměnné s názvem linky,
takže to slouží jako prohlášení o těchto proměnných
a říká, že $ i je klíč, a $ line je hodnota.
Jo, Ella.
[Ella] Pokud jsou klíče neudělal číselně
jak se rozhodnout, v jakém pořadí to bude tisknout vše?
Je to stejně jako pořadí to zapsané v?
[Nate H.] Pojďme to zkusit.
Pojďme vytvořit proměnnou s názvem arr,
a co můžeme udělat jde do 7.
Řekněme, že 0 jde do dalšího pole s 1, 2, nebo jablko.
Řekněme, že 7 jde do 1, b jde do 2,
a 3 jde do 4.
To je tak trochu blázen hledá například proto, že jsme míchání
řetězce a celá čísla všude kolem.
Není tam žádný skutečný aby na toto pole.
Chci říct, že jsme objednat vše v abecedním pořadí podle klíče.
Jsme si mohli objednat vše abecedně hodnotou.
>> Mohli bychom zkusit a vzít v úvahu, že některé řetězce, některé jsou ints,
a jsme si mohli vyzkoušet a převést je všechny do stejného typu a uvidíme, co se stane,
nebo můžeme uvažovat je v hodnotě, ve kterém jsme již zadali
kam jsme toho chlapa do první, ten chlap na druhém, ten chlap ve třetích,
ten chlap ve čtvrtém, et cetera.
Podívejme se, co se stane, když jsme se spustit tento kód.
Pokud budeme posouvat dolů a udělat stejný druh věci,
a tady to není vytištění nových linek.
Když číst věci z tohoto souboru bylo včetně nových tratí v hodnotách,
který byl důvod, proč se vytisknout pěkně, zatímco tady to ne,
tak to je důvod, proč je všechno smushed dohromady.
Dodejme, že v této nové řadě jen proto, aby se věci pěkné.
Pojďme spusťte ji, a tak zde
podívejte se na to, co se stalo.
Je vytištěn všechno v pořadí, ve kterém se dát do pole.
To zachovat pořádek v tomto smyslu.
>> Vraťme se zpět k tomuto problému unikátů
tam, kde chceme být schopni iteraci souboru,
a dáme to some_file.txt,
a budeme iterovat přes to takhle.
Řekli jsme, že jsme chtěli použít pole, aby se ujistil, že bychom dostali všechny
jedinečné linie ven, a tak bychom mohli udělat velmi snadno
jen o skladování v poli, které jsme samozřejmě prohlásí mimo rámec smyčky,
A my jsme řekli, že pokud jsme použili řádky v souboru jako klíče v našem poli
pokud jsme vstoupili duplicitní řádek bychom být přepsání předchozí hodnotu.
To není vůbec možné mít 2 klíče, které jsou shodné v jednom poli.
Můžeme dělat jen to.
Budeme se zbavit tohoto echo prohlášení tady.
Zde jsme uložení řádek v souboru na našem poli
pomocí se jako klíč.
Nic na tom není, a ukázalo se, že nemáme ani potřebovat klíč.
Nepotřebujeme, aby i proměnná.
V tomto bodě, pokud bychom měli udělat další smyčky foreach
a my jsme byli ve smyčce na každém arr
a linka teď, když jsme echo-oops, sorry.
Nemůžeme používat čárku. Musíme použít jako klíčové slovo.
Nyní, když jsme echo řádek bychom se měli dostat všechny unikátních slov v souboru.
Pokud půjdeme do some_file.txt,
a řekněme, že to jablko, banán, jablko, jablko, banán,
Pokud máme vytištění všech unikátních slov v tomto souboru bychom měli získat pouze
jablko a banán vytisknout.
Pokud šetříme to, teď tady budeme přibližování se
php unique.php, a ta-da.
Úspěšně jsme uniqued soubor.
>> Závěrečná část tohoto problému je výzvou k třídění tohoto pole před vytisknout to
protože v tomto jednoduchém příkladu, který jsme právě udělali
jsme měli štěstí v tom smyslu, že soubor-
Udělali jsme to vymyslel příklad s jablky a banány.
To už jsou seřazena.
Ale pomocí jednoduchého třídění funkce můžete třídit pole, což je docela šikovný.
Poslední věc, že ​​chci mluvit s vámi asi opravdu rychle
je, že tento druh PHP je všechno v pořádku a dobré, a je to super padnoucí do ruky
vědět, jak to udělat, pokud budete někdy potřebovat udělat malé, rychlé věci programově.
Například, když budu muset napsat program, který, řekněme,
dává všem do sekcí nebudu chodit a psát v jazyce C.
Bude to trvat dlouho.
Bude to mít trochu bolesti, zejména v případě, že se jedná o soubory,
stejně jako vy jsem viděl.
Je to tak hezké, že se právě v tomto hodně kódu přímo zde
jsme byli schopni prorazit souboru, vytáhněte všechny jedinečné hodnoty
a vytisknout je zpátky.
>> Nicméně, pro vaše úkoly, pro vaše projekty,
pokud stavíte webové stránky s PHP je síla, která
utíkáme naše PHP soubory prostřednictvím tohoto tlumočníka,
a tlumočník je zpracování všechno uvnitř tagů PHP,
takže vše ostatní nedotčené a vyplivl výsledky.
Můžeme to udělat stavět HTML programově.
Teď, když jsme se vrátit k spec, poslední problém v spec
mluví o této myšlence spojování
a vytvoření drop-down menu,
které mohou nebo nemusí chtít dělat, v závislosti na tom, co vaše konečné projekt dělá,
který umožňuje uživateli vybrat ze seznamu všech možných koncentrací
jejich jedné koncentraci.
Nyní, to je tak trochu bolesti typu na to
a udělat vše ručně, a to zejména, když jste museli ujistit,
že máte všechny lomené závorky na správném místě a všechny citace na správném místě,
tak s PHP můžete dělat programově, a můžete to udělat opravdu rychle.
>> Pojďme se podívat, jak to udělat.
Budeme otevřít nový soubor.
Budeme dát v našich PHP tagy.
Budeme říkat, že concentrations.php,
a teď, když to děláš, trochu dobrá věc myslet
když se snažíte kombinovat a zápas si PHP a vaše HTML
je přijít na to,, jo, co je ta část, která chci programově generovat?
Co je ta část, která mohu programově vytvářet?
Je pravda, že můžete udělat všechny vaše HTML
uvnitř PHP bloků.
Můžete echo všechny HTML jako řetězce.
Například, když chci začít dělat zvolte značky uvnitř PHP
Mohu říci, echo, říkají vyberte název = koncentrace,
a pak dole bych mohl mít jiný echo tag
nebo jiný echo nazývá zavřete vyberte.
To je jeden způsob, jak to udělat, protože to, co to je doslova dělat
je vytisknout tento řetězec, když je to běh přes tlumočníka PHP,
takže výsledek bude HTML.
Pokud bych tento soubor uložit jako je teď
a běžím php concentrations.php
podívat se na to, co jsem dostal.
Dostal jsem tento otevřený Zavřít Vyberte značku.
>> Pokud bych měl udělat, a já jsme byli uložit tento výsledek do souboru,
říkají, concentrations.html-wait, to vypadá, že l je pryč na druhou stranu-
Nyní když otevřu tady concentrations.html vidíte mám validní HTML soubor.
Je to trochu divné?
Jsme používáte PHP pro vytvoření HTML, vytvořit validní HTML.
Způsob, jakým jsme to udělat, je budeme mít jen tiskové PHP
HTML, že chceme, aby se tisklo.
To je doslova jak PHP webové stránky fungují.
Když navštívíte webovou stránku, která vás pošle k něčemu, jako je
něco, něco, něco, co dot com lomítko index.php
Počítač je doslova vyvolání index.php,
běží přes PHP interpretru, a bez ohledu na nevyžádanou vyjde
to posílá zpět do prohlížeče a říká hej, prohlížeč, interpretovat to jako HTML.
Pěkná věc je, že to může být bolest neustále psát echo, echo, echo, echo
a uzavřít vše v uvozovkách, jako je tento, takže pokud chcete psát
HTML, které to bude statické sami, můžete to udělat takhle,
dát ven, zavřete jej,
a pak zde dal jen uvnitř PHP značek, které znáte
Chcete-li programově vytvářet, a v tomto případě je to tato možnost tagy
, které jsou bolest generovat.
>> Například bychom mohli generovat tisíce možností tagy
tím, že dělá něco podobného, ​​$ i <1000, i + +
a říkat echo hodnoty opce = $-jejda, to nemůžu udělat, že.
Dobře, pojďme to zkusit a uvidíme, co se stane.
$ I a pak říká $ i </ option.
Spíše než by museli psát na to, že možnost označit tisíc různých časů
Jsem pomocí PHP kódu generovat automaticky, programově.
Druh šikovný. Jo.
Pamatuji si to, že je zmiňován v jeden přednášky nebo návodu,
ale jaký je rozdíl mezi uvozovkami,
normální ty a tyto jednotlivé věci?
To je vlastně něco, co jsem udělal špatně tady, že jsem vám ukážu.
Jednotlivé citace neumožňují žádné speciální znaky,
takže vše uvnitř jednotného citovaného řetězec je interpretován doslova.
Kdybych měl \ n vnitřek apostrofů a jsem zachránit to, například,
a teď jdu sem a spusťte jej,
oops, kam jdu?
Oh, je to proto, že jsem zapomněl $.
>> Nyní, když jsem otevřít-vlastně, tady, budeme se zbavit psaní do souboru.
Budeme jen číst.
Zde vidíte, že mám tento doslovný \ n v řetězci, jako ne skutečné novém řádku,
a podobně, místo toho, aby ve skutečnosti interpolací hodnotu této proměnné
to mi $ i sama o sobě, která je tak trochu bolesti.
Cesta kolem tohoto je použít uvozovky,
a pak při použití uvozovek se bude skutečně
správně interpolovat hodnoty všech těchto proměnných v zde
a také rozpoznat tento \ n být nová linka, která je
a ne \ n.
Použití jednotlivých ty je pěkné, když máte
znaky, které by mohly být interpretovány jako speciální znaky, protože pak nemusíte
uniknout jim neustále.
Věci se mohou dostat chaotický, a často se tak, jak jsem to udělat,
jen dělat věci jednoduše, je to, že pokud budu mít nic
HTML jako v mém kódu budu zahrnovat edit v apostrofech
a pak použijte tento operátor zřetězení
zřetězit proměnné a.
To je další způsob, jak to dělá
kde máme tečku, co se děje se připojit je to řetězec
s tím s tím s tím,
a teď nemám uniknout tyto uvozovky.
Nemám použít tento chlapa k útěku.
Budou doslova vytisknout jako uvozovek a pak ten chlap tady.
To je další způsob, jak míchat všechno dohromady.
>> [Student] Také, když zopakoval GetType tam byly žádné uvozovky vůbec.
Správně, takže echo je trochu zvláštní v tom smyslu, že nepotřebujete závorky.
Nemusíte mít uvozovky nutně kolem proměnných,
jako je platný říci echo $ i, a to bude interpretovat jako řetězec.
Bude to dělat obsazení, takže jsme mohli udělat, a to je platné taky, ale nepotřebujeme ji.
Je to volitelné.
V tomto týdnu se problém sadě pozor na spoustu tohoto druhu věcí
kam míchání a odpovídající HTML s PHP
stejně jako to, a teď, když jsme se posunout zpět a my spustit tento
můžeme vidět, že máme spoustu možností hodnot
že zrovna vytisknout.
Máme všechny tyto HTML, který dostal generován opravdu rychle pro nás.
Nechám to jako cvičení.
Je to velmi podobný souboru čtení, které jsme dělali dříve.
>> K dispozici je concentrations.txt soubor, který si můžete stáhnout dolů z CDN,
a můžete ho otevřít pomocí stejné foreach trik, který jsme udělali dříve,
a foreach stačí echo možnost a zapojte
odpovídající hodnoty, příslušné klíče a indexy,
a pak dostanete drop-down, který doslova vytváří
programově pro ty všechny různé koncentrace na Harvardu.
Šikovný věc mít.
Tam je spousta konfigurace věci pro tento úkol.
Pokud jste tak dosud neučinily, že už se další půlhodinu, hodinu,
nějaký čas dnes rozhodně pro jistotu,
projít spec problému set,
vidět, co se děje s zřízení vhost, místní hostitel, všechny ty věci.
Jedna věc je poukázat právě teď, je, že
ve většině problémových sad jsme se jít do složky Dropbox
a pak stahování problém nastavenou soubor zip a rozepínací jej.
Pro tento problém soubor, který nechcete.
Chcete-li jít do této vhosts adresáře.
Budete chtít jít do vhostů a jít do místního hostitele adresáře v něm,
a to je místo, kde budete chtít strhnout zip soubor,
rozbalte ho, a připravte se na to.
Budete muset následovat kroky pečlivě.
>> Máte-li jakékoli dotazy, pošlete e-mail, poslat ho na Diskutujte, přišel úřední hodiny.
Díky hoši. Příští týden budeme mít recenzi relace pro kvíz.
Užijte si poslední problém sadu. Doufám, že to všechno jde velmi dobře.
[CS50.TV]