[Seminář] [Kohana: Lehká PHP Framework] [Brandon Liu] [Harvard University] [To je CS50.] [CS50.TV] Ahoj všichni. Mé jméno je Brandon. Jsem junior zde na vysoké škole dělat informatiky, a dnes budeme mluvit o tom, Kohana, což je framework pro vývoj webových PHP. Dnes se bude žít kódování seminář, tak jsem v podstatě trávit 5-10 minut vysvětlovat, co Kohana je, a pak jsem doslova stavět super jednoduchý blog pro vás tady doslova od nuly. Chystáme se stáhnout kód z webových stránek Kohana, a budeme se začít stavět blog, a doufejme, že to bude velmi poučné, protože budete vidět snad možná budu dělat nějaké chyby, a uvidíte mě dostat z nich, nebo uvidíte můj myšlenkový proces, jak jsem stavět prostřednictvím tohoto blogu, a mezitím, budete také seznámit s rámcem sám. Doufejme, že to bude velmi poučné cvičení. Za prvé, co přesně je rámec? Pokud jste byli s CS50 tak daleko, jste opravdu pracoval s některou Zatím rámce, a to je to. Vy jste asi udělal jeden vývoj webových pset již, a řekněme, že budete i nadále vytvářet webové stránky a udržet vytváření webových stránek. Začnete všímat pár věcí. První věc, které si všimnete, je, že jste pravděpodobně dělat stejné věci znovu a znovu po celou dobu, věci, jako je čištění uživatelských vstupních dat, věci, jako je organizování souborů určitým způsobem. Další věc, kterou budete také pravděpodobně všimnete, je, že váš kód může začít být velmi, velmi chaotický, a můžete nechat chaotický a jen velmi těžké ji udržet, nebo můžete začít strukturovat svůj kód a dělat to modulární v některých způsobech, jak se to lépe spravovatelný. To je místo, kde webových rámců v podstatě přišel dovnitř Tito lidé, kteří se postavili spoustu webových stránek, řekli, "Nepotřebujeme, aby znovu to pokaždé jsme se vytvořit webové stránky." "Proč jsme jen udělat balíček, který dělá všechny tyto věci za vás každý, když chcete vytvořit webové stránky? " A tak, že když uděláte nové webové stránky, můžete soustředit jen na to, co přesně tento konkrétní webové stránky je asi. Nemusíte opakovat všechny různé konfigurace a separace kódů a přepisování kódu že budete často muset udělat, když jste dělat webové stránky. Myšlenka je, že rámec umožňuje napsat kód na vyšší úroveň aniž by se museli starat o podrobnosti na nižší úrovni. Detail nižší úrovni by mohlo být něco jako zabývající se čištěním uživatelských vstupních dat. To je něco, co byste měli opravdu obávat. Ty by se měly zaměřit na to, co vaše webové rozdělení je vlastně o. To eliminuje hodně často používaný kód. Je to architektura pro váš projekt. Nejpopulárnější z nich bude Model-View-Controller, které budu mluvit o tom, ve vteřině. A mnohokrát se tyto rámce ztělesňují soubor postupů, pravidel a osvědčených postupů pro vás k použití tak, že když přijme web rámec musíte napsat kód v určitým způsobem, a to je obecně dohodnuté souboru zásad komunitou, která je všeobecně přijímaný být dobrý způsob psaní kódu. To je váš kód lépe spravovatelný, více použitelné, a tak dále a tak dále. A konečně, co chci zdůraznit, o rámcích proti knihoven je tato představa o opaku kontroly, a to je to. Rozdíl mezi knihovnou a rámce je, že s knihovnou jste stále psát hlavní program, a jste trochu vyvolání knihovnu a vyzvala knihovny udělat něco pro vás. Rozdíl mezi knihovnou a rámcem je, že rámec začíná s kontrolou, a to vyvolá svůj kód, takže si můžete myslet na to, jak - to je důvod, proč se to jmenuje rámec - rámec stanoví tento rámec a strukturu kódu, a vyplnění děr, a to bude zřejmější v druhém když vidíte, abych začal psát kód v kontextu rámce. Uvidíte, že jsem vyplňování mezer, a rámec je druh řízení všechny pohyblivé díly, a musím dát kousky na správných místech. Dnes budeme mluvit o Kohana, , který je jedním z mnoha PHP rámců. Existují webové rámce, a tam jsou ty prakticky v každém jazyce, a zachytil jsem Kohana Kohana, protože je pravděpodobně a obecně uznáván jako nejjednodušší PHP rámce vyzvednout. Je to nejlehčí. Existují i ​​jiné ty, které tam přicházejí s mnoha, mnoha dalšími funkcemi, ale oni inklinují být těžší vyzvednout. A konečně, Kohana používá architekturu MVC. Je to dost lehký, že můžeme doslova postavit projekt tady přímo před vašima očima, a můžete do značné míry sledovat spolu docela snadno. Co je architektura MVC? To je zkratka pro Model-View-Controller, a možná, pokud si myslíte, že o kód, který jsem psal tak daleko pro některé z vašich vývoj webových aplikací psets budete mít možnost vidět něco z toho, ale obvykle, když začnete psát složitější webové aplikace, rozdíl mezi těmito 3 segmenty se stává více a více zřejmé. Položil jsem se na MVC tady trochu jako zásobník, a často uslyšíte lidé mluví o komíny při vývoji webových aplikací, a to je pro ilustraci myšlenku, že každá vrstva, každá složka ve skutečnosti se snaží komunikovat pouze mezi 2 další komponenty. Někdo přistupuje vaše webové stránky jako klient nebo prohlížeči. Jsou vzájemně s programem přes zobrazení kódu. Pohled kód interaguje s regulátorem. Regulátor interaguje s modelem, a model komunikuje s SQL databází. A není tam žádný poskakování mezi pokud nám napíšete váš kód správně. Co tyto věci dělat? Tento model je v podstatě kus kódu, který se zabývá daty. Cokoliv, co se zabývá databázi, s objekty, které uchovávají, nebo získávání těchto objektů v databázi, že to všechno ovládal model. Možná máte objekty v databázi. Chystáme se vytvořit model, který má co do činění s příspěvky, takže příspěvek může mít některé atributy k němu. Můžete mít funkce kolem ukládání těchto příspěvků nebo načítání příspěvky nebo filtrování příspěvků a tak dále a tak dále, a to je vše, kód, který je ovládal model. Regulátor je druh logiky aplikace, a mnoho různých věcí, může jít v aplikační logiky. Pokud mluvíte do jiné API, které mohou být tam, kde máte co do činění s aplikační logiky. Pokud se snažíte muset přinést data z několika různých modelů a musí je spojit nějakým způsobem, že často mohou být řešeny prostřednictvím regulátoru. Například na Facebooku, pokud jste přítel někoho, pak snad, že akt, kterým se stanoví, že vztah může být provedeno pomocí regulátoru. A konečně, názor je kód, který se vytváří to, co je skutečně vidět. Mnohokrát jsem si, že v CS50 psets nemají vás opravdu povzbudit lidi, aby oddělit tyto tři věci. Pravděpodobně budete-li mít tento velký, dlouhý soubor na vrcholu uděláte nějaký SQL dotaz a možná dělat nějaké zpracování Na základě údajů, můžete načíst z databáze, a pak budete mít všechny své HTML v dolní části. A možná zjistíte, že jak si vytvořit více a více stránek že budete mít nějaký kód opakování, a také, to je váš soubor dostane opravdu velký a dlouhý a stává se nemotorný spravovat. Důvodem, proč je tak dobře MVC považovat je z mnoha důvodů. První věc je něco jako oddělení se týká což je myšlenka, že když máte - v ideálním případě 1 kus kódu by měly udělat 1 věc, a to opravdu dobře, a vy byste neměli kombinovat kusy kódu, které dělají rozdílné věci. Například, zobrazení kódu a kód modelu, oni opravdu nemají být příbuzný. Nemají být ve stejné soubory, takže pokud je to možné, oddělit se takže je snadné udržovat. Další věc je opětovné použití kódu. Můžete najít sami psát stejný dotaz SQL nebo dělat podobné dotazy, které by mohly být odstraněn do 1 funkce, a to je myšlenka modelů a regulátory, mají ji v samostatné funkce, které lze znovu použít na různých místech ve vašem projektu. A konečně, že je vázána na sušení kódu, nebo neopakovat se, neopakují se. To je velmi srozumitelný ve vývoji. Kdykoli je to možné, nechcete opakovat sám sebe, protože pokud opakovat sami,  je to mnohem dražší na údržbu. Chcete-li změnit 1 věc, budete muset všude změnit, a to vede k chybám, a je to hrozné. Pořádku. Jakékoliv dotazy zatím asi Kohana vůbec? Skvělé. Teď jdeme do toho ponořit do živého kódování zasedání, a doufejme, že vše dobře dopadne. Chystám se v podstatě vytvořit tento web na jednom z mých vzdálených serverech, a tímto způsobem vy můžete také naleznete na webové stránce a přístup na webové stránky, a také životní prostředí je nastavován lépe než můj vzdáleném počítači, protože je to s operačním systémem Linux místo OS X. Jsme doslova začnou. KohanaFramework.org. Jdu stáhnout kód na internetových stránkách. Budu kopírovat adresu odkazu, jít na můj server, stáhnout, a já jdu na to extrahovat. [Student] Co je největší můžete udělat text? [Brandon Liu] Je to lepší? [Student] Je to proveditelné? [Brandon Liu] Jo, to je v pořádku. Stáhnul jsem si soubor ZIP a rozepnul, že do adresáře s názvem Kohana, a budeme přejmenovávat, že CS50-Kohana, a pojďme dovnitř Úžasné. Zde můžete vidět spoustu různých souborů. Většina z vás může ignorovat - Nejsme jít přes každý soubor, který je v zde kvůli našim časovým omezením, ale obecně při instalaci Kohana, první věc, kterou udělat je jít do adresáře, a budete v podstatě udělat nějaké testy prostředí a kdoví co ještě zajistit, aby vaše prostředí je správně nastaven pro spuštění Kohana a ujistěte se, že je vše v pořádku. Můžete vidět, většina věcí prošel, ale obecně vždy narazíte na tento problém 1 kde si stěžuje, že některé složky nelze zapisovat, a to proto, že z některých oprávnění. Nevím, kolik vy jste se dozvěděli o oprávnění k souborům v CS50, ale pokud to vývoj webových aplikací, budete spouštět do této problematiky mnoho. Budu dělat, že zápis a myslím, že i já musím - tam jdeme. Dobře, takže teď můžete vidět všechno prošel, a teď to vám řekne, přejmenovat soubor install.php. Jdu se přesunout soubor install.php na installed.php, a teď když jsem aktualizovat, to mi dává nějakou chybu, a to je místo, kde ladění vypovídací To je místo, kde můžete zjistit, co se vlastně bude dít. To je tím, že ve výchozím nastavení, Kohana předpokládá, že Váš projekt je v kořenovém adresáři domény, tak to je očekával, abyste se na demo.brandonkliu.com. Musíme říct, že, že je to vlastně v podsložce. Je to v podsložce nazvané CS50 Kohana. Jde o to, že to interpretací CS50-Kohana jako něco jiného, ​​což jsem si vysvětlit, aby vás ve vteřině. Ale měl bych vám říct, že je to něco, co je třeba očekávat. Co budeme dělat, je, že se chystáte jít do této složky s názvem bootstrap.php, což je složka konfigurace, kde mnoho různých věcí, jsou nastaveny. Otevřel jsem, že až. Pak možná jedna z prvních věcí, které jsem si udělat, je změnit časové pásmo. A pak uvidíme. Aha! Přímo tady. Existuje spousta různých konfiguračních rčení sem, ale ten Hledám je to, co nazývá base URL, a ve výchozím nastavení jsem si to nastavit na Kohana, ale budu se změnit na CS50-Kohana, a myslím, že by se to opravit. Ano, ideální. Ve výchozím nastavení je vidět, že to funguje, říká, "Hello World". Kde se to vzalo? Jak jsme se dostali k Hello World? Kde přesně je kód, který vlastně napsal, že? Abychom pochopili, že budu představit tento koncept nazvaný směrování. Skoro všechny webové rámce mají koncept nazvaný směrování, což je kus softwaru, který bude mapovat určité URL na určité části kódu v rámci svého rámce. Například, pokud máte nějaké URL a můžete jít do nějaké URL, jako foo.com / blog / all poté, co rámec bude dělat - nebo alespoň to, co Kohana se bude dělat - je, že to bude najít třídu nazvanou regulátor blog, a je to chystá spustit funkce jmenoval akci všechny. Vím, o čem mluvím třídy a funkce, a vím, že vy se nevztahuje třídy a funkce v ještě CS50, ale teď, si můžete myslet tříd jen jako skupinu funkcí, způsob seskupování funkcí dohromady. To je opravdu vše, co potřebujete vědět. Nyní, když se podíváme na naši strukturu složek, uvnitř složky aplikace je další složka s názvem třídy, a ostatní složky se nazývají Controller a Model. Podíváte-li se uvnitř adresáře Controller, vidíme, že tam je soubor s názvem Welcome, a vidíte, tady je třída nazývaná Controller Vítejte, a tam je funkce s názvem Action Index, a to, co dělá, je, že nastaví tělo Vaši odpověď na Hello World. To je místo, kde se tento kód napsán. Další otázkou je, dobře, jsem nešel do bla, bla, bla, / welcome / index. Jak jsem skončil tady? No, to je prostě proto, že zde v dolní části našeho bootstrap souboru kde jsme si stanovili naše trasy můžete vidět, že nastavit některé výchozí hodnoty pro vás. Výchozí ovladač je vítaná. Výchozí akce index. To je důvod, proč, když jsme dali nic tam automaticky šel na úvodní regulátoru a index akce. Vše, co dělat tak daleko smysl? Nyní si můžete udělat víc, než jen jít do regulátoru a konkrétní opatření. Můžete také předat parametry regulátoru. Jen jako příklad, Chystám se přidat další akci na tento řadič ukázat. Říkejme tuto akci Echo, protože to bude říkat, co to dá, a tak jsem v podstatě jít chytit parametr, který se bude poslán skrze mne do programu směrování, a jak můžete vidět zde, tento řádek tady, vidíte, že to v podstatě znamená, že máte řadič a máte /, a budete mít akci a máte další /, a že to bude parametry, a proto máme tento název ID v lomených závorkách, znamená to, že jsme pojmenování tohoto parametru ID. Později v mém řadič kód, pokud chci chytit do rukou tohoto parametru, Mohu použít kód, který jsem napsal, najít parametr s názvem ID. To je to, co jsem tady udělal, a jdu se vrátit a říct, "Říkal jsi, že" to. A tak teď když půjdu na našich webových stránkách, Chodím do cs50-kohana/welcome/echo/Helloooo-- oh, to je pravda. K dispozici je 1 krok jsem vynechal. To je část živé kódování myšlence. Tady je 1 věc. Pojďme se podívat. Takže normálně standardně s mnoho z těchto webových aplikací budete muset zahrnout tento index.php věc v URL, protože myšlenka je index.php je jakýsi vstupní bod vaší žádosti, ale samozřejmě, to je trochu nepříjemné mít. Nechcete mít index.php objeví v URL, a skoro každý webový rámec po vybalení z krabice má tento index.php problém, a tak budete muset přijmout některá opatření, aby byl schopen odstranit to. A tak v tomto případě, to, co budeme dělat, je budeme používat soubor s názvem. htaccess, a to je něco, co je specifické pro webový server Apache, a to může dělat věci, jako je přepsání adres URL a přesměrování URL a tak dále a tak dále, a Kohana je dost hezké, aby soubor htaccess šablony., které můžeme použít. Jak můžete vidět, že je soubor se nazývá example.htaccess, a budeme kopírovat, který na. htaccess. Jdu otevřít tento a upravovat ji, a v podstatě to dělá spoustu různých věcí. Klíč řádek, možná budete chtít podívat, je tady. Myšlenka je, že to nastaví pravidlo, které říká, "Dobře, co napíšete, předřazený index.php na to." Můžete vidět, že. . * Znamená cokoli, čímkoli, a druhá část je index.php / $ 0, a 0 dolarů se týká, co bylo uzavřeno dříve. Má to smysl? Ale opravdu klíčovou věc, kterou chci změnit, je změnit toto přepsat základnu, což je URL základna. Tak nějak se předpokládá, kde pracujete od. Chystám se přidat CS50 Kohana k tomu, a to způsobem, teď když jsem odstranit index.php, by to mělo fungovat, a já jdu přidat nějaké čísla aby vám ukázal, že to opravdu udělal práci. To zní dobře. Jakékoliv dotazy tak daleko? [Student] Jak to vědět, aby 123? Je to argument? Přesně tak. Můžete myslet na to, stejně jako argument. Ale divná věc, i když, je to způsob, jak Kohana to dělá je, že nedělají to přesně jako argument. Musíte chytit to takhle. Musíte chytit požadavku objekt a požádat o parametr, který se jmenoval ID, a to jméno ID pochází z tohoto bootstrap souboru že jsem ukázal dříve, a název ID bylo v těch hranatých závorkách, a to je to, jak si urvat ty parametry. Úžasné. Nějaké další otázky? Jak jsem řekl, regulátory, které zvládnout aplikační logiku, tak to je jedna instance, kde můžete vidět, to je - je to velmi jednoduché, ale je to stále aplikační logiku, Myšlenka chytil parametru a vytvořit nový řetězec , který říká, "Říkal jste, bla," a pak plivat, že zpět k vám. A obvykle to, co děláte, je vytvořit různé řadiče. Můžete vytvořit samostatné ovladače pro různé části své webové stránky. Dnes budeme dělat velmi jednoduché webové stránky, a to bude velmi jednoduchý blog. Chystáme se vytvořit nový řadič jen pro příspěvky v blogu. Ale pak když jsem byl také přidávat komentáře k blogu, pak bych pravděpodobně chtít, aby nový řadič pro ty připomínky. Pokud bych chtěl přidat uživatele, asi bych přidat nový řadič pro ty uživatele, a obecně, myšlenka je, že vždy, když máte nový model, nový datový objekt, který máte co do činění s, máte jeden řadič pro daný datový objekt. Dnes jsme jen bude pracovat s 1 dat objektu, a že to bude příspěvků, a také si můžete myslet datových objektů jako odpovídající tabulky. Obecně každá tabulka odpovídá 1 typ datového objektu, takže tabulka příspěvek bude mít Příspěvek: 1 modelu, což bude mít 1 příspěvek řadič, která by odpovídala, a totéž pro připomínky, stejné pro uživatele, a tak dále a tak dále. A to je obecné pravidlo. Tam se bude zvláštní případy, kdy se mohou lišit od toho, ale 90% času, který je to, co budete dělat, a já ti ukážu, že to, co budeme dělat dnes. 1 další koncept, než se ponořit zpět do kódu, tato myšlenka objektově relačního mapování. Vy jste tak již učinili webový vývoj pset, a vy jste viděli, že uděláte SQL dotazu, a ať se vrátí k vám jsou řádky. Získáte tyto řádky, a vy index je nějakým jménem, název sloupce a tabulky, a to, jak se s ním pracovat, a to může být trochu těžkopádné. Ale kromě toho, pokud máte vztahy ve vaší databázi, jako například, když mám připomínky a příspěvky, pak možná chci chytit nadřazený post komentář. Mám-li použít pouze řádky v SQL, pak vše, co můžete dostat, je ID mateřského příspěvku a ne skutečný sama pošta. Ale když jsme kódování, co vlastně chtějí, je vlastně chytit  mateřský příspěvek někdy sám. Jaký objekt relační mapování dělá je to znamená výsledky dotazu do databáze a dá to do objektů pro vás, které jsou mnohem příjemnější pracovat s než prostý polí a řádků. Například teď, když mám poznámku možná, a chci chytit svou mateřskou příspěvek, a já možná komentář šipka příspěvek, pak to bude skutečně dát mi post objekt , která odpovídá skutečnému mateřské místo, a to jen některé ID, které bych jinak musel použít a udělat další SQL dotazu chytit místo, který je těžkopádný a zbytečné. A navíc tím, že mapuje všechny tyto řádky dat do objektů, můžete také připojit další funkce na objekty, tak například, mluvil jsem o tom, jak třídy jsou v podstatě seskupení funkcí. Můžete myslet na to takhle. Například, možná jsem si tento příspěvek objektu, a možná bych chtěl mít nějakou funkci k němu připojené že mi v podstatě říká, to bylo nedávno vloženo? Bylo to zveřejněny v posledním týdnu, pravdivé nebo nepravdivé? A to je funkce mohu připojit na daný objekt, a je to opravdu vhodné mít na stejném místě, a existuje řada různých funkcí, které můžete vytvořit pro tyto objekty, a je to opravdu hezké být schopen připojit se ke třídě, k objektu, zatímco pokud jste právě měli řádky pocházející z databáze, pak se můžete opravdu připojit všechny funkce na to. Je to doslova jen pár dat. Jakékoliv dotazy týkající se, že vůbec? Orms jsou velmi časté vývoj webových aplikací, a existuje mnoho různých typů orms, a Kohana má svůj vlastní ORM. Je to velmi jednoduchý, ale budete mít chuť, jak to vypadá. Pojďme vytvořit model pro naše blogu, a první věc, kterou samozřejmě musíte udělat, je vytvořit skutečnou tabulku v naší databázi, aby skutečně ukládat naše data na těchto příspěvků. První věc, kterou budu dělat, je jít do phpMyAdmin. Už jste kluci používá phpMyAdmin předtím? Ok, super, takže vy už víte, co to je, a já jdu vytvořit novou tabulku s názvem Kohana Příspěvky, a to bude opravdu jednoduché. Budu se muset znovu přihlásit Vše, co se chystáte udělat, je dnes mají autor a tělo, jen aby to jednoduché. Chystám se vytvořit tuto tabulku, a teď jen musíme tabulku představující naše příspěvky 2 pole pro našeho autora a našeho těla. Další věc, kterou budu dělat teď, je nakonfigurovat mou webovou aplikaci, takže ví, jak se připojit k databázi, a to je opět něco, co budete muset dělat se všemi webovými aplikacemi. Musíš říct, že uživatelské jméno a heslo a název databáze a tak dále a tak dále přijít na to, jak se vlastně připojit k databázi. V Kohana, máme něco, co nazývá modul databáze, a my v konfigurační složky mají tuto složku s názvem databáze, a jak vidíte, existuje spousta nastavení, budete muset nastavit zde říci to, co je uživatelské jméno a heslo k databázi, takže můžu vlastně k němu připojit. A protože nechci, vy vlastně víte, uživatelské jméno a heslo z mé databáze, Mám soubor, kde jsem už nastavit vše, a budu kopírovat a vložit ji znovu. Úžasné. Dobře. Myslím, že je to všechno nastavení je potřeba udělat, ale uvidíme. Budeme pracovat na tom, a pokud se něco zhroutí, pak budeme opravit. Co budu dělat, teď je budu vytvořit nový řadič. Nebo vlastně, omlouvám se. Nejprve musím vytvořit nový model. Budu-li vytvořit nový model s názvem Post.php, a to, co budeme dělat, je budeme nazývat třída Model_Post. Získat některé zvýraznění syntaxe na, a tak, když jsem řekl, "rozšiřuje ORM," to je v podstatě některé další objektově-orientovaného programování, které bohužel vy se nenaučili v CS50 ještě, ale je to docela snadné vyzvednout. Dává mi to všechno navíc funkce, které přichází v tomto ORM balíčku, a tak jsem si spoustu extra funkcí a kdoví co ještě zdarma, které uvidíte trochu ve vteřině. Právě teď vlastně vše, co potřebujete udělat, je vytvořit tuto třídu. Já ani třeba, aby jakoukoli funkci nebo cokoliv, ale já jsem vytvořil třídu, která představuje tabulku, a protože jsem rozšířil toto ORM třídy, Mám spoustu věcí zdarma, takže teď už nemusíte nastavovat nic víc nahoru. A teď, co budu dělat, je, že budu vytvářet nový řadič, které budu jmenovat blog.php, a budu kopírovat přes úvodní regulátoru takže nemám k Opište nějaké věci, a teď mám přejmenovat to. Co budu dělat, testovat, aby se ujistil vše funguje venku, Chystám se chytit na první příspěvek z mé databáze a vytisknout text příspěvku na obrazovce. K tomu, že to, co budu dělat, jako první se jdu uložit příspěvky proměnné, co budeme dělat, tak je - v Kohana to, co udělat, je chytit post objekt je to trochu těžkopádné, ale musíte to udělat tuto věc s názvem ORM :: factory, a pak se projít v názvu modelu, který chcete, a vrátí ORM objekt, který představuje tento model. A pak, jak jsem řekl, když jsme se rozšířit ORM objekt, dostaneme všechny tyto metody zdarma, takže například, dostaneme tato nová funkce s názvem "najít vše," které se automaticky vrátí každý příspěvek v databázi, což je docela výhodné. A teď v těle, jdu se vrátit první příspěvek a vrátí jeho tělo. A samozřejmě, musím vytvořit místo, takže pojďme vložit nový příspěvek. Řeknu, "Brandon, můj úplně první příspěvek." Úžasné. A teď máme jít na blogy a pokud vše funguje dobře - oh, to je zase jiný hloupý povolení souborů věc. Podržte na 1 sekundu. Je to trochu absurdní. Tam jdeme. Dobře. Opravil jsem ten problém oprávnění. To se snaží vytvořit nějaké soubory a některé protokol, a oprávnění, opět nebyly nastaveny správně, tak jsem to aby tyto soubory byly zapisovat a spustitelný tak to by se skutečně přihlásit k věci. Teď je to, že mi další výjimka rčení, "třída ORM nebyl nalezen," a to proto, že jsem zapomněl další krok. To je moc špatné. V souboru bootstrap složek, jsou tyto moduly tady, které si můžete vybrat povolit nebo zakázat. Jedná se o spoustu různých funkcí, které si můžete vybrat k použití v Kohana, což je trochu pěkné. Například, mají modul autentizace které můžete použít pro autentizaci uživatelů. Mají cache modul, pokud chcete realizovat nějaký caching zpět konec, aby aplikace pracovat rychleji a kdoví co ještě. Musíme k tomu, aby databáze a ORM modul, protože jak jsem řekl, jsme pomocí databáze, samozřejmě, a musíme také umožnit ORM modul, proto, že jsme chtěli mít další funkce, což je hezké mít. Jediné, co musíte udělat, je odkomentovat tyto 2 řádky, a teď když jsem aktualizovat, to mi dal další chybu. To říká, "Třída Model_Post nebyl nalezen." Teď je to dobrý problém mít. Pojďme se podívat. Ať je to veřejné. Ne Vydrž. Ach, drahý. Nevím, proč to není schopen najít, že. To je opravdu divné. Mám tuto třídu tady. Myslím, že budu muset - oh. Jsem tak hloupá. Zapomněl jsem přidat značku PHP. To je důvod, proč. Teď musím vrátit, že 1. změna, kterou jsem právě udělal. Dobře. Tam jdeme. To bylo opravdu hloupé. Nechtěl jsem mít PHP tag otevření. Ale jak vidíte, teď to funguje správně, že jo? Máme Příspěvek: 1. Popadl jsme první příspěvek, a teď jsme vytiskli své tělo. Skvělé. Fantastic. Jakékoliv dotazy tak daleko? Ne? Jakékoliv dotazy? Dobře, tak jsme právě vytvořili model příspěvek, velmi jednoduchý, a budeme přidávat některé funkce později. Můžeme přidat validace a filtrování. Validace je jedna z věcí, že rámce řešení pro vás opravdu, opravdu dobře, a nemyslím si, že vy jste musel udělat pro vaše CS50 pset, ale pokud to vývoj webových aplikací pro konečného projektu, budete pravděpodobně chtít udělat nějaké ověření, jako nemít prázdné uživatelská jména, Možná mají hesla s alespoň nějakou délku, a podobné věci. A je to opravdu náročný na realizaci těchto věcí sami, a skoro každý webový rámec to udělá za vás a umožňuje to velmi čistým způsobem. A model, kde se obvykle formulují tyto ověřovací pravidla, protože je to potvrzení, zda model je platný, nebo ne. Ale pro teď, budeme dát, že až později, a teď budeme pracovat na jiné části, a budeme se snažit a dělat nový pohled které jsou uvedeny všechny příspěvky. Kroky při vytváření nové akce pro výpis všech příspěvků je chytit seznam všech míst a pak vykreslit seznam všech míst prostřednictvím zobrazení. Právě tady, tak naštěstí už chytil všechny příspěvky Pomocí tohoto prvního řádku, najít všechny funkce, a teď, co budeme dělat, je tak daleko Byl jsem přímým nastavením tělo odpověď předáním řetězec, ale teď chci použít zobrazení, a rozdíl mezi cílem a jen dělá to je s ohledem můžu mít krásný, velký HTML šablony, a co mohu udělat, je předat některé proměnné a pak se pohled automaticky naplnit svou šablonu pomocí těchto proměnných. Co budu dělat, je, že jsem si vytvořit nový pohled, a já budu jmenovat pohledu něco jako "blog / index" a budu v podstatě váže toto - ach, co mám psát? Můj mozek je někde jinde. Chystám se vázat příspěvky proměnné k názoru, tak, aby způsob zobrazení má přístup k této funkci proměnné. A tak teď musím vytvořit tento názor, takže tady máme tuto složku s názvem "Zobrazení", a první, já jdu vytvořit novou složku pod tímto názvem "Blog". To je hezké. Tímto způsobem můžeme mít hezký hierarchii našich názorů. A pak budu vytvářet další soubor tam názvem "index.php". Úžasné. Ve skutečnosti, pojďme si je oba tady. Vytvoření souboru zobrazení je pravděpodobně nejjednodušší část toho všeho, a to jsou asi věci, které jste již zvyklí. Budeme dělat něco opravdu jednoduchého, začít říkat: "Můj seznam blogu." Pak můžeme projít, a můžeme iterovat příspěvky poli, chytit každý příspěvek a řekl něco jako - Možná přidejte řádek a pak vytisknout autora a tělo. To aby se tak daleko smysl? A uvidíme, jestli to funguje. Nic se nestalo. Zajímalo by mě, proč. Oh, jsem vynechal jeden krok. Velmi hloupé. Vytvořil jsem názor, ale já jsem neměl nastavit zobrazení jako odpověď, takže budete muset udělat 1 věc. Co musíte udělat, "toto tělo odpověď" a nastavte ji jako pohled. Tam jdeme. Máme záhlaví, a pak budeme mít místo, a jen pro zábavu, pojďme vložit další příspěvek takže můžeme vidět seznam. A vložte tyto dva příspěvky, a teď když jsem aktualizovat stránku, vidíme všechny ty příspěvky tady. Znamená to, že aby se tak daleko smysl? Jo, otázka? Oh, dobře. Jak můžete vidět, jsme byli schopni oddělit všechny tyto kódy ven do různých sekcí, a pak můžete vidět, že je nejvíce jasné, s výhledem na kód. Tento soubor zde, že reprezentuje názor, to se stará jen o zobrazování dat, zobrazování dat. To je předán nějaký údajů, a vše, co dělá, je jen ukázat, že na vás. Ve všech ostatních částí kódu, nebudete muset starat o nic z toho, a podobně, váš názor kód nemusí starat o nic jak přistupovat k databázi a tak dále a tak dále, která je opravdu dobrá a dělá váš kód mnohem lépe spravovatelný. Jak jsem řekl, názory, jsou dynamické v tom, že je to 1 soubor, ale to by vytvářet různé pohledy na základě proměnných, které skutečně procházejí v, a dále, existuje mnoho různých pomocných funkcí které můžete použít, které vám pomohou napsat svůj kód rychleji, které jsem vám ukážu pár sekund. Jo. [Student] Tak 0dolar je řadič, ne? To je druhá věc. Otázkou je, je 0 Kč řadič? 0 dolar je variabilní Vytvořil jsem tady. Vytvořil jsem názor jako první. I přidělen do určité proměnné. Pak jsem prošel do této funkce, nastavte ji jako tělo odpovědi. Má to smysl? [Student] Tak je pohled :: výroby, je pohled jako na třídu nebo knihovna [neslyšitelný] Funkce továrna? Otázkou je, o funkci view :: továrny, a v podstatě je to něco víc objektově orientované programování v podstatě. Zobrazit je třída pohled, a to má metodu nazvanou "Factory", a to je způsob, jak uchopit objekt, který je s názvem "blog / index." A to je něco víc objektově orientované programování věci že nejdu jít do tady moc. Teď samozřejmě, chceme vytvořit nová pracovní místa, ale nechceme, aby se to udělat prostřednictvím databáze, takže budeme vytvářet novou akci pro vytvoření nového příspěvku, a je tam spousta věcí, co musíme udělat. První věc, kterou budeme dělat - pojďme řešit tyto věci jednu po druhé. První věc, kterou uděláme, je, že máme-li vytvořit formulář Pro vložení nového příspěvku, ale já jsem také chystá přidat novou akci poprvé, takže přidat novou akci je stejně snadné jako přidáním nové funkce s regulátorem, a teď jdu dělat něco velmi základní, jen chytit tento názor a po ní, jen zobrazit na vás. A pak se budu vytvořit nový pohled soubor, a já jdu začít psát nějaké věci. Co je hezké o Kohana je, že poskytují mnoho různých pomocných funkcí pro vás psát zobrazení kódu snadněji, a 1 z těchto pomocných funkcí nebo pomocných modulů je kolem psaní formulářů. Pro psaní formulářů, já opravdu nemám přímo psát žádné HTML sám. Vy jste psali HTML formulářů. Víte, jak to může být opravdu bolestivé a těžkopádné psát formuláře. Není to legrace, a tak naštěstí, můžeme v podstatě napsat formuláře pomocí Kohana je tvoří pomocné funkce, aby to pro nás. Chystáme se v podstatě mají pole pro každou jednotlivou věc, kterou máme, tak jeden pro autory a jeden pro orgány. Budeme mít označení, a budeme mít vstup. A nakonec, budeme mít podání. A jak můžete vidět, je to mnohem čistší psát než všechny ty špinavé HTML, což je docela hezké. Je pravda, že existují i ​​jiné webové rámce, které mají dokonce čistší než to, ale alespoň je to lepší než psát HTML sami. Super, tak to je to, co vidíte. To je trochu chaotický, tak já jdu přidat zalomení řádku se aby se, že vypadají trochu hezčí. No, samozřejmě, je to stále vypadá opravdu, ale opravdu špatné, ale my jsme prostě zaměřili na funkčnosti pro teď a ne na estetiku. Není čas na to všechno. A jak vidíte, teď máme super základní tvar, což je docela hezké. Tento kód Řekl bych, že je čistší než se snažit psát HTML tvořit sami, tak to je hezké. Co bude dál? Teď musíme dělat věci s akcí. Normálně, když píšete HTML formuláře, budete muset říct, že tam, kde to bude předkládat formulář. Ve výchozím nastavení je ve většině webových frameworků, předkládá na přesně stejnou adresu URL, takže věc je, pokud si poslat GET požadavek na / blog / nové, to by vám měl zobrazit formulář, ale pokud budete posílat žádost o příspěvek pro / blog / nový s údaji, to by skutečně snaží zachránit tento příspěvek a něco s ním. Co budeme dělat, je v podstatě vše, co musíte udělat, aby zjistil, zda je žádost o příspěvek, nebo požadavek GET je zkontrolovat, jaké jsou rozmístit své proměnné lze nastavit. A pokud je nastaven po proměnná, pak se budeme snažit vytvořit nový příspěvek. Opět jsme prostě to, a že vytvoří nový příspěvek, a my jsme doslova jít do nastavit jeho pole, jako je tento, a pak budeme jej uložit. A pak jdu na přesměrování na index stránce, takže můžete vidět náš seznam míst znovu. Zkusme to. Řeknu, "Brandon," a poté odeslat příspěvek, a pokud vše půjde dobře, jak můžete vidět, je přesměrován mě na index stránce, a když jsem přejděte do dolní části, máme nově vložený příspěvek. Yay! Jo, otázka. [Student] Co kdyby jste zadali přesně to samé které jste zadali dříve? Má zkontrolujte, zda jste se neopakují stejné podání? Buďte výchozí, ne, protože ve výchozím nastavení - Omlouvám se, otázka je, pokud zadáte v přesně stejných dat ve formě a tvrdí, že se to vám umožní vložit duplicitní objekt, duplicitní záznam, v podstatě? Právě teď, ano, to vám umožní dělat to, protože v databázích je to naprosto v pořádku, aby se zcela duplicitní řádky, ale v případě, že je zájem, pak můžete přidat validace, například, aby se ujistil, že pokud je to naprosto stejné jako něco, co již existuje, pak říkají, že je to neplatný objekt, a pak můžete dokonce zadat chybová zpráva a řekl: "Neplatný protože již existuje", nebo něco takového. Ale v tomto případě by jsem vytvořit něco duplicitní. Nyní se pojďme zkusit přidat nějaké validace. Problém s tím hned teď, je, že Nemohl jsem doslova předložit zcela prázdné místo. Mohu kliknout na toto tlačítko hned, a tam jdeme. Nemůžete opravdu vidět, ale to další řádek zde znamená, že jsem se doslova nový příspěvek. Je to jen má prázdné autora a prázdné tělo, a nechceme, aby lidé mohli udělat. To je místo, kde ověření vypovídací Můžu jít do mého modelu objektu, a nyní mohu přidat novou funkci, která určuje co validace pravidla bych měl dodat k tomuto modelu aby se ujistil, že je platný, nebo určit, co to znamená být platný po? A chci říct, že je to pouze platný příspěvek v případě, jak autor a tělo nejsou prázdné, a to je, jak to udělat v Kohana. Můžete vytvořit novou funkci s názvem "Pravidla", a pak se v podstatě vrací asociativní pole , který definuje ověřovací pravidla pro tento objekt. Chystáme se vrátí pole, a pak to, co budeme dělat, je říkají "autor", to jde na pole, který jde do jiného pole s názvem "není prázdný." A pak budu říkat "tělo." Dobře, a syntaxe pro tento a struktura pro tento může vypadat trochu těžkopádný a trochu složitější. Pokud jste si přečetli dokumentaci, je to docela jednoduché přijít na to, Ale v podstatě to je to, co musíte udělat, specifikovat Některé validační pravidla, a existuje mnoho různých pravidel že Kohana vám dá zdarma, stejně jako můžete přidat pravidla říkají, musí být alespoň tato délka. Možná, že to musí být číselná. Možná to má být alfanumerický. Možná to má být nanejvýš tato délka, a tak dále a tak dále. Existuje mnoho různých pravidel, která Kohana poskytuje pro vás, a můžete jít na jejich webové stránky, podívejte se na dokumentaci, a vidíte všechny ty různé věci, které můžete udělat. Ale to je vše, co mám dělat, a nyní se pojďme podívat, co se děje když předloží prázdné místo. Co se bude dít? Oh, ne, já dostanu chybu. Jsem si výjimku ověření. No, je to dobré. To mi řekl, že můj model je neplatný, ale já nechci zobrazovat výjimku na mých uživatele, když se snaží podat co neplatný, že jo? Chci jim dát nějaký přátelštější chybová zpráva když se něco pokazí. Co budeme dělat, je budeme zabalit vše do try catch smyčky. Vlastně si myslím, že to je také něco, co se dosud naučil, v CS50, protože C, programovací jazyk C, nemá výjimky, ale téměř každý jiný jazyk má výjimky, tak opravdu, ale opravdu krátce, Výjimkou je něco, co kus kódu může vyvoláním výjimky, kdy se něco pokazí, ale pak možná nějaký jiný kus kódu výš může zachytit tuto výjimku a něco s ním. Například, v tomto případě, kus kódu, který se snaží zachránit model, ověřuje model, a pokud se říká, "Dobře, tento model je neplatná," to bude házet výjimku, a to je docela ekvivalentní v C můžete vrátit -1 nebo něco takového. A pak se na mě, je tato funkce, můj kód na vyšší úrovni, mohu zkusit a chytit tuto výjimku a v podstatě řekl: "Dobře, když jsem zachytit výjimku, co mám dělat?" Nebo bych si mohl vybrat to chytit, že výjimku a nechat někoho výš zachytit výjimku, nebo pokud to nikdo chytí, pak celý program havaruje a říká, "Něco se pokazilo, a nemohl jsem to vydržet." Ale to, co děláme, je si zabalit kus kódu v bloku try, a pak si také přidat něco, co nazývá blok catch, což je druh kódu, který se bude snažit zachytit výjimky, které mohou nastat. A tak když jsem zachytit tento konkrétní výjimku nebo neplatnosti výjimka, pak to, co budu dělat, je Jdu nastavit chyby - myslím, že to, jak jsem to udělat - a já jdu nastavit chyby na nějaký předmět. A co budu dělat, pak, je-li to zasáhne tuto výjimku, že to nebude přesměrovat, a pokud to není přesměrování, to přijde z, jestliže blogu a hit to blog / nové, které se chtějí co chci dělat. Pokud dojde k chybě, pak se chci vrátit do formy a zobrazení těchto chyb. A teď, co chci udělat, je chci předat v těchto chyb k zobrazení. Dobře, myslím, že mám názor tady, a jsem v podstatě chcete zobrazit ty chyby, pokud existují. Než jsem se psát HTML na to, že budu opravdu rychle ukázat, co je struktura této chyby variabilní vzhled líbí, a to je dobrá praxe obecně. Mnohokrát vám něco zpět z nějaké metody, některé funkce ve webovém rámci, a vy nevíte, co je proměnná vypadá, takže nevím, jak s ním pracovat. Chystám se použít metodu tisku r podstatě vytisknout. A jak můžete vidět, to mi říká, že je to spolupracovník pole, a máte klíč, autor, body tohoto řetězce, autor nesmí být prázdné, a další klíč, tělo, Body do jiného řetězce, tělo nesmí být prázdný. Jsem rád, jo, v pohodě. Pak jsem si iterovat přes pole a vytisknout každou jednu zprávu. Je to v podstatě jako asociativní pole s partou zpráv. Co budu dělat, je "pokud chyby," a já jdu k vytvoření seznamu, a já jdu k iteraci přes všechny chyby. A to, a teď budu snažit předložit to znovu, a uvidíme, co dostaneme. Teď jsme si tento pěkný seznam chyb, a to je ještě docela ošklivý, ale to samozřejmě může být formátován vypadat hezky, ale základní myšlenka je jen v několika málo řádků kódu, jsme byli schopni potvrdit náš model, Ujistěte se, že některá pole nejsou prázdná, a kdyby se něco pokazilo, pak se vrátit nějaké chybové zprávy Pak jsem mohl prezentovat zpět k uživateli. Můžete také upravit vaše potvrzení takže se můžete skutečně mít chybová zpráva který je více specifický pro vaši aplikaci, nebo něco takového. Vše, co je obecně přizpůsobitelné. Bohužel, máme málo času, takže budu muset uříznout živé kódování relace zde. Existuje spousta dalších funkcí, které chci ukázat pro vás v tomto příkladu. Například, můžete přidat šablony na vaše stránky, takže možná tam je nějaký druh kódu HTML, který chcete použít na každé stránce ve vašem webu, a místo toho, vkládání, které v každém jednotlivém zobrazení souboru máte, což samozřejmě by špatné praxe, můžete v podstatě definovat tyto šablony, a pak v ovladači řekl: "Dobře, já jsem s použitím této šablony." "Byly všechny mé názory použijte tuto šablonu." A ještě poslední věc, kterou chci ukázat, jak dobře že nemáme čas je cross-site scripting, a v podstatě myslím, že vy jste pravděpodobně viděli v CS50 - Myslím, že David Malan pravděpodobně mluvil o tom, jak lze obvykle aplikovat JavaScript kód do - mluvil jsi o tom? Možná, že? Možná, že ne? Ale mnohokrát, můžete vložení škodlivého kódu JavaScript do něčí databáze, a pokud nemají uniknout, že správně, pak, když oni představují, že data zpět k uživateli, pak to může spustit nějaký náhodný kód JavaScript nechcete, aby se stalo, a chtěl jsem ukázat, jak byste to udělat v Kohana. Je to opravdu velmi jednoduché. Mohl bych to udělat právě teď po 2 sekundách doslova. Jediné, co musíte udělat, je v podstatě zabalit tyto věci v této věci tzv. HTML entity. A že bude automaticky správně uniknout všechny znaky a ujistěte se, že nechcete dostat tento problém. [Student] napsáno nesprávně první test. [Brandon Liu] Oh, pardon. Tak, to je vše, co jsem se s vámi podělit o dnes. Tyto snímky budou zveřejněny, ale tito jsou obecně pouze zdroje, které by opravdu potřebujete, abyste mohli začít s Kohana. Můžete jít na webové stránky. Mají uživatelský manuál, a mají také API Explorer. Můžeme zkoumat všechny různé funkce a pomocné funkce, které mají pro vás. Oni obecně mají dostatek informací na internetových stránkách které můžete použít, abyste mohli začít a jít s Kohana. Nejsou že mnoho cvičení, myslím, že pro Kohana, mimo to, co mají na stránkách zde, tak je to asi nejlepší volbou. Ale pokud chcete jít s webovým rámcem a nechcete, aby vyzvednout nový jazyk, a chcete něco, co je relativně lehký a má snadný učení, Určitě bych navrhnout Kohana. To je asi nejlepší nabídka pro to. Legrační věc, i když, je-li jsme pomocí Ruby on Rails, jsme mohli replikovat to, co jsme právě udělali a pravděpodobně více za méně než 3 minuty. To není vtip, ale učit Ruby on Rails trvá mnohem déle než by se naučit Kohana. Je to v podstatě vaše volba o tom, co chcete vybrat učit, ale pokud chcete dostat nahoru a běží rychle, Kohana je určitě velmi dobrá volba. Jakékoliv poslední otázky, než jsme nakonec? Ano. [Student] Jak bychom se integrovat, že v rámci CSS, jako jste použili, když jste se poučil? Otázkou je, jak by se integrovat, že s rámcem CSS? Co bychom asi udělat, je, že jsme pravděpodobně zahrnovat nová složka, kde bychom vypsat všechny naše CSS souborů, a pak jsme si také přidat novou šablonu. V šabloně bychom zahrnout tyto soubory CSS aby se ujistil, že jsou odkazoval se na každé stránce, a pak, když jste vlastně psaní HTML, stačí přidat odpovídající třídy a kdoví co ještě, a například, když používáte něco jako formu pomocná funkce, můžete přidat další parametry poté určit, jaké tříd chcete být připojeny na různé věci tak, aby mohl řádně styl, a to v podstatě, jak byste jít. Nějaké další otázky? Úžasné. Děkuji vám za váš čas, a děkuji, že jste přišli. Nechtěl jsem přidat hodně jiný, ale 1 opravdu rychlá věc je, že nemáme odkaz do formuláře. Opravdu hloupý. Dodejme - vlastně v zobrazení, blog, index, pojďme opravdu rychle přidat odkaz, který jde na novou stránku, stránky, kde můžete vložit nový příspěvek. Budeme to dělat. Co je to pěkné je, že je celá tato skupina pomocných funkcí HTML které dělat různé věci pro vás, takže si už viděl subjekty fungovat tady, ale mají také funkci nazvanou "kotva" které můžete zadat blog / nové a řekl: "Post nový blog." A to by se vytvořit tento odkaz pro vás, a to se zdá velice jednoduché udělat, ale je to pěkné, protože předpokládám, že se stěhujete své webové stránky od 1. domény do druhé. A pokud jste právě napsal z adres URL sami, pak budete muset změnit všechny adresy URL. Nebo možná jste ji přestěhoval z 1 podsložky do jiné podsložky. Budete muset změnit všechny tyto adresy URL sami, a že to není žádná legrace. Můžete použít tento kotvu tady, a můžete změnit doménu nebo podsložky prefix v konfiguračním souboru jednou, a pak to bude platit, že všude, a to je, opět, skvělým příkladem toho, neopakují se, sušení kód z. Všude tam, kde jste opakovat sami, zkuste a extrahovat v nějakém konfiguračním souboru nebo na jinou funkci a jsou to zvládnout za vás. A úplně poslední věc, kterou jsem vám chtěl ukázat, bylo Předpokládám, že jsme zpátky na tento post, a já jsem složil nějakou opravdu dlouhou esej, ale zapomněl jsem, aby zahrnovala můj autora. Teď, když jsem klepněte na tlačítko "Odeslat příspěvek", Ztratil jsem všechno. Ne! Opravdu smutné. Tak, jak se vypořádat s tím? To je to, co děláme. To, co děláme, je zde pro tyto vstupní a textové oblasti funkcí, pokud zahrneme druhý parametr, pak hodnota tohoto druhého parametru bude to pole bude zpočátku naplněn. Co můžeme udělat, je v našem blogu regulátoru, bychom mohli navázat další proměnné. Nazvěme to "hodnoty" Možná. A předat po poli, a to doslova. To znamená, že v případě, že ověření se nezdařilo, projít se mnou post pole, které jsem předkládal od posledního požadavku, a že způsob, jak mohu použít hodnoty z mého posledního podání repopulate pole. Teď můžu udělat něco jako hodnoty autora a hodnoty těla, a to tak teď když to udělám nějaké náhodné věci a klepněte na tlačítko "Odeslat příspěvek", a pak to tam zůstane. Ale my se setkáme s jiným problémem. To funguje, ale když jsem se jít na stránku hned napoprvé, to bude k havárii, a to proto, že hned napoprvé jdeme na stránku, tento příspěvek proměnná nebyla dosud stanovena. To je null. To neexistuje. A co chceme říci, je-li tento klíč existuje, pak se vrátí hodnotu tohoto pole, ale pokud neexistuje klíč, pak se vrátí prázdný řetězec. To je funkce chceme zde. Chceme zjistit, jestli před pokusem o přístup k matici existuje klíč, a dost naštěstí, Kohana nám také dává pomocnou funkci pro to. Mají celou tuto sadu funkcí pod názvem ARR, krátký pro pole, a mají 1 funkce s názvem "dostat," a můžete předat v poli, a můžete projít v názvu klíče. Tak co to bude dělat v podstatě je to se bude snažit získat ten klíč, ale v případě, že klíč není v poli, pak se to vrátí prázdný, nebo můžeme také určit výchozí, věřím, což je hezké. Nyní, pokud budeme dělat stejnou věc znovu, pak vidíte, teď to funguje napoprvé, a znovu, pokud napíšeme v nějakém náhodném věci a pokusit se odeslat, pak to tam zůstane. A myslím, že může také ukázat, jak přidat šablonu opravdu rychle. Co můžeme udělat jako první je, že můžete přidat nový pohled nazvaný "template.php" ve složce pohledy, a co budu dělat, je budu tisknout něco, co nazývá "obsah" který se bude můj hlavní obsah. A možná na samém dně jdu přidat, řekněme, copyright. [Neslyšitelný studenta otázka] [Brandon Liu] Možná, že to je super základní šablona chci použít. Chci mít složku s mým autorských práv na každé straně, a teď, co budu dělat v mém ovladači Nyní je místo toho řekl, "rozšiřuje Controller" Budu říkat, "rozšiřuje Controller_Template," a teď místo toho řekl, "tělo odezvy je stejná tohoto pohledu," Budu říkat, "tento obsah šablona je -" a myslím, že - mám dát rovnítko? Zapomněl jsem. Jo, to jsem si myslel. A teď nastavena proměnná obsah rovnat názor. Mohu zde totéž. A teď když jsem aktualizovat, můžete vidět, teď to autorské právo je tam přidal, a jen vydělat nějaké náhodné místo, a pak znovu, měli byste vidět, že autorské právo je na samém spodní části stránky. Velká. To je vše, chtěl bych vám ukázat kluci. [Potlesk] Jakékoliv dotazy? [CS50.TV]