[Szeminárium] [Kohana: A könnyű PHP Framework] [Brandon Liu] [Harvard Egyetem] [Ez a CS50.] [CS50.TV] Üdv mindenkinek. A nevem Brandon. Én vagyok a junior itt a főiskolán ezzel a számítógép-tudomány, és ma fogunk beszélni Kohana, amely a PHP webes fejlesztési keretet. Ma lesz egy élő kódolási szeminárium úgyhogy alapvetően fogja tölteni 5-10 perc alatt elmagyarázza, mi Kohana az, majd én a szó szoros értelmében fog építeni egy szuper egyszerű blog Ön itt szó szerint a semmiből. Megyünk le a kódot a Kohana honlapján, és fogunk kezdeni épület egy blog, és remélhetőleg ez lesz nagyon tanulságos, mert látni fogod, talán talán majd, hogy néhány hibát, és látni fogod, engem vissza tőlük, vagy akkor látom a gondolkodási folyamat, ahogy építeni keresztül ezt a blogot, és közben, akkor is megismerkedhet a keret is. Remélhetőleg lesz egy nagyon tanulságos feladat. Először is, mi is pontosan a keretet? Ha már vesz CS50 eddig még nem igazán működött semmilyen keretek még, és a dolog ez. Valószínűleg már kész 1 webfejlesztés Pset már, és tegyük fel, hogy továbbra is építeni weboldalakat, és folyamatosan épület honlapok. Majd elkezd észre néhány dolgot. Az első dolog, észre fogod venni, hogy akkor valószínűleg ugyanazt a dolgot újra és újra minden alkalommal, dolgok, mint a takarítás felhasználói adatokat, dolgok, mint a szervező a kép egy bizonyos módon. A másik dolog, akkor is valószínűleg észre, hogy a kód lehet kezdeni, hogy nagyon, nagyon piszkos, és lehet, hagyja piszkos, és csak nagyon nehezen fenntartása, vagy lehet kezdeni, hogy szerkezete a kódot, és így a moduláris bizonyos módon, hogy ez több karbantartható. Ez az a pont, ahol webes keretrendszerek alapvetően bejött Ezek az emberek, akik már építettek egy csomó honlapok, azt mondták, "Nem kell, hogy újra ezt minden egyes alkalommal, amikor építeni egy honlapot." "Miért nem csak, hogy egy csomagot, amely az összes ezeket a dolgokat az Ön számára minden egyes alkalommal, amikor akar építeni egy honlapot? " És így, hogy ha egy új honlap, csak összpontosítani, hogy pontosan mi az adott website van szó. Nem kell megismételni a különféle konfigurációs és elkülönítése kódok és újraírása kód hogy gyakran kell csinálni, ha éppen honlapszerkesztés. Az ötlet az, hogy a keretrendszer lehetővé teszi, hogy írjon egy magasabb szintű kód anélkül, hogy aggódnia alacsony szintű részleteket. Az alacsonyabb szintű részletességgel lehet valami hasonló foglalkozó tisztítás felhasználói adatokat. Ez olyasmi, amit nem igazán kell aggódni. Meg kell összpontosítani, ami a web felosztás valójában kb. Ez kiküszöböli a sok boilerplate kódot. Ez egy architektúra a projekt. Az egyik legnépszerűbb lenne Model-View-Controller, amely fogok beszélni a második. És sokszor e keretek testesítik meg egy sor eljárások, szabályokat, és a legjobb gyakorlatok használhat úgy, hogy ha elfogadja a webes keretrendszer meg kell írni a kódot egy bizonyos módon, és ez általában egy elfogadott elvek a közösség, hogy általánosan elfogadott, hogy egy jó módja az írás kódot. Lehetővé teszi a kód is karbantartható, használhatóbb, így tovább és így tovább. És végül, a dolog, amit szeretnék hangsúlyozni, a keretek szemben a könyvtárak ez az ötlet, inverzió az ellenőrzés, és a dolog ez. A különbség a könyvtár és a keret, amely a könyvtár még mindig írásban a fő program, és te valami hivatkozva a könyvtár és felszólította a könyvtár, hogy tegyen valamit az Ön számára. A különbség a könyvtár és a keretet az, hogy a keret indul ki, a kontroll, és meghívja a kódot, így gondol rá, mint - ezért is hívják a keretet - keretében biztosítja ezt a keretet és szerkezete a kódot, és töltse ki a lyukakat, és ez nyilvánvalóvá válnak egy második ha meglátsz elkezdi írni a kódot keretében a keret. Látni fogod, hogy én vagyok kitölti a hézagokat, és a keret jellegű szabályozása az összes mozgó darab, és azt, hogy a darabokat a megfelelő helyeken. Ma fogunk beszélni Kohana, amely egy a sok PHP keretek között. Vannak olyan webes keretrendszerek, és vannak azok, szinte minden egyes nyelv, és én felvette Kohana mert Kohana vitathatatlanul és általánosan elismert a legegyszerűbb PHP keretrendszer, hogy vegye fel. Ez a legkönnyebb. Vannak más is ott, hogy jön a sok-sok-sok más, de általában nehezebb felvenni. És végül, Kohana használja az MVC architektúra. Ez könnyű ahhoz, hogy szó szerint építeni a projekt Itt közvetlenül a szemed előtt, és akkor elég sok kövesse végig elég könnyen. Mi az MVC architektúra? Ez áll a Model-View-Controller, és talán, ha úgy gondolja a kódot már írt eddig néhány webes fejlesztés psets akkor lehet, hogy néhány ilyen, de általában, amikor elkezdjük írni a bonyolultabb webes alkalmazás, A divízió ezek között 3 szegmens egyre nyilvánvalóbb. Én lefektetett az MVC itt a fajta, mint a stack, és gyakran fogod hallani az emberek beszélnek halom webes fejlesztés, és ez az, hogy bemutassa a gondolatot, hogy minden réteg, minden egyes alkatrész tényleg csak próbál kommunikálni a 2 egyéb alkatrészek. Valaki hozzáfér a honlapon, mint egy ügyfél vagy egy böngésző. Hatnak a programot a nézetet kódot. A kilátás kódot kölcsönhatásba lép a vezérlő. A vezérlő együttműködik a modell, és a modell együttműködik az SQL adatbázis. És nincs hopping között, ha írsz a kódot helyesen. Mit jelentenek ezek a dolgok? A modell lényegében a kódrészletet, amely foglalkozik az adatokat. Bármi, ami foglalkozik az adatbázis, és a tárgyakat, hogy tárolja, vagy olvas vissza azok a tárgyak, az adatbázisban, ez minden kezeli a modell. Lehet, hogy objektumokat az adatbázisban. Fogunk létrehozni egy modellt kelljen a hozzászólás, így a poszt lehet egyes attribútumok hozzá. Lehet, hogy funkciója körül tárolja ezeket az állásokat, vagy olvas vissza hozzászólás vagy szűrés a hozzászólás, és így tovább és így tovább, és ez minden, a kód, ami kezeli a modell. A vezérlő a fajta az alkalmazás logikáját, és sok más dolog mehet az alkalmazás logikáját. Ha te beszélsz, hogy a különböző API, hogy lehet, ha van dolgunk, az alkalmazás logikáját. Ha kísérletet arra, hogy, hogy az adatokat több különböző modellek és hogy összekapcsolják őket valamilyen módon, gyakran lehet kezelni a vezérlő. Például, a Facebook-on, ha valaki barát, akkor talán, hogy az aktus megállapítani, hogy kapcsolat elvégezhető a vezérlő által. És végül, a kilátás az a kód, ami generál, amit valóban látni. Sokszor azt hiszem, a CS50 psets nem igazán ösztönzi titeket szétválasztani ezeket a 3 dolog. Akkor valószínűleg van ez a nagy, hosszú a fájl, ahol a tetején csinál néhány SQL lekérdezést, és talán némi feldolgozás az adatok letölteni az adatbázisból, és akkor már az összes HTML alján. És előfordulhat, hogy, ahogy több és több oldalt hogy fogsz egy kis kódot ismétlés, valamint, A dolog a fájl lesz igazán nagy és hosszú válik nehézkes kezelni. Az ok, amiért MVC olyan jól tekinteni a kiegészítő, több okból. Az első dolog, amit az úgynevezett szétválasztása aggodalmak amely az a gondolat, hogy ha már - ideális esetben 1 kódrészletet kell tennie 1 dolog, és nem is igazán jól, és akkor nem kell kombinálni darab kód, amelyek eltérő dolgokat. Például megtekintheti kódot és a modell kódja, nem igazán kell kapcsolatban. Nem kell, hogy az azonos fájlokat, így ha lehet, külön őket így könnyű fenntartani. A másik dolog kódot újra. Akkor találja magát írásban ugyanazon SQL lekérdezést, avagy hasonló kereséseket lehetne elvonatkoztatott ba 1 funkció és ez az ötlet mögött modellek és vezérlők, miután ez egy külön funkció akkor újra különböző helyeken a projektben. És végül, ez kötődik szárítás a kódot, vagy nem ismétli magát, ne ismételje meg magát. Ez nagyon érthető fejlesztés alatt áll. Amikor tudod, nem akarod ismételni magát, mert ha ismételni magát,  ez sokkal drágább fenntartani. Ha meg szeretné változtatni 1 dolog, amit meg kell változtatni, hogy mindenhol, és ez vezet a hibákat, és ez szörnyű. Rendben. Bármilyen kérdése eddig a Kohana egyáltalán? Remek. Most fogunk belevetik magukat az élő kódolási ülés és remélhetőleg minden jól megy. Én megyek, hogy alapvetően építeni ezen a weboldalon az egyik távoli szerverek, és így ti is lásd a honlapon és a hozzáférést a honlap, valamint a környezet jobb konfigurált, mint a távoli gépen, mert fut a Linux, hanem OS X Mi szó szerint fog kezdeni. KohanaFramework.org. Megyek le a kódot a weboldalon. Megyek másolja a link címe, menj én szerver, töltse le, és én fogom bontani. [Student] Mi a legnagyobb lehet, hogy a szöveg? [Brandon Liu] Most már jobb? [Student] Ez megvalósítható? [Brandon Liu] Igen, ez rendben van. Letöltöttem egy zip fájlt, és kicsomagolni, hogy egy könyvtár nevű Kohana, és fogunk átnevezni hogy CS50-Kohana, és menjünk be Félelmetes. Itt látsz egy csomó különböző fájlokat. A legtöbb akkor figyelmen kívül hagyja - Nem megyünk átmenni minden egyes fájl van itt mert a mi idő szűkössége, de általában, amikor telepíti Kohana, az első dolog, amit tennie nem megy a könyvtárba, és akkor alapvetően nem néhány környezeti tesztek és miegymás hogy ellenőrizze, hogy a környezet megfelelően beállítva, hogy fut Kohana és győződjön meg róla, hogy minden rendben van. Láthatjuk a legtöbb dolog telt el, de általában mindig befut ez 1 probléma ahol azt kifogásolja, hogy néhány könyvtár nem írható, és ez azért, mert bizonyos engedélyeket. Nem tudom, mennyit srácok értesült fájl engedélyeket a CS50, de ha nem webes fejlesztés, fogsz befut ezt a kérdést sokat. Fogok tenni írható és azt hiszem, én is meg kell - meg is vagyunk. Oké, most már látni mindent át, és most azt mondani, hogy nevezze át a install.php fájlt. Megyek, hogy mozog a install.php fájlt installed.php, és most, ha én frissíteni, ez ad nekem egy kis hiba, és ez az, ahol a hibakeresés jön be Itt láthatja, mi folyik valójában történni. Az a helyzet, alapértelmezés szerint Kohana feltételezi, hogy A projekt gyökérkönyvtárában a domain, így Várja meg, hogy a demo.brandonkliu.com. El kell mondani, hogy, hogy ez valóban egy almappát. Ez egy almappát nevű CS50 Kohana. A helyzet az, hogy ez téves értelmezése CS50-Kohana mint valami más, ami leírom neked a második. De azt kell mondanom, hogy van valami, ami várható. Mit fogunk csinálni a fogunk menni ebbe a mappába nevű bootstrap.php, amely a konfigurációs mappát, ahol egy csomó más dolgot hoznak létre. Kinyitom, hogy akár. Akkor talán az egyik első dolog, amit megteszek a változás az időzónát. És akkor lássuk. Aha! Itt van. Van egy csomó különböző konfiguráció mondások itt, de az egyik keresek ez a dolog, az úgynevezett alap URL-t, és alapértelmezés megértem állítva Kohana, de meg fogom változtatni, hogy a CS50-Kohana, , és úgy gondolom, hogy meg kell javítani. Igen, jó. Alapértelmezésben, látni, hogy ez működik, azt mondja, "Hello World". Honnan jött? Hogyan jutottunk, hogy Hello World? Pontosan hol van a kód, amely tulajdonképpen azt írta, hogy az? Ahhoz, hogy megértsük, hogy én be ezt a fogalmat az úgynevezett routing. Elég sok minden webes keretrendszerek, hogy a koncepció az úgynevezett routing, amely a darab a szoftver, amely térkép egy bizonyos URL egy bizonyos kódrészletet belül a keretbe. Például, ha van néhány URL-t és megy valami URL-t foo.com / blog / all akkor mi a keretet fog tenni - vagy legalábbis mi Kohana fog tenni - az, hogy ez fog találni egy osztály nevezett vezérlő blog, és ez fog futni a funkciót nevű akció minden. Tudom, hogy én beszélek osztály és funkciók, és tudom, hogy a srácok nem terjedtek osztályok és függvények A CS50 még, de most, lehet gondolni, osztályok, csak egy csoport a funkciók, módon csoportosításának funkció együtt. Ez tényleg minden, amit tudnod kell. Most, ha megnézzük a mappa struktúrát, belül az alkalmazás mappában van egy másik mappába nevű osztályok, és a többi mappák neve Controller és modell. Ha belenézel a Controller mappát, azt látjuk, hogy van egy nevű fájlt Üdvözlünk, és láthatjuk itt egy osztály nevezett Controller Üdvözlünk, és van egy olyan funkció, az úgynevezett Action Index, és mit csinál ez határozza meg a testület a választ, hogy Hello World. Ez az, ahol a kód van írva. A másik kérdés az, nos, én nem megy bla, bla, bla, / welcome / index. Hogy kerültem ide? Nos, ez egyszerűen azért, mert itt alul a mi bootstrap fájl ahol mi meg útvonalakat akkor láthatjuk, hogy hozzanak néhány alapértelmezett az Ön számára. Az alapértelmezett vezérlő Welcome. Az alapértelmezett művelet az Index. Ezért, ha teszünk semmit ott automatikusan ment a Welcome vezérlő és az index Action. Mindent értelme eddig? Most, akkor nem több, mint menni Controller és az adott intézkedés. Azt is át a paramétereket a vezérlő. Csak példaként, Megyek újabb lépéseket a vezérlő, hogy mutassa meg. Nevezzük ezt a műveletet Echo, mert ez fogja mondani, amit csak adni, ezért én alapvetően fog megragad paraméter, ami lesz küldött engem a routing program és mint látható itt, ez a sor itt, akkor láthatjuk, hogy a Ez lényegében azt jelenti, hogy vezérlő, és van a /, és van akció, és van egy másik /, és ez lesz a paramétereit, és mivel itt van ez a neve ID csúcsos zárójelben, ez azt jelenti, hogy mi vagyunk elnevezési ezt a paramétert ID. Később a vezérlő kódot, ha azt szeretné, hogy megragad a hold, hogy a paraméter, Tudom használni a kódot írtam, meg a paraméter nevét azonosító. Ez az, amit én itt, és megyek vissza, és azt mondják, "Azt mondta:" ezt. És most, ha elmegyek a honlapunkon, Megyek cs50-kohana/welcome/echo/Helloooo-- Ja, ez így van. Jelenleg 1 lépés hagytam ki. Ez része az élő kódolási ötlet. Itt van 1 dolog. Lássuk csak. Így általában alapértelmezésben egy csomó ilyen webes alkalmazások meg kell ezt index.php dolog az URL, mert az ötlet index.php van valami a belépési pont az alkalmazás, de természetesen, ez a fajta bosszantó, hogy. Nem akarod, hogy index.php megjelenik az URL, és elég sok minden webes keretrendszer out of the box van ez index.php probléma, és így van, hogy néhány intézkedést, hogy tudja, hogy távolítsa el ezt. És így ebben az esetben, mit fogunk tenni az fogjuk használni nevű fájlt. htaccess, és ez olyan dolog, ami jellemző az Apache webszerver, és meg tudja csinálni a dolgokat, mint átírási URL-eket és átirányított URL-eket, és így tovább és így tovább, és Kohana szép ahhoz, hogy egy sablon. htaccess fájlt, hogy tudjuk használni. Mint látható, van egy fájl van nevű example.htaccess, és fogunk másolni, hogy a. htaccess. Fogom megnyitni ezt és szerkeszteni, és alapvetően ez egy csomó más dolgot. A vonal, érdemes megnézni, itt van. Az ötlet az, hogy ez létrehoz egy szabályt, amely azt mondja, "Oké, bármit is írja be, előtag index.php, hogy az." Láthatjuk, hogy. Az. * Jelentése semmit, egyezik-e bármi, majd a második rész index.php / $ 0, és a $ 0 kifejezés, hogy bármi is illeszkedik korábban. Van ennek értelme? De az igazán legfontosabb dolog, amit szeretnék, hogy a változás ezen változtatni újraírása alap, amely az URL-alap. Ez a fajta feltételezi, ahol éppen dolgozik. Megyek hozzá CS50 Kohana az, hogy a és így most, ha leveszem az index.php, meg kell dolgozni, és megyek, hogy adjunk néhány számot , hogy mutassa meg, hogy ez valóban nem a munka. Jól hangzik. Bármilyen kérdése eddig? [Diák] Hogyan is tudja, hogy a 123? Ez az érvelés? Pontosan. Azt lehet gondolni, hogy, mint egy érvet. De a furcsa dolog, de az, hogy az út Kohana csinálja az, hogy ne csináld pontosan olyan, mint egy érvet. Meg kell ragadni, mint ez. Meg kell ragadni a kérés objektum és kérje a paraméter, ami nevű azonosító, és ez a név ID abból, hogy bootstrap fájl hogy megmutattam a korábbi, és a név azonosító volt azokban a hegyes zárójelek, és ez hogyan fogd ezeket a paramétereket. Félelmetes. Van még kérdés? Mint mondtam, vezérlők, kezelik alkalmazás logikáját, így ez az 1 példány, ahol látható, ez - ez nagyon egyszerű, de ez még mindig alkalmazás logikáját, az ötlet megragadta a paramétert, és egy új szöveg azt mondja: "Azt mondta, bla", majd a köpködés, hogy vissza hozzád. És általában, mit csinálsz te létre a különböző vezérlők. Hozza létre külön vezérlők különböző részein a honlapon. Ma megyünk, hogy egy nagyon egyszerű honlap, és ez lesz egy nagyon alap blog. Megyünk, hogy egy új vezérlő csak a hozzászólás a blog. De ha én is hozzá megjegyzéseket a blogbejegyzést, akkor valószínűleg szeretné, hogy egy új kontroller ezeket a megjegyzéseket. Ha akartam, hogy adjunk a felhasználók, azt valószínűleg egy új kontroller azok számára, és általában, az ötlet az, hogy ha van egy új modell, Új adat objektum van dolgunk, van egy vezérlő, hogy az adatok objektum. Ma te csak akkor fog működni, 1 adat objektum, és ez lesz a hozzászólás, és azt is lehet gondolni, az adatok tárgyak megfelelő táblázatokat. Általában minden tábla megfelel 1 típusú adatok objektum, így a poszt táblázat lesz 1 hozzászólás modell, majd, melyek 1 hozzászólás vezérlő, amely megfelel, és ugyanaz a megjegyzéseket, ugyanaz a felhasználók, és így tovább és így tovább. És ez az általános szabály. Ott lesz a különleges esetekben, amikor eltérhet, de a 90%-a az idő, hogy az, amit akarsz, hogy csinál, és megmutatom, hogy az, amit mi fogunk csinálni ma. 1. több fogalom, mielőtt belevetik vissza a kódot, ez a gondolat az objektum relációs leképezés. Ti már eddig is webfejlesztés Pset, és akkor már láttam, hogy csinál egy SQL lekérdezést, és bármi is visszatér akkor sorok. Kapsz ezeket a sorokat, és index őket néhány nevet, a nevét, az oszlop és az asztal, és ez hogyan dolgozik vele, és ez lehet egy kicsit nehézkes. De továbbá, ha belüli kapcsolatok az adatbázis, Mint például, ha van megjegyzéseket és hozzászólás, akkor talán azt szeretné, hogy megragad a szülő poszt megjegyzést. Ha használom, csak sort SQL, akkor csak azt tudom, hogy a személyazonosító a szülő post, és nem a tényleges után is. De amikor mi kódolás, amit valójában szeretnénk, hogy valóban megragad  a szülő tegye magát néha. Milyen objektum relációs leképezés nem kerül tart az eredmények az adatbázis-lekérdezés és mondja tárgyakká az Ön számára, amelyek sokkal szebb dolgozni , mint a sima tömbök és sorok. Ha például most, amikor van egy megjegyzés talán és azt akarom, hogy megragad a szülő után, és én talán megjegyzést nyíl posta, akkor tényleg ad nekem a poszt objektum megfelel a tényleges szülő után, nem csak néhány azonosító, amit egyébként használni, és hogy egy másik SQL lekérdezést, hogy megragad a posta, amely a nehézkes és felesleges. Továbbá, feltérképezésével ezek az adatok sorokat tárgyak, akkor is csatolni több funkciót a tárgyak, így például, beszéltem arról, hogy az osztályok lényegében csoportosulások funkciók. Azt lehet gondolni rá, mint ezt. Például, lehet, hogy van ez a poszt tárgya, és talán szeretnék, hogy valamilyen funkció kapcsolódik hozzá hogy alapvetően azt mondja, volt a közelmúltban írt? Vajon írt a múlt héten, igaz vagy hamis? És ez a funkció tudok csatolni rá, hogy a tárgy, és ez nagyon kényelmes, hogy ez ugyanazon a helyen, és van egy sor különböző funkciókat hozhat létre az ezeket a tárgyakat, és ez nagyon szép ahhoz, hogy csatolja egy osztály, egy tárgy, míg ha csak meg kellett sorokat érkező adatbázis, akkor nem igazán tulajdonítanak olyan funkciót, hogy az. Ez szó szerint csak az adatok. Minden olyan kérdést, hogy egyáltalán? ORMS nagyon gyakori webes fejlesztés, és van egy csomó különböző típusú ORMS, és Kohana saját ORM. Ez nagyon egyszerű, de akkor kap egy kis ízelítőt, hogy néz ki. Hozzunk létre egy modellt a blogbejegyzések, és az első dolog, amit természetesen meg kell tennie, hogy hozzon létre egy tábla tényleges belül adatbázisunkban ténylegesen tárolni adatainkat azoknak hozzászólások. Az első dolog, amit fogok tenni, hogy menjen a phpMyAdmin. Van srácok használt phpMyAdmin előtt? Oké, félelmetes, így a srácok már tudja, hogy mi az, és megyek, hogy hozzon létre egy új táblát nevű Kohana hozzászólás, és ez lesz nagyon egyszerű. Majd be kell jelentkeznie vissza! Minden, amit most csinálunk ma van egy író, és a test, csak tartsa egyszerű. Megyek létre, hogy a tábla, és most már csak egy táblázat, amely a hozzászólás 2 mezők a szerző és a testünket. A másik dolog, fogok csinálni most beállítani a webes alkalmazás, így tudja, hogyan lehet csatlakozni az adatbázishoz, és ez megint valami, amit meg kell csinálni az összes webes alkalmazásokat. El kell mondani, hogy a felhasználói név és a jelszó és a nevét az adatbázis, és így tovább és így tovább hogy kitaláljuk, hogyan kell valóban csatlakozni az adatbázishoz. A Kohana, van egy úgynevezett adatbázis modul és a konfigurációs mappában van ebben a mappában nevű adatbázis, , és mint látható, van egy csomó beállítást kell itt beállított mondani, hogy mi a felhasználói nevet és a jelszót az adatbázis, így én valóban csatlakozni hozzá. És mivel én nem akarom, hogy a srácok, hogy tényleg tudni a felhasználó nevét és jelszavát az adatbázis, Nekem van egy fájl, ahol már meg az egészet, és megyek, hogy másolja be a dolgot. Félelmetes. Oké. Azt hiszem, ez az összes konfigurációs kell tennem, de lássuk. Majd folyamatosan dolgozik benne, és ha valami összeomlik, akkor majd megjavítani. Most mit fogok csinálni is fogom, hogy hozzon létre egy új kontroller. Vagy tényleg, sajnálom. Először létre kell hozni egy új modell. Majd hozzon létre egy új modell neve Post.php, és mit fogunk tenni az fogjuk nevezni osztály Model_Post. Egy kis szintaxis kiemelve a, És amikor azt mondom, "kiterjeszti ORM, hogy" alapvetően néhány objektum-orientált programozás, ami sajnos ti még nem tanult CS50 még de ez elég könnyű felvenni. Ez ad nekem mindezt extra funkciót, ami ebben az ORM csomag , és így kap egy csomó extra funkciók és miegymás ingyen, amely akkor megjelenik egy kicsit a második. Most tulajdonképpen csak annyit kell tennie, hogy hozzon létre ebben az osztályban. Nem is kell, hogy minden olyan funkciót, vagy ilyesmi, de én már létrehozott egy osztályt, amely képviseli az asztalra, és mivel én már kiterjesztette ezt ORM osztályban, Kapok egy csomó dolgot ingyen, így most már nem kell beállítani mást fel. És most mit fogok tenni, hogy én megyek, hogy hozzon létre egy új kontroller, amely fogom nevezni blog.php, és fogok másold át a Welcome vezérlő így nem kell újra begépelnie néhány dolgot, és most már átnevezni ezt. Most mit fogok tenni, hogy teszteljék, hogy minden rendben működik ki, Megyek, hogy megragad az első post az adatbázis és nyomtassa ki a testet a poszt a képernyőn. Ehhez mit fogok tenni először is fogom menteni a hozzászólás egy változót, mit fogunk tenni a - A Kohana, amit csinálsz, hogy megragad a poszt objektum ez elég nehézkes, de meg kell csinálni ezt a dolgot nevezett ORM :: gyár, és akkor adja át a nevét a modellt szeretne, és visszatér az ORM objektumot képvisel, hogy a modell. És akkor, ahogy mondtam, amikor kiterjesztjük az ORM tárgy, megkapjuk ezeket a módszereket ingyenes, így például az, megkapjuk ezt az új funkció az úgynevezett "összes" amely automatikusan visszatér minden egyes üzenet az adatbázisban, ami elég kényelmes. És most a testben fogok visszatérni Az első posta és vissza a testét. És persze, azt kell, hogy hozzon létre egy poszt, úgyhogy be egy új post. Én mondom, "Brandon, a legelső post." Félelmetes. És most fogunk menni blogok és ha minden jól működik - ó, ez valami más hülye fájljogosultság dolog újra. Várj 1 másodpercig. Elég abszurd. Ott vagyunk. Oké. Én fix, hogy az engedélyt a problémát. Úgy próbálunk létrehozni néhány fájlt, és néhány log, és a jogosultságokat, megint, nem voltak megfelelően beállítva, így ez is sikerült így ezek a fájlok voltak, írható és futtatható így ténylegesen be a dolgokat. Most már, hogy nekem még egy kivétel mondás: "class ORM nem található, a" és ez azért van, mert elfelejtettem egy lépést. Ez nagyon rossz. A bootstrap mappa fájl, vannak ezek a modulok itt amelyek közül választhat, hogy engedélyezze vagy tiltsa le. Ezek egy csomó különböző funkciók, hogy lehet választani, hogy használja belül Kohana, amely egyfajta szép. Például, hogy van egy hitelesítési modul amelyek segítségével a felhasználók hitelesítése. Nekik van egy cache-modult, ha azt szeretné, hogy végre valami cache hátsó végén, hogy az alkalmazás gyorsabban és miegymás. Biztosítani kell, hogy az adatbázis és az ORM modul mert mint mondtam, mi az adatbázis, nyilván, és mi is kell ahhoz, hogy az ORM modul mert azt szeretné, hogy az extra funkciókat, ami szép és jó, hogy van. Csak annyit kell tenned, hogy vedd azokat a 2. sor, és most, ha én frissíteni, ez adott nekem egy másik hiba. Azt mondja, "Class Model_Post nem található." Most ez egy jó kérdés, hogy a. Lássuk csak. Legyen nyilvános. No. Várj. Ó, drágám. Nem tudom, hogy miért nem képes megtalálni, hogy. Ez nagyon furcsa. Én ezt az osztályt itt. Azt hiszem, lehet, hogy - ó. Annyira hülye. Elfelejtettem, hogy adjunk egy PHP tag. Ezért. Most már, hogy vonja vissza, hogy az 1 a változás én csináltam. Oké. Ott vagyunk. Ez nagyon buta. Nem volt egy nyitó PHP tag. De mint látható, most már működik, igaz? Van 1 hozzászólás. Mi megragadta az első post, és most nyomtatja ki a testét. Remek. Fantasztikus. Bármilyen kérdése eddig? Dehogy? Bármilyen kérdése? Oké, mi csak azért hozta létre a modellt, nagyon egyszerű, és mi lesz hozzá néhány funkciót később. Mi adhat érvényesítés és a szűrés. Hitelesítésekről egyik dolog hogy a keretek megoldani, hogy tényleg, nagyon jól, és nem hiszem, ti meg kellett tennie ezt a CS50 Pset, de ha nem webfejlesztés a projekt végső, akkor valószínűleg szeretne majd csinálni valami érvényesítését, tetszik, hogy nem üres a felhasználói neveket, Lehet, hogy miután egy jelszót legalább néhány hosszú, ilyesmi. És ez nagyon nehézkes, hogy ezeket a dolgokat magunk, és elég sok minden egyes webes keretrendszer nem az Ön számára és lehetővé teszi, hogy azt egy nagyon tiszta módon. És a modell, ahol általában kinyilváníthassa ellenőrzési szabályok, mert érvényesítésére, hogy a modell érvényes-e vagy sem. De most fogunk tenni, hogy csak később, és most fogunk dolgozni egy másik része, és meg fogjuk próbálni, és hogy egy új nézetet amely felsorolja az összes hozzászólás. A lépésből, hogy egy új fellépés felsorolja az összes álláshely az, hogy megragad egy listát az összes hozzászólás majd teszi a lista az összes hozzászólás egy nézet. Itt szerencsére elég, már megragadta az összes álláshely ezzel az első sorban, az összes funkciót, és most mit fogunk tenni az eddig Már közvetlenül beállítást a test a válasz átadásával a húr, de most szeretném használni a céllal, és a különbség a nézetet, és csak ezt van azzal a céllal, tudom van egy szép, nagy HTML sablon, és mit tehetek, hogy adja át azt bizonyos változók , és ezt követően a nézet automatikusan feltölti a sablont használja ezeket a változókat. Mit fogok tenni, hogy én majd hozzon létre egy új nézetet, és én nevet a néző, mint valami "blog / index" és megyek, hogy alapvetően kötni ezt - ó, én mit írni? Az agyam máshol. Fogom kötni a hozzászólás változót a nézetet, hogy így a nézetet fér hozzá ezen a poszton a változó. És így most létre kell hoznia ezt a nézetet, Tehát itt van ez a mappa a "Views" és az első, megyek, hogy hozzon létre egy új mappát, hogy a "blog". Ez szép. Így mi is egy szép hierarchiát nézeteinket. És akkor fogok létrehozni egy másik fájl van az úgynevezett "index.php". Félelmetes. Valójában, vessünk mindkettőt itt. Tétele érdekében fájlt valószínűleg a legegyszerűbb az egészben az, és ezek a dolgok valószínűleg te már ismeri. Fogunk csinálni valami igazán egyszerű, kezdeni azzal, "Kedvenceim blogbejegyzések." Akkor megy keresztül, és mi halad végig a hozzászólás tömb, megragad minden egyes hozzászólást, és mond valamit, mint - talán hozzá egy sort majd nyomtassa ki a szerző és a test. Az értelme eddig? És nézzük meg, hogy működik. Semmi sem történt. Kíváncsi vagyok, hogy miért. Ó, kihagytam 1 lépés. Nagyon buta vagyok. Csináltam egy nézetet, de én nem állította be a nézetet, mint a válasz, így meg kell csinálni még 1 dolog. Meg kell csinálni "ezt a választ a test", és állítsa be a nézetet. Ott vagyunk. Megvan a cím, és akkor van egy post, és csak a hecc kedvéért, hadd tegyen be egy másik poszt így láthatjuk a listát. És helyezze a 2 hozzászólás, és most, ha én frissíteni kell az oldalt, látjuk ezeket a hozzászólás itt. Van ennek értelme eddig? Igen, a kérdés? Ó, oké. Mint látható, már sikerült elkülöníteni ezeket a kódokat ki a különböző szakaszok, és akkor láthatjuk, hogy ez leginkább egyértelmű azzal a céllal kódot. Ez a fájl itt, hogy képviseli azt a nézetet, csak törődik képviselő adatok megjelenítésére adatokat. Ez kerül át valamilyen adat, és minden ez is csak azt mutatják, hogy az Ön számára. Minden más részein a kódot, akkor nem kell aggódnod az, hogy és hasonlóan, a nézet kód nem kell aggódnia semmit hogyan érhető el az adatbázisban, és így tovább és így tovább, , ami nagyon jó, és teszi a kódot sokkal karbantartható. Mint mondtam, nézetek, ők dinamikus, hogy ez 1 file, de jó lenne létrehozni a különböző nézeteket alapján a változók ténylegesen át az, , és ezenkívül van egy csomó más segítő funkciók hogy tudod használni, hogy segítsen írni a kódot gyorsabb, amely Megmutatom neked egy pillanat. Igen. [Student] Tehát $ 0 olyan vezérlő, igaz? Ez a második dolog. A kérdés az, hogy 0 Ft, egy vezérlő? $ 0 változó hoztam létre itt. Létrehoztam egy nézetet először. Azt hozzá, hogy bizonyos változó. Aztán telt be ezt a funkciót, állítsa be a szervezet a választ. Van ennek értelme? [Student] Szóval View :: gyár, nézet, mint egy osztály vagy könyvtár [hallhatatlan] gyár funkciót? A kérdés a véleménye :: factory funkció és tulajdonképpen ez az, néhány objektum-orientált programozási lényegében. Kilátás a kilátás osztály, és ez a módszer az úgynevezett "Factory" és ez a módja annak, hogy megragad a tárgyat, ami a neve "blog / index." És ez még néhány objektum-orientált programozás cucc , hogy én nem fogok belemenni itt is sok. Most nyilván azt szeretnénk, hogy új hozzászólás, de mi nem akarjuk, hogy kell csinálni egy adatbázist, így fogunk létrehozni egy új fellépés egy új poszt, és van egy csomó dolog, amit meg kell tennie. Az első dolog, amit meg fogunk tenni - hadd kezelni ezeket egyenként. Az első dolog, amit megteszek az megvan, hogy hozzon létre egy űrlapot be kellene iktatni egy új poszt, de én is lesz egy új akció az első, így egy új, akció éppen olyan egyszerű, mint hogy egy új funkció a vezérlő, és most fogok csinálni valami nagyon egyszerű, csak fogd ezt a nézetet, és tegye azt, csak jelenítse meg az Ön számára. És akkor most megyek, hogy hozzon létre egy új nézetet fájlt, és én fogom kezdeni írni néhány dolgot. Mi a szép a Kohana az, hogy adnak egy csomó más segítő funkciók az Ön számára, hogy írjon nézet kódot könnyebben, és 1 ilyen segítő funkciók vagy helper modulok körül van írás formában. Az írás formája, nem igazán kell közvetlenül írni a HTML magam. Ti írt HTML formában. Tudod, hogy lehet nagyon, nagyon fájdalmas és nehézkes írni formában. Ez nem vicces, így szerencsére akkor alapvetően levelet űrlap segítségével Kohana a formában segítő funkciók csinálni nekünk. Fogunk alapvetően mezők minden egyes dolog van, így egy a szerzők, a másik a testeket. Mi lesz, hogy egy címke, és mi megy, hogy egy bemeneti. És végül, mi lesz egy beadványt. És mint látható, ez sokkal tisztább írni mint minden piszkos HTML, ami elég szép. Igaz, vannak más webes keretrendszerek, amelyek még tisztább, mint az, de legalább ez jobb, mint az írás a HTML magad. Félelmetes, így ez az, amit látsz. Ez elég piszkos, így fogok hozzá egy sortörés van , hogy úgy néz ki, egy kicsit szebb. Hát, persze, még mindig úgy néz ki, nagyon, nagyon rossz, de mi csak koncentrált A funkciókat most, és nem az esztétika. Nincs idő, hogy tegyen meg mindent. És amint látod, most van egy szuper alapvető formája, ami elég szép. Ez a kód azt mondanám, tisztább, mint megpróbál, hogy írjon egy HTML form magát, így a szép. Mi a következő lépés? Most arra van szükség, hogy a dolgok a keresetet. Normális esetben, ha írsz HTML formában, meg kell mondani, hogy ha ez lesz az alábbi adatlapot. Alapértelmezés szerint a legtöbb internetes keretek, azt állítja, hogy pontosan ugyanazt az URL, így az a helyzet, ha küld egy GET kérelmet / blog / new, meg kell jelennie, hogy az űrlap, de ha küld egy post kérelmet / blog / újat az adatokat, azt valójában megpróbálja megmenteni az állásra és vele valamit. Mit fogunk csinálni a Alapvetően csak annyit kell tennie, hogy ellenőrizze, hogy ez egy POST kérés, vagy a GET kérés az, hogy ellenőrizze, mi van a post változó lehet beállítani. És ha a poszt változó be van állítva, akkor megyünk próbálni, és hozzon létre egy új post. Ismét, csak ezt, valamint, hogy létrehoz egy új üzenet, és mi szó lesz állítsa be a területen, mint ez, majd fogjuk menteni. És akkor fogom átirányítani az index oldalra így láthatja a listát álláshelyek újra. Próbáljuk meg. Én mondom, "Brandon" , majd küldje el a posta, és ha minden jól megy, mint látható, ez átirányítja, hogy az index oldalra, és ha görgessen az aljára, van egy újonnan behelyezett post. Yay! Igen, kérdés. [Student] Mi van, ha belépett pontosan ugyanaz a dolog beírt előtt? Vajon győződjön meg róla, hogy nem duplikált ugyanaz a benyújtás? Légy az alapértelmezett, nem, mert alapértelmezésben - bocs, a kérdés az, ha belépsz az pontosan ugyanolyan adatok formájában és azt állítják, hogy, fog lehetővé teszi, hogy helyezze be a másolat objektumot, a kettős bejegyzés lényegében? Most, igen, ez lehetővé teszi, hogy ezt, mert adatbázisokban ez teljesen érvényes, hogy teljesen ismétlődő sorok, de ha ez aggodalomra ad okot, akkor adjunk hozzá érvényesítés, például , hogy megbizonyosodjon arról, hogy ha ez pontosan ugyanaz, mint ami már létezik, akkor azt mondják, hogy ez egy érvénytelen tárgy, és akkor is adja meg a hibaüzenet és azt mondják, "Érvénytelen mert ez már létezik", vagy valami ilyesmi. De ebben az esetben, azt is csak alkotni példányban. Most próbáljuk, és adjunk hozzá néhány kidolgozása. A probléma ezzel a most az, hogy Én szó szerint be egy teljesen üres post. Én erre a gombra kattint most, és meg is vagyunk. Nem igazán lehet látni, de ez plusz sort itt azt jelzi, hogy a szó szoros értelmében egy új post. Csak egy üres szerző és egy üres test, , és nem akarjuk, hogy az emberek erre. Ez az a pont, ahol érvényesítés jön be Tudok menni a modell objektumot, és most egy új funkciót, amely meghatározza milyen ellenőrzési szabályok Hozzá kell tennem, hogy ez a modell , hogy megbizonyosodjon arról, hogy az érvényes vagy pontosítani, mit jelent, hogy egy érvényes hozzászólást? És azt akarom mondani, hogy ez csak egy érvényes poszt, ha mind a szerző és a test nem üres, és ez az, hogy hogyan csinálod Kohana. Létrehoz egy új funkció a "szabályok" és akkor tulajdonképpen vissza egy asszociatív tömbben amely meghatározza az ellenőrzési szabályok ehhez az objektumhoz. Megyünk vissza a tömböt, és mit fogunk tenni a mondják, hogy "szerzője", akkor megy egy tömb, ami megy a másik tömböt a "nem üres." És akkor fogom mondani, hogy "a test." Oké, és a szintaxis ezt, és struktúrát ezt tűnhet egy kicsit nehézkes, és egy kicsit bonyolult. Ha elolvasod a dokumentációt, ez elég egyszerű kitalálni, De lényegében ez az, amit meg kell tennie, hogy adja meg Egyes ellenőrzési szabályok, és van egy csomó más szabályok hogy Kohana kapsz ingyen, mint felveheti szabályokat mondani kell lennie legalább ilyen hosszú. Talán azt, hogy numerikus. Talán azt, hogy alfanumerikus. Talán azt, hogy legfeljebb ennek a hosszú, így tovább és így tovább. Van egy csomó más szabályok Kohana biztosít az Ön számára, és akkor megy a honlapjukon, nézd meg a dokumentációt, és láthatjuk az összes különböző dolog, amit tehetünk. De ez minden, amit meg kell tennie, és most nézzük meg, mi történik ha be üres post. Mi fog történni? Ó, nem, hibaüzenetet kapok. Kapok egy érvényesítési kivétel. Nos, ez jó. Azt mondta nekem, hogy a modell érvénytelen, de nem akarom megjeleníteni kivételt hogy a felhasználók, amikor megpróbálnak, hogy nyújtson valami érvénytelen, nem igaz? Azt akarom, hogy nekik valami barátságosabb hibaüzenet ha valami elromlik. Mit fogunk csinálni a fogunk csomagolja mindent egy próbát catch hurok. Valójában, azt hiszem, ez is valami, amit még nem tanultam még A CS50, mert a C, a C programozási nyelv, nincs kivétel, de szinte minden egyes más nyelv van kivétel, így nagyon, nagyon röviden, Egy kivétel van valami, hogy egy darab kód dobni egy kivételt, ha valami elromlik, de akkor talán más kódrészletet feljebb lehet fogni ezt a kivételt, és vele valamit. Például, ebben az esetben, a kódrészletet hogy megpróbálja megmenteni a modell érvényesíti a modell, és ha azt mondja, "Rendben, ez a modell érvénytelen" ez meg fog dobni egy kivételt, és ez a fajta egyenértékű C-ben lehet, hogy visszatér a -1, vagy valami ilyesmi. És akkor nekem, ez a funkció, a kód magasabb szinten, azt próbálja elkapni a kivételt és alapvetően azt mondja: "Rendben, ha elkapom a kivétel, mit fogok csinálni?" Vagy tudtam dönt, hogy nem fogni, hogy a kivételt, és hagyja, hogy valaki feljebb elkapni a kivételt, vagy ha senki elkapja, akkor az egész program összeomlik, és azt mondja, "Valami baj van, és nem tudtam kezelni." De mit teszünk, akkor lezárja a kódrészletet egy try blokkban, és akkor még hozzá egy úgynevezett catch blokk, amely a fajta kódot, amely megpróbálja elkapni kivételek, hogy előfordulhat. És ha elkapom ezt a különleges kivétel vagy érvénytelenítése kivétel, akkor mit fogok csinálni a Megyek be a hibákat - Azt hiszem, hogyan csinálom - és én fogom állítani a hibák néhány tárgyat. És akkor mit fogok csinálni, ha eléri ezt a kivételt, ez nem fog átirányítani, és ha nem irányítja át, ez fog kijönni a blog, ha és ez a hit blog / új, ami akar csinálni akarok. Ha hiba van, akkor azt akarom, hogy menjen vissza a formáját és megjeleníti ezeket a hibákat. Most mit akarok csinálni, hogy én akarom átadni a hibák a nézetet. Oké, azt hiszem, a kilátás itt, és alapvetően azt szeretné jeleníteni azokat a hibákat, ha vannak ilyenek. Mielőtt írni a HTML, hogy fogok nagyon gyorsan Megmutatom, mi a szerkezete a hibák változó néz ki, és ez egy jó gyakorlat általában. Sokszor kapsz valamit néhány módszer, néhány funkciót a webes keretrendszer, és nem tudom, mi a változó néz ki, így nem tudja, hogyan kell dolgozni vele. Fogom használni a nyomtatási r módszert alapvetően nyomtassa ki. És mint látod, azt mondja nekem, hogy ez egy társult tömb és van egy kulcs, a szerző rámutat arra, hogy ez a szöveg, szerző nem lehet üres, és egy másik billentyű, test, pontokat egy másik szöveg, a test nem lehet üres. Olyan vagyok, mint, oké, hűvös. Aztán lehet halad végig a tömböt, és nyomtassa ki minden egyes üzenetet. Ez alapvetően, mint egy asszociatív tömb egy csomó üzenetet. Mit fogok tenni, hogy "ha a hiba," és megyek, hogy hozzon létre egy rendezetlen lista, és fogok halad végig az összes hibát. És ez, és most fogom próbálja meg elküldeni ezt újra, és lássuk, mit kapunk. Most, hogy ez a szép hibalista, és ez még mindig elég csúnya, de ez nyilván nem kell formázni, hogy néz ki, de az alapötlet csak néhány sornyi kódot, tudtuk, hogy érvényesítse a modellt, arról, hogy bizonyos területeken nem voltak üresek, és ha valami elromlott, akkor vissza valamilyen hibaüzenet Én aztán be vissza a felhasználónak. Azt is szabhatja érvényesítés így valójában egy hibaüzenet ez több jellemző az alkalmazás, vagy valami ilyesmi. Minden, ami általában testreszabható. Sajnos, kifutunk az időből, úgyhogy kell majd levágni az élő kódolási munkamenet itt. Van egy csomó más olyan jellemzőit, szeretném bizonyítani, az Ön számára ebben a példában. Például, felveheti sablonokat a webhelyre, így talán van valami HTML kódot, amit alkalmazni kívánt minden egyes oldal a webhely, és ahelyett, hogy a beillesztés minden egyes nézetben fájlban van, ami nyilvánvalóan lenne rossz gyakorlat, akkor alapvetően határozza meg ezeket a sablonokat, majd a vezérlő azt mondja: "Jól van, én vagyok a sablon." "Még az én views használja ezt a sablont." És még egy utolsó dolog, amit szeretnék bemutatni, hogy is hogy nincs ideje a cross-site scripting, és alapvetően azt hiszem, a srácok valószínűleg látott CS50 - Azt hiszem, David Malan talán beszéltünk arról, hogyan lehet általában beadni JavaScript kódot - Beszéltél erről? Talán? Lehet, hogy nem? De egy csomó alkalommal lehet beadni a rosszindulatú JavaScript kódot valakinek az adatbázisba, és ha nem menekülni, hogy a megfelelően, majd amikor bemutatják, hogy az adatokat vissza a felhasználó, akkor futhat valami random JavaScript kódot nem szeretnénk, hogy megtörténjen, és akartam bemutatni, hogyan tenne, hogy a Kohana. Ez tényleg nagyon-nagyon egyszerű. Tudnám csinálni most 2 másodperc alatt a szó szoros értelmében. Mindössze annyit kell tennie, hogy alapvetően csomagolja ezeket a dolgokat ebben a dologban nevű HTML entitások. És ez automatikusan menekülni az összes karakter megfelelően és győződjön meg róla, hogy nem kap ez a probléma. [Student] Ön írta az első teszt helytelenül. [Brandon Liu] Ó, hoppá. Oké, csak ennyit kellett megosztani veletek ma. Ezeket a lemezeket fognak írt, de ezek általában az egyetlen forrásokat akkor tényleg kell elkezdeni Kohana. Mehetsz a honlapon. Nekik van egy használati útmutató, és ők is egy API felfedező. Mi lehet felfedezni a különböző funkciók és segítő funkciói vannak az Ön számára. Ezek általában elég információ a honlapon amelyek segítségével az induláshoz, és hogy megy Kohana. Nincs túl sok oktató, azt hiszem, a Kohana, kívül azt, amit a honlapon itt, így ez talán a legnagyobb esélye. De ha azt akarjuk, hogy menjen el a webes keretrendszer és nem szeretné, hogy vegye fel egy új nyelvet, és azt szeretné, valamit, ami viszonylag könnyű és egyszerű tanulási görbe, Azt mindenképpen javaslom Kohana. Ez talán a legjobb kínál erre. A vicces dolog, de az, ha mi a Ruby on Rails, tudtuk volna megismételni, amit csináltál és talán még az alatt 3 perc. Nem vicc, de a tanulás Ruby on Rails tart sokkal tovább mint lenne szükség, hogy tanulni Kohana. Ez alapvetően a választás, hogy mit akar, hogy úgy dönt, hogy tanulni, de ha azt akarjuk, hogy gyorsan üzembe, Kohana mindenképpen egy nagyon jó választás. Egy utolsó kérdés, mielőtt vége? Igen. [Diák] Hogyan integráljuk, hogy a CSS keretében, mint amit használtál mikor oktató? A kérdés az, hogyan tudjuk integrálni, hogy a CSS keretet? Amit valószínűleg tennie, akkor valószínűleg tartalmazza egy új mappát, ahol lenne lerakó minden a CSS fájlt, és aztán azt is hozzá egy új sablont. A sablon leszünk azok, CSS fájlok , hogy megbizonyosodjon arról, hogy a hivatkozott minden egyes oldalon, majd ha valóban írásban HTML, csak hozzá a megfelelő osztályok és miegymás, , és például, ha a 'használ valami hasonló formában segítő funkcióval, akkor adjunk hozzá több paraméter utána hogy határozza meg, milyen osztályokat szeretne csatolni kell különböző dolgokat így tudták stílust, hogy megfelelő, és ez alapvetően hogyan menne. Van még kérdés? Félelmetes. Köszönjük, hogy időt, és köszönöm, hogy eljöttek. Nem akartam, hogy adjunk nagyon sok más, de 1 nagyon gyors dolog nincs egy link Az űrlapot. Tényleg buta. Adjuk hozzá a - tulajdonképpen a nézetben, blog, index, tegyük nagyon gyorsan hozzá egy link, hogy megy az új oldalt, Az oldal, ahol lehet beszúrni egy új post. Fogjuk ezt tenni. Milyen szép az, van ez az egész csoport a HTML segítő funkciók amely különböző dolgokat az Ön számára, így már látta a szervezetek működik itt, de ők is a funkciója a "horgony" amely beírhatod blog / new és azt mondják, "Új blog". És ez létre, hogy a link az Ön számára, és ez úgy tűnik, tényleg triviális, hogy nem, de ez a szép, mert tegyük fel, hogy mozog a weboldal 1 domain a másikra. És ha csak azt írta ki az URL-eket magad, akkor meg kellett volna változtatni a URL-eket. Vagy talán költözött 1 almappa másik almappába. Meg kellene változtatni mindazon URL magát, és ez nem vicces. Használhatja ezt a horgonyt itt, és meg lehet változtatni a tartomány vagy az almappa előtag A konfigurációs fájl egyszer, majd alkalmazni fogja, hogy mindenhol, és ez ismét Egy jó példa a nem ismételjük magát, szárítás a kódot ki. Ahol te ismétlődő magát, próbálja kivonat valamilyen konfigurációs fájl vagy egy másik funkció, és azt kezelni, hogy az Ön számára. És az utolsó dolog, amit meg akartam mutatni neked volt tegyük fel, hogy már vissza ezt a hozzászólást, és én komponált néhány nagyon hosszú esszé, de elfelejtettem, hogy tartalmazza a szerző. Most, amikor kattintson a "Küldés Post," Én csak mindent elveszített. Nem! Tényleg szomorú. Szóval hogyan lehet kezelni ezt? Ez az, amit teszünk. Mit csinálunk itt ezek a bemeneti és a szövegmezőbe funkciók ha tartalmaz egy második paraméter, akkor az érték, hogy a második paraméter lesz, amit a mezőt lesz először lakott. Mit tehetünk a mi blog vezérlő, tudtunk kötni egy másik változó. Nevezzük ezt "értékeket" talán. És adja át a poszt tömb, szó szerint. Ez azt jelenti, hogy ha az ellenőrzés nem sikerült, adja át nekem a post tömb én benyújtott az utolsó kérés és így tudom használni az értékeket az utolsó benyújtási hogy újra benépesíteni a mezőket. Most már tudok valamit, mint értékek szerző és értékeli a test, és így most, ha én valami random dolgot majd kattintson a "Küldés Post", akkor ott is marad. De megyünk befut egy másik probléma. Ez működik, de ha elmegyek az oldalra az első alkalommal, ez fog zuhanni, és ez azért van, mert az első alkalommal megyünk az oldalra, ezen a poszton a változó még nem határozták még meg. Ez null. Ez nem létezik. És mit akarunk mondani, hogy ez a kulcs létezik, majd vissza az értékét tömb, de ha a kulcs nem létezik, akkor vissza üres karakterlánc. Ez a funkció akarunk itt. Azt akarjuk, hogy ellenőrizze, hogy a kulcs létezik, mielőtt megpróbálja elérni a tömb, és szerencsére elég, Kohana is ad nekünk egy segítő funkció, hogy az. Ők az egész csomag a funkciók néven ARR, rövid tömb, és nekik van 1 funkció az úgynevezett "kap," és akkor át a tömbben, és akkor át a nevét a kulcs. Ezután alapvetően mit fog tenni ez akkor meg kell kérni, hogy a legfontosabb, de ha a kulcs nem létezik a tömbben, akkor vissza fog térni üres, vagy azt is megadhatja az alapértelmezett, azt hiszem, ami szép és jó. Most, ha nem ugyanaz a dolog újra, akkor most látni, hogy működik az első alkalommal, és újra, ha azt írja néhány random dolgot és próbálja meg, és benyújtja, akkor ott is marad. És azt hiszem, azt is megmutatja, hogyan kell hozzá egy sablont nagyon gyorsan. Mit tehetünk első tudunk egy új nézet a "template.php" a Views mappában, és mit fogok tenni, hogy én fogok kinyomtatni úgynevezett "tartalom" ami lesz a fő tartalomra. És talán a legalján fogok hozzá, mondjuk, copyright. [Hallható hallgató kérdés] [Brandon Liu] Lehet, hogy ez egy szuper alapvető sablont szeretném használni. Azt szeretnénk, hogy egy mappát a szerzői jog minden egyes oldalon, és most mit fogok csinálni az én vezérlő Most ahelyett, hogy "kiterjeszti Controller" Fogom mondani, hogy "kiterjeszti Controller_Template" és most ahelyett, hogy azt mondja, "válasz a test egyenlő ezt a nézetet," Fogom mondani, hogy "ezt a sablont tartalom -" és azt hiszem - nem tettem egyenlőségjel? Nem emlékszem. Igen, én is így gondoltam. És most beállítani, hogy a tartalom változó egyenlő a nézetet. Én is ugyanezt itt. És most, ha én frissíteni, akkor most látni ezt a copyright egészül ki ott, és csak hogy néhány véletlenszerű posta, majd ismét, akkor láthatjuk, hogy a szerzői jog legalján az oldal. Nagy. Ez minden, amit meg akartam mutatni nektek. [Taps] Bármilyen kérdése? [CS50.TV]