[Seminar] [Kohana: Lahka PHP Framework] [Brandon Liu] [Harvard University] [To je CS50.] [CS50.TV] Pozdravljeni vsi skupaj. Moje ime je Brandon. Jaz sem junior tu na akademiji tem računalništva, danes bomo govorili o Kohana, ki je okvir PHP razvoj spletnih. Danes se bo živo kodiranje seminar, tako da sem v bistvu dogaja, da preživijo 5-10 minut razloži, kaj Kohana je, in potem sem dobesedno bo za izgradnjo super preprost blog za vas tukaj dobesedno iz nič. Mi bomo za prenos kode na spletni strani Kohana, in bomo začeli graditi blog, in upajmo, da bo to zelo poučna saj boste videli, morda bom mogoče naredil nekaj napak, in boste me videli opomore od njih, ali pa boš videl mojega miselnega procesa, kot sem graditi skozi ta blog, in medtem, boste tudi dobili seznanjeni z okvirom sama. Upajmo, da bo to zelo poučna vaja. Najprej, kaj točno je okvir? Če ste bili ob CS50 doslej niste zares sodelovali s katerim koli okviri še, in stvar je to. Verjetno ste naredili 1 izdelava spletnih strani pset že, in recimo, da boste še naprej graditi spletnih strani in vodi izgradnjo spletnih strani. Boste začeli opažati nekaj stvari. Prva stvar, ki jo boste opazili, da ste verjetno delaš iste stvari znova in znova ves čas, stvari, kot so čiščenje vhodnih podatkov uporabnika, stvari, kot so organiziranje datotek na določen način. Druga stvar, ki jo bom verjetno tudi opazili, da se vaša koda lahko začne, da postane zelo, zelo grdo, in lahko pustite grdo in samo še zelo težko jo ohranja, ali pa se boste lahko začeli strukturirati kodo in zaradi česar je modularna na določene načine, da bi bilo več vzdrževati. To je, če web okviri v bistvu prišel noter Ti ljudje, ki so zgradili veliko spletnih strani, ki jih je povedal, "Mi ne potrebujemo redo to vsak čas gradimo na spletni strani." "Zakaj ne bi le, da paket, ki počne vse te stvari za vas vsak čas želite zgraditi spletno stran? " In tako, da, ko bo novo spletno stran, se osredotočite samo na to, kaj točno to posebno spletno stran je približno. Vam ni treba ponavljati vse različne konfiguracije in ločevanje oznak in reportaža koda da ste pogosto storiti, ko delaš spletne strani. Ideja je, da okvir vam omogoča pisanje kode na višji ravni ne da bi morali skrbeti za podrobnosti, na nižji ravni. Detajl na nižji ravni bi bilo nekaj podobnega , ki se ukvarjajo s čiščenjem vhodne podatke uporabnikov. To je nekaj, kar ne bi bilo res treba skrbeti. Vi bi se morali osredotočiti na to, kaj vaše spletne dodelitev dejansko gre. Odpravlja veliko boiler kode. To je arhitektura za vaš projekt. Najbolj priljubljen bi bilo Model-View-Controller, katerih bom govoril o na sekundo. In veliko krat ti okviri poosebljajo niz postopkov, Pravila in najboljše prakse za vas, da uporabite tako da, ko sprejme okvir spletni moraš napisati svojo kodo na določen način, in to je ponavadi dogovorjen niz načel ki ga je skupnost, ki je splošno sprejeto, da je dober način za pisanje kode. To naredi kodo bolj vzdrževati, bolj uporabno, tako naprej in tako naprej. In končno, kar želim poudariti, o okvirih v primerjavi s knjižnicami je ta ideja o inverzija nadzora, in stvar je to. Razlika med knjižnica in okvira je, da s knjižnico ste še vedno pišete glavni program, in ste nekako sklicevanjem knjižnico in pozvala knjižnici narediti nekaj za vas. Razlika med knjižnico in okvir je, da je okvir začne s kontrolo, in se sklicuje na svojo kodo, tako da lahko pomislite, da je - to je razlog, zakaj se imenuje okvir - Okvir določa ta okvir in strukturo za kodo, in izpolnite v luknje, in to bo postal bolj očiten sekundo ko vidiš, da začnem pisati kodo v kontekstu okvira. Videli boste, da sem zapolnitev vrzeli, in okvir nekako nadzoruje vse gibljive kosov, in moram dati kosov na pravih mestih. Danes bomo govorili o Kohana, ki je eden od mnogih PHP okvirov. Obstajajo spletne okviri, in tam so tisti, v skoraj vsakem posameznem jeziku, in sem pobiral Kohana ker Kohana je nedvomno in na splošno priznana kot najlažji okvir PHP, da poberem. To je najbolj lahek. Obstajajo tudi druge tisti, tam zunaj, ki prihajajo z veliko, veliko več funkcij, vendar se nagibajo k bolj težko, da poberem. In končno, Kohana uporablja arhitekturo MVC. To je dovolj lahka, da lahko dobesedno zgraditi projekt Tukaj je tik pred vašimi očmi, in lahko precej sledite skupaj precej enostavno. Kaj je arhitektura MVC? To je kratica za Model-View-Controller, in morda, če menite o kodi pišete doslej za nekatere od vaših spletnih razvojnih psets boste lahko videli nekaj, ampak ponavadi, ko začnete pisati bolj zapletena spletna aplikacija, delitev med temi 3 segmente postaja vse bolj očitna. Jaz določeno MVC tu nekako kot dimnik, in pogosto boste slišali ljudi govoriti o kupih v razvoj spletnih strani, in to je za ponazoritev idejo, da vsak sloj, vsaka komponenta res poskušal le sporoči med 2 drugih komponent. Nekdo dostopa do vaše spletne strani, kot stranko ali brskalnika. Njihova interakcija z vašim programom skozi pogled kodo. Pogled koda komunicira s krmilnikom. Krmilnik komunicira z vzorcem, in model, komunicira z bazo podatkov SQL. In ni skokov vmes, če ste pravilno napisati svojo kodo. Kaj te stvari narediti? Model, v bistvu je del kode, ki se ukvarja z vašimi podatki. Vse, ki se ukvarja z zbirko podatkov, s predmeti, ki jih shranjujejo, ali pridobivanje te predmete v zbirki podatkov, to je vse ravna z modelom. Morda imate predmetov v zbirki podatkov. Bomo ustvarili model, ki ima opraviti z delovnimi mesti, Tako sporočilo je lahko nekaj atributov do nje. Morda imate funkcije okoli shranjevanje teh sporočil ali pridobivanje delovnih mest ali filtriranje delovnih mest in tako naprej in tako naprej, in to je vse kode, ki se ravna z modelom. Regulator je neke vrste logike aplikacij, in lahko gredo veliko različnih stvari v logike aplikacij. Če ste v pogovoru z drugačnim API, da se lahko, če imate opravka z logiko aplikacije. Če ste poskušali pripeljati na podatke iz več različnih modelov in so jih kombinira na nek način, da lahko pogosto ravna s krmilnikom. Na primer, na Facebook, če ste prijatelj je nekdo, potem morda, da akt o ustanovitvi to razmerje se lahko stori s krmilnikom. In končno, pogled je koda, ki se ustvarjajo tisto, kar dejansko videli. Veliko krat Mislim, da v CS50 psets ti si res ne spodbujajo fantje ločiti teh 3 stvari. Verjetno boste imeli to veliko, dolgo datoteko, kjer je na vrhu naredite nekaj SQL poizvedbo in morda narediti nekatere obdelave na podatke, ki jih pridobi iz zbirke podatkov, in potem imate vse svoje HTML na dnu. In morda boste ugotovili, da je, kot ste ustvarili več in več strani da boste imeli nekaj kode ponovitev, in tudi, Stvar je datoteka postane zelo velika in dolga in postane okoren za upravljanje. Razlog, zakaj je MVC tako tudi obravnavati je zaradi številnih razlogov. Prva stvar, ki je nekaj, kar se imenuje ločitev skrbi kar je ideja, da ko imate - v najboljšem primeru 1. del kode je treba storiti, 1 stvar in to res dobro, in ne bi smeli združiti koščke kode, ki naredijo raznolike stvari. Na primer, poglejte kodo in vzorčno kodo, ne res, da so povezani. Nimajo biti v isti datoteki, tako da, če lahko, jih ločite od tako da je enostaven za vzdrževanje. Druga stvar je koda ponovno. Morda boste sami pišete isto poizvedbo SQL ali delaš podobna vprašanja, ki se lahko načrpane v 1 funkcijo, in to je ideja modelov in nadzorniki, jo imajo v ločeni funkciji, ki jo je mogoče ponovno uporabiti v različnih krajih v vašem projektu. In na koncu, ki je vezana na sušenje kodo, ali pa se ne ponavljajo, ne ponavljaj se. To je zelo razumljivo v razvoju. Kadarkoli lahko, da ne želite, da se ponavljam, ker če ste sami ponoviti,  to je veliko dražji za vzdrževanje. Če želite spremeniti 1 stvar, boste morali spremeniti povsod, in ki vodi do napak, in to je grozno. V redu. Kakšna vprašanja o Kohana sploh? Super. Zdaj bomo, da se potopite v živo kodiranje seji, in upajmo, da bo šlo vse dobro. Jaz bom v bistvu izgradnjo te spletne strani na enem od mojih oddaljenih strežnikih, in na ta način vidva lahko tudi glej spletno stran in dostop do spletne strani, in tudi okolje je bolje konfiguriran kot moj oddaljenem računalniku, saj teče Linux namesto OS X. Mi smo dobesedno bo začela. KohanaFramework.org. Grem prenesti kodo iz spletne strani. Grem kopirati link naslov, pojdi na mojem strežniku, jo naložite, in bom citat. [Študent] Kaj je največja si lahko besedilo? [Brandon Liu] Je zdaj bolje? [Študent] Je to izvedljivo? [Brandon Liu] Ja, to je v redu. I prenesli ZIP datoteko in razpakirati, da v mapi Kohana, in bomo preimenuje CS50-Kohana, in greva noter Super. Tukaj lahko vidite kup različnih datotek. Večina od vas mogoče ignorirati - Ne bomo šli skozi vsako posamezno datoteko, ki je tu zaradi naših časovnih omejitev, ampak na splošno, ko namestite Kohana, je prva stvar, ki jo storite se greš v imenik, in boste v bistvu narediti nekaj okoljskih preskusov in drugih malenkosti da se prepričajte, da je vaše okolje pravilno nastavljen za zagon Kohana in se prepričajte, da je vse v redu. Ogledate si lahko večina stvari mimo, ampak na splošno vedno vodijo v to 1 problem kjer se pritožuje, da je nekaj imenik ni zapisljiv, in da je zaradi nekaterih dovoljenj. Ne vem, koliko so fantje spoznali dovoljenja datotek v CS50, ampak če boste to storili web razvoj, ste tekoč teči v to vprašanje veliko. Grem, da bi bilo mogoče pisati in mislim, da moram tudi - tam gremo. Ok, zdaj lahko vidite vse, kar je minilo, zdaj pa vam bo povedal, da preimenujete datoteko install.php. Grem, da se premaknete datoteko install.php, da installed.php, in zdaj, če sem osvežiti, to mi daje neko napako, in to je, če debugging pride noter To je, kjer si lahko ogledate, kaj se dejansko dogaja, da se zgodi. Stvar je v tem, privzeto Kohana predpostavlja, da vaš projekt je v korenski imenik vaše domene, tako da je pričakoval, da bo na demo.brandonkliu.com. Moramo povedati, da je pravzaprav v podmapo. To je v podmapo imenovano CS50 Kohana. Stvar je v tem, da je napačno razlagal CS50-Kohana kot nekaj drugega, kar bom razložil v drugem. Ampak naj vam povem, da je to nekaj, kar je bilo pričakovati. Kaj bomo storili je, da smo šli v to mapo, imenovano bootstrap.php, ki je mapa konfiguracijo, kjer se veliko različnih stvari ustanovi. Odprem to. Potem pa ena od prvih stvari, bom storiti, je spremeniti časovni pas. In potem poglejmo. Aha! Tukaj. Obstaja kup različnih konfiguracijskih izrekov tukaj, ampak ena iščem je ta stvar imenovano bazo URL, in privzeto dobim nastavljena na Kohana, ampak bom za spremembo, da bi CS50-Kohana, in mislim, da bi morali to popraviti. Ja, super. Privzeto je, da vidimo, da je to delovalo, pravi: "Hello World". Od kod se je vzela? Kako smo prišli do Hello svetu? Kje točno je oznaka, ki v resnici napisal? Da bi razumeli, da bom predstavil ta koncept se imenuje usmerjanje. Precej vse spletne okvire koncept imenovano usmerjanje, , ki je del programske opreme, ki bo karto določeno URL na določen del kode v vašem okvira. Na primer, če imate nekaj URL in greš do neke URL kot foo.com / blog / all kaj potem okvir bo naredil - ali vsaj kaj Kohana bo naredil - se dogaja, da bi našli skupino, imenovano krmilnik blog, in to se dogaja, da zaženete funkcijo imenovan dejanje vse. Vem, da sem govoril o razredu in funkcije, In vem, da fantje niso zajeti razredov in funkcij V CS50 še, ampak za zdaj, lahko si misliš razrede, kot samo skupino funkcij, način združevanja funkcij skupaj. To je res vse, kar morate vedeti. Zdaj, če se ozremo na našo strukturo map, znotraj mape aplikacij obstaja še ena mapa razredi, in druge mape se imenujejo Controller in model. Če pogledaš v notranjosti mape Controller, smo videli, da je datoteka z imenom Dobrodošli, in si lahko ogledate tukaj je razred imenuje nadzornika Dobrodošli, in je funkcija imenuje akcijski indeks in kaj počne, je, da določa telo vaš odziv na Hello World. To je, če se koda napisano. Drugo vprašanje je, no, nisem šel k bla, bla, bla, / welcome / indeks. Kako sem končal tukaj? No, to je preprosto zato, ker tu na dnu našega bootstrap datoteke kjer smo postavili naše poti lahko vidite, da so postavili nekaj privzetih vrednosti. Privzeta krmilnik Dobrodošli. Privzeto dejanje je indeks. Zato, ko smo dal ničesar notri samodejno odšel v pozdravnem krmilnik in indeks delovanje. Vse smisla doslej? Sedaj lahko naredi več kot le pojdite na nadzornika in specifični ukrepi. Lahko prenese tudi na parametre krmilnika. Samo kot primer, Jaz bom dodal še en ukrep za to napravo, da ti pokažem. Recimo to dejanje Echo, saj se dogaja, da vam povem, karkoli ga dal, in tako sem v bistvu dogaja, da zgrabite parameter, ki se dogaja, da se pošlje po meni, da program usmerjanja, in kot lahko vidite tukaj, ta vrstica tukaj, lahko vidite, da To v bistvu pomeni, da imate krmilnik, in imate /, in imate dejanje, in imate še /, in da se dogaja, da se parametri, in ker imamo to ime ID v kotnih oklepajih, kar pomeni, da smo poimenovanje tega parametra ID. Kasneje v mojo kodo krmilnika, če želim, da zgrabite imajo za ta parameter, Lahko uporabite kodo sem napisal, poiščite parameter z imenom ID. To je tisto, kar sem tu in bom vrnil in rekel: "Rekel si," da. In tako zdaj, če grem na naši spletni strani, Grem na cs50-kohana/welcome/echo/Helloooo-- oh, to je res. Je 1. korak sem odšel ven. To je del žive kodiranja idejo. Tukaj je 1 stvar. Pa poglejmo. Torej običajno privzeto z veliko teh spletnih aplikacij morate vključiti to index.php stvar v vašem URL, ker je ideja index.php je neke vrste vstopno točko vaše vloge, ampak seveda, to je nekako nadležno, da imajo. Vi ne želite imeti index.php pojavijo v vašem URL, in precej vsak web okvir iz škatle ima ta index.php težave, in tako da boste morali sprejeti nekatere ukrepe, da bi lahko odstranili to. Zato v tem primeru kaj bomo storiti je, da bomo uporabili datoteko z imenom. htaccess, in to je nekaj, kar je specifično za spletni strežnik Apache, in lahko naredi stvari, kot Reportaža URL-jev in preusmeritev URL in tako naprej in tako naprej, in Kohana je dovolj prijazen, da predloži predloge. htaccess datoteke, ki jih lahko uporabite. Kot lahko vidite, da je slika tam poklical example.htaccess, in bomo kopirali, da. htaccess. Bom odprl to in ga urediti, in v bistvu je pa cel kup različnih stvari. Ključna postavka, boste morda želeli pogledati, je tukaj. Ideja je, da ta vzpostavlja pravilo, ki pravi, "V redu, kar vnesete v, prepend index.php na to." Vidite lahko, da. . * Stoji za nič, ujemajo ničesar, in drugi del je index.php / $ 0, in $ 0 se nanaša na vse, kar je bilo prej ujemajo. Ali to smiselno? Ampak res ključna stvar, ki jo želite spremeniti, spremeniti to reportaža osnove, ki je osnovni naslov. To nekako predpostavlja, kjer delate z. Bom dodati CS50 Kohana na to, in na ta način zdaj, če sem odstraniti index.php, Sistem bi moral delovati, in bom dodati nekaj številk da ti pokažem, da je res naredil delo. Sliši se dobro. Kakšna vprašanja? [Študent] Kako je vedeti, da bo 123? Je to argument? Točno tako. Lahko si o njej mislijo tako kot argument. Ampak čudno, čeprav je, da način Kohana to počne se tega ne stori natanko tako kot argument. Moraš ga zgrabi, kot je ta. Moraš zgrabi zahtevek predmet in prosi za parameter, ki je z imenom ID, in da ID Ime izvira iz tega bootstrap datoteke da sem že prej pokazala, in ime ID je bilo v teh kotnikov, in to je, kako ste zgrabi te parametre. Super. Še kakšno vprašanje? Kot sem rekel, krmilniki obvladujejo aplikacijsko logiko, tako da je 1 primer, kjer lahko vidite that - to je zelo osnovna, vendar je še vedno logika aplikacije, Ideja oprijemalne parameter in ustvarjanje nove niz , ki pravi: "Rekel si bla," in potem pljuvanje, da vrnem k tebi. In na splošno, kar morate storiti, je, da ustvarite različne krmilnike. Sami ustvarite ločene krmilnikov za različne dele vaše spletne strani. Danes se bomo, da bi zelo preprosto spletno stran, in to bo zelo osnovni blog. Bomo narediti nov krmilnik samo za delovna mesta v blog. Ampak potem, če bi bil jaz dodate tudi komentarje na blog post, potem bi verjetno želeli, da bi nov krmilnik za te pripombe. Če sem hotel dodati uporabnike, bi verjetno dodali nov krmilnik za tiste uporabnike, in na splošno, ideja je, da vsakič, ko imate nov model, Novi podatki predmet, ki ste se ukvarjajo z, imate enotnega nadzornika za tega podatkovnega objekta. Danes smo samo delali z 1 podatkovnega objekta, in da se dogaja, da se delovna mesta, in tako si lahko zamislite podatkovnih objektov, kot ustreza tabel. Običajno ima vsak Tabela ustreza 1 vrsto podatkovnega objekta, tako da bo po tabela ima 1 prispevek modela, ki bo imela 1 prispevek krmilnik, ki ustreza tisti, in enako za komentarje, enaka za uporabnike, in tako naprej in tako naprej. In to je splošno pravilo palca. Tam se bodo posebni primeri, v katerih boste lahko razlikujejo od tega, ampak 90% časa, ki je tisto, kar boste počeli, in ti bom pokazal, da je tisto, kar bomo danes počeli. 1. več koncept, preden se spustimo nazaj v kodi, Ta ideja objektno relacijske preslikave. Ste vi že storili spletno razvojno pset, in videli ste, da ste jih naredili poizvedbo SQL, in karkoli se vrne v vas, so vrstice. Boste dobili te vrstice, in ti indeks, ki jim jih nekaj ime, ime stolpca in tabele in to je, kako delate z njim, in je lahko malce nerodno. Ampak tudi, če imate odnose v zbirki podatkov, kot na primer, če imam pripombe in prispevke, potem pa želim, da zgrabite matično delovno mesto komentarja. Če uporabim samo vrstice v SQL, nato pa vse, kar lahko dobite, je ID matičnega delovnega mesta in ni dejanski sama tabla. Toda, ko smo kodiranja, kaj dejansko želimo je, da dejansko zgrabite  staršev se objavljajo včasih. Kaj predmet relacijska preslikava pa je je potrebno rezultate poizvedbe zbirke podatkov in ga postavi v objekte za vas, ki so veliko lepše delati z kot navaden nizi in vrstic. Na primer, sedaj, ko imam pripombo morda, in želim, da zgrabite svojo matično delovno mesto, in jaz morda komentar arrow post, potem bo to dejansko mi post predmet ustreza dejanskemu matično delovno mesto, ne le nekatere ID, ki bi sicer morali uporabiti in narediti še SQL poizvedbo, da zgrabite mesto, ki je okoren in nepotrebna. In poleg tega s preslikavo vse te podatkovne vrstice v objektih, lahko dodate tudi več funkcij za predmete, Tako, na primer, sem govoril o tem, kako so razredi v bistvu skupine funkcij. Lahko si o njej mislijo tako. Na primer, morda imam to objavo predmeta, in morda bi rad imel neko funkcijo v zvezi z njo da mi je v bistvu pove, je bil pred kratkim posted? Je bil objavljen v zadnjem tednu, drži ali ne? In to je funkcija mi lahko pritrdite na ta predmet, in to je res priročno, da ga imajo na istem mestu, in obstajajo številne različne funkcije, ki jih lahko ustvarite za te objekte, in to je res lepo, da se lahko pripne na razred, predmetu, ker se, če si imel vrstice, ki prihajajo iz zbirke podatkov, potem si ne morem priložiti nobene funkcije za to. To je dobesedno samo podatki. Vsa vprašanja o tem sploh? ORMs so zelo pogosti izdelava spletnih strani, in obstaja veliko različnih vrst ORMs, in Kohana ima svoj ORM. To je zelo osnovna, vendar boste dobili okus, kako izgleda. Pa ustvariti model za naše blog delovnih mest, in prva stvar, ki jo očitno morali storiti, je ustvariti dejansko tabelo v naši bazi podatkov, da bi dejansko shranjevanje naših podatkov za ta delovna mesta. Prva stvar, ki jo bom naredil je, pojdite na phpMyAdmin. Vidva pred uporablja phpMyAdmin? Ok, super, tako da vi že veste, kaj to je, in bom, da ustvarite novo tabelo, imenovano Kohana Sporočila, in to se dogaja, da se res preprosta. Jaz bom moral prijaviti nazaj noter Vse bomo storili danes, je imel avtor in telo, samo, da bo enostavno. Grem ustvariti tisto mizo, in zdaj imamo samo tabelo, ki predstavlja naše prispevke z 2 polji za našega avtorja in naše telo. Druga stvar, bom sedaj storiti je, nastaviti mojo spletno aplikacijo, tako da ve, kako se povezati z bazo podatkov, in to, še enkrat, je nekaj, kar boste morali storiti z vsemi spletnimi aplikacijami. Moraš mu povedati, uporabniško ime in geslo in ime baze in tako naprej in tako naprej da ugotovimo, kako dejansko povezavo z zbirko podatkov. V Kohana, imamo nekaj, kar ti modul zbirke podatkov, in v mapi konfiguracije imamo to mapo z imenom baze podatkov, in kot lahko vidite, obstaja kup nastavitev, morate nastaviti tukaj da je povedal, kaj je uporabniško ime in geslo za bazo podatkov, da bom lahko dejansko povezati z njim. In ker ne želim vama, da bi dejansko vedeli uporabniško ime in geslo moji zbirki podatkov, Imam datoteko, kjer sem že vse ustanovi, in bom, da kopirate in ga prilepite konec. Super. Ok. Mislim, da je vse konfiguracije moram storiti, ampak poglejmo. Mi bomo še naprej delajo v njem, in če se kaj sesuje, potem bomo to popraviti. Kaj bom storiti zdaj je, da bom ustvariti nov krmilnik. Ali dejansko, mi je žal. Najprej sem moral ustvariti nov model. Jaz bom ustvariti nov model, imenovan Post.php, in kaj bomo storili je, da bomo ga pokličete razred Model_Post. Get nekatere sintakso poudarjanje naprej, in tako, ko sem rekel, "se razteza ORM," ki je v bistvu nekaj več objektno programiranje, ki žal so fantje niso naučili v CS50 še ni, ampak to je precej enostavno, da poberem. To mi daje vse te dodatne funkcionalnosti, ki prihaja v tem ORM paketu, in tako sem dobil kup dodatnih funkcij in drugih malenkosti za brezplačno, ki boste videli malo v sekundi. Zdaj pravzaprav vse, kar morate storiti, je ustvariti ta razred. Saj sploh ne potrebujete, da bi funkcijo ali karkoli, vendar sem ustvaril razred, ki predstavlja tabelo, in ker sem razširiti to ORM razred, Sem dobil kup stvari zastonj, tako da za zdaj vam ni treba nastaviti kaj več navzgor. In zdaj, kaj bom storiti, je, da bom ustvariti nov krmilnik, ki bom ime blog.php, in bom, da bi kopirali več kot pozdravnem krmilnika tako da mi ni treba znova nekaj stvari, in zdaj moram preimenovati to. Kaj bom naredil, da test in se prepričajte, vse deluje ven, Grem, da zgrabite prvi post iz moje zbirke podatkov in tiskanje telo pošti na zaslonu. Da bi to dosegli, kaj bom storiti najprej se grem, da shranite objav spremenljivki kaj bomo storili, je - v Kohana kar morate storiti, je, da zgrabite post predmet to je nekako nerodno, ampak moraš narediti to stvar, imenovano ORM :: tovarne, nato pa se boste peljali v imenu modela, ki ga želite, in se vrne predmet ORM, ki predstavlja ta model. In potem, kot sem rekel, ko smo se podaljša ORM predmet, smo dobili vse te metode za brezplačno, tako na primer, smo dobili to novo funkcijo imenovano "našli vse," ki samodejno vrne vsako posamezno delovno mesto v zbirki podatkov, kar je zelo priročno. In zdaj v telesu se bom vrnil prvi post in se vrniti svoje telo. In seveda, moram ustvariti delovno mesto, tako da je vstaviti novo delovno mesto. Jaz bom rekel, "Brandon, moj prvi post." Super. In zdaj smo šli na blogih in če vse deluje dobro - oh, to je nekaj drugega neumna slika dovoljenje stvar znova. Počakaj 1 sekundo. To je neke vrste absurd. Takole. Ok. Popravil sem to dovoljenje problem. To je bil težaven, da ustvarite nekaj datotek in nekaj dnevnika, in dovoljenja, spet, niso bili pravilno nastavljen, tako da mi je uspelo zato te datoteke so bile pisati in izvršljiva tako da bi lahko dejansko prijavi na stvari. Zdaj pa mi je dal še eno izjemo rekel: "class ORM ni bilo mogoče najti" in to zato, ker sem pozabil še en korak. To je slabo. V datoteki mape bootstrap, so ti moduli tukaj, ki se lahko odločite, da omogočite ali onemogočite. To so kup različnih funkcij, ki se lahko odločite za uporabo v Kohana, ki je nekako lepo. Na primer, če imajo modul za preverjanje pristnosti , ki jo lahko uporabite za avtentikacijo uporabnikov. Imajo predpomnjenja modul, če želite izvajati neke vrste predpomnjenje nazaj konec, da bo delo aplikacija hitreje in malenkosti. Moramo omogočiti bazo podatkov in ORM modul, ker kot sem rekel, da smo z uporabo baze podatkov, je očitno, in moramo tudi omogočiti ORM modul, zato, ker bi radi imeli dodatne funkcionalnosti, kar je lepo, da so. Vse kar morate storiti je, odkomentirajte ti 2 vrstici, in zdaj, če sem osvežiti, da mi je dal še eno napako. Pravi: "Razred Model_Post ni mogoče najti." Zdaj je to dobro problem imeti. Pa poglejmo. Ga javno objavi. Ne Čakaj. Oh, draga. Ne vem, zakaj je ni uspelo najti to. To je res čudno. Imam razred tukaj. Mislim, da bi morali - oh. Jaz sem tako neumen. Pozabil sem dodati PHP oznako. To je, zakaj. Zdaj moram odpeti, da 1 sprememba sem storil. Ok. Takole. To je bilo res neumno. Nisem imel otvoritveno PHP oznako. Toda, kot lahko vidite, zdaj je pravilno deluje, kajne? Imamo 1 post. Zgrabil smo prvo mesto, zdaj pa smo natisnili svoje telo. Super. Fantastično. Kakšna vprašanja? Nope? Vsa vprašanja? Ok, tako da smo pravkar ustvarili model pošta, zelo osnovna, in bomo dodali nekaj funkcij kasneje. Mi lahko dodate validacij in filtriranje. Validacij so ena od stvari, da okviri rešiti za vas zelo, zelo dobro, in jaz ne mislim, da vama je bilo, da to stori za vaše CS50 pset, vendar, če vam spletni razvoj za svoj končni projekt, boste verjetno želeli narediti neke vrste potrditev, tako kot ne ob praznih uporabniških imen, Mogoče ima geslo z vsaj nekaj dolžine, take stvari. In to je res nerodno, da izvajajo te stvari, ki jih sami, in precej vsak okvir web to naredi za vas in vam omogoča, da to storite v zelo čist način. In model, kjer ste običajno izražajo ta pravila potrjevanja saj je potrditev, ali je model veljaven ali ne. Ampak za zdaj, bomo dal, da šele pozneje, in zdaj gremo na delo v drug del, in bomo poskusiti in narediti nov pogled , ki navaja vse prispevke. Koraki, ki sodelujejo pri oblikovanju nove ukrepe za uvrstitev na seznam vseh delovnih mest je, da zgrabite seznam vseh delovnih mest in potem postane seznam vseh delovnih mest s pogledom. Prav tu, na srečo dovolj, smo že zgrabil vse prispevke uporabljate to prvo linijo, našli vse funkcije, in zdaj, kaj bomo storili, je doslej Sem bil neposredno določitvijo telo odziva ob prehodu niz, zdaj pa želim uporabiti pogled, in razlika med namenom in prav to počne je z namenom, da lahko imam lepo, veliko predlogo HTML, in kaj lahko storim, je to nekatere spremenljivke mimo in potem so se pogled samodejno zapolnijo svojo predlogo uporabo teh spremenljivk. Kaj bom storiti, je, da bom ustvarite nov pogled, in bom ime pogleda nekaj podobnega "blog / indeksom" in bom v bistvu veže ta - oh, kaj pišem? Moji možgani so nekje drugje. Grem, da se veže delovnih mest variabilnih na pogled, tako da način, pogled ima dostop do tega po spremenljivki. In tako zdaj moram ustvariti to stališče, tako da tukaj imamo to mapo z imenom "Pogled", in prva, bom, da ustvarite novo mapo, v skladu s tem ti "blog". To je lepo. Na ta način bomo lahko imeli lepo hierarhijo za naše poglede. In potem bom ustvariti novo datoteko, kar se imenuje "index.php". Super. Pravzaprav, greva oba tu. Making file je verjetno najpreprostejši del vsega tega, in to so stvari, verjetno ste že seznanjeni. Mi boš naredil nekaj zelo preprostega, začetek reče: "Moj seznam blog delovnih mest." Potem lahko gremo skozi, in bomo lahko ponovitev prek sporočil matrike, zgrabi vsako posamezno delovno mesto in rekel nekaj takega - Mogoče dodajte vrstico in nato natisnete avtorja in telo. Da je smiselno tako daleč? In da vidim, če deluje. Nič se ni zgodilo. Sprašujem se, zakaj. Oh, sem zamudil 1. korak. Zelo neumno od mene. Ustvaril sem mnenja, vendar nisem določiti stališče, kot odgovor tako da boste morali narediti 1 stvar. Kar morate storiti, "ta odziv telesa" in jo nastavite, da se pogleda. Takole. Imamo naslov, in potem imamo delovno mesto, in samo za brcne, pa vstavite drugo delovno mesto Tako lahko vidimo seznam. In vstavite teh 2 delovnih mest, in zdaj, če sem osvežite stran, smo videli vse te prispevke tukaj. Ali to smiselno doslej? Ja, vprašanje? Oh, v redu. Kot lahko vidite, smo bili sposobni ločiti vse te kode iz v različnih oddelkih, in potem lahko vidite, da je najbolj jasno, s pogledom na kodo. Ta datoteka tukaj, da zastopa stališče, ga skrbi samo predstavlja podatke, prikaz podatkov. To gets opravili neke vrste podatkov, in vse kar naredi je samo pokazal. V vseh drugih delih kodo, vam ne bo treba skrbeti za nič od tega, in podobno, se vaš pogled koda ni treba skrbeti ničesar o kako dostopati do baze podatkov in tako naprej in tako naprej, ki je res dober in naredi kodo veliko več vzdrževati. Kot sem rekel, pogledov, oni so dinamični, da to je 1 slika, ampak bi ustvarila različne poglede temeljijo na spremenljivkah, ki jih dejansko gredo v, in poleg tega obstaja veliko različnih pomožne funkcije , ki ga lahko uporabite, da vam pomaga napisati svojo kodo hitreje, ki Pokazal ti bom, v samo sekundo. Ja. [Študent] Torej $ 0 je krmilnik, kajne? To je druga stvar. Vprašanje je $ 0 krmilnik? $ 0 je spremenljivka sem ustvaril tukaj. Ustvaril sem pogled prvi. I je dodeljena kakšne spremenljivke. Potem sem ga opravil v to funkcijo, jo nastavite kot telo odziva. Ali to smiselno? [Študent] Torej je pogled :: tovarne, je pogled kot razred ali knjižnica [neslišno] Tovarna funkcija? Vprašanje je o funkciji pogled :: tovarne, in v bistvu je to nekaj več objektno programiranje v bistvu. Pogled je pogled na razred, in ima metodo, imenovano "Factory" in to je način, da zgrabite predmet, ki je imenovan "blog / index." In to je nekaj več objektno programiranje stuff da ne bom šel v tu preveč. Zdaj je očitno, želimo ustvariti nova delovna mesta, vendar ne želimo imeti, da to storite s pomočjo baze podatkov, Tako bomo ustvarili nov ukrep za ustvarjanje novo delovno mesto, in tam je veliko stvari moramo storiti. Prva stvar, ki jo boš naredil - kaj je reševanje teh stvareh enega po enega. Prva stvar, ki jo bom naredil je, da imamo za ustvarjanje obrazca za vstavljanje novo delovno mesto, vendar sem tudi dogaja, da najprej dodate novo dejanje, tako dodal novo dejanje je prav tako enostavno, kot je dodal novo funkcijo s krmilnikom, in zdaj bom naredil nekaj zelo osnovne, Samo zgrabi to stališče in post, samo prikaz za tabo. In potem zdaj grem, da ustvarite nov pogled datoteko in bom, da začnete pisati nekaj stvari. Kaj je lepo o Kohana je, da zagotavljajo veliko različnih pomožne funkcije Za vas, da napišete kodo pogled lažje, in 1 od teh funkcij pomagač ali pomagač modulov je po pisanju obrazce. Za pisanje obrazcev, ne res, da neposredno pisati HTML sebe. Vidva sta napisana HTML obliki. Saj veš, kako je lahko zelo, zelo boleče in nerodno pisati obrazce. To ni zabavno, tako da na srečo, smo v bistvu lahko napišete obliko uporabo Kohana je tvorijo pomožne funkcije, da naredi za nas. Bomo v bistvu so polja za vsako stvar, ki jo imamo, Tako eden za avtorje in eno za organe. Bomo imeli etiketo in bomo imeli vhod. In potem na koncu, bomo morali svoje stališče. In kot lahko vidite, da je to precej čistejše, da napišete kot vse to grdo HTML, ki je nekako lepo. Odobrena, obstajajo druge spletne okviri, ki imajo celo čistejši od tistega, ampak vsaj je to bolje kot pisanje HTML sami. Super, tako da je to, kar vidite. To je nekako grdo, tako da bom dodati prelom vrstice tam da bi to izgleda malo lepše. No, seveda, še vedno izgleda res, res slabo, vendar smo šele osredotočili na funkcionalnost za zdaj, in ne o estetiki. Ni časa, da naredijo vse. In kot vidite, zdaj imamo super osnovno obliko, ki je nekako lepo. Ta koda bi rekel, je čistejši, kot poskuša pisati HTML oblikujejo sami, tako da je lepo. Kaj je naslednje? Zdaj moramo narediti stvari z akcijo. Običajno, ko pišete oblike HTML, moraš povedati, kje se dogaja, da predloži obrazec. Privzeto v večini spletnih okvirih, trdi, da točno isto URL, tako da stvar je, če boste poslali zahtevo priti do / blog / new, naj bi vam prikaže obrazec, ampak, če boste poslali prošnjo za delovno mesto, na / blog / new s podatki, to naj bi dejansko poskušali rešiti to delovno mesto in nekaj storiti z njim. Kaj bomo storili, je v bistvu vse, kar moramo storiti, da preveri, ali je zahteva po ali zahteva get je, da preverite, kaj so objave spremenljivke, ki jih lahko nastavite. In če je po spremenljivka nastavljena, potem bomo poskusili ustvariti novo delovno mesto. Spet smo samo to, in da ustvarja novo delovno mesto, in smo dobesedno bo določena področja, kot je ta svoje, in potem se bomo, da ga shranite. In potem bom preusmeriti na kazalo, da bodo lahko spet videli naš seznam delovnih mest. Poskusimo to. Jaz bom rekel, "Brandon" in nato predloži post, in če bo šlo vse dobro, Kot lahko vidite, to me je preusmerjen na strani s kazalom, in če sem se pomaknite na dno, imamo novo vstavljeno post. Yay! Ja, vprašanje. [Študent] Kaj če bi začela točno isto stvar ste vnesli prej? Ali preverite, ali niste podvojene Enako oddajo? Bodite privzeto, ne, saj privzeto - Žal mi je, vprašanje je, če vnesete v natančne istih podatkov v obliki in trdijo, da bo vam omogočajo, da vstavite dvojnika, dvojnik vstop v bistvu? Zdaj, ja, bo vam omogočajo, da to storim, ker v zbirkah podatkov je popolnoma velja, da imajo popolnoma podvojene vrstice, če pa je skrb, nato pa lahko dodate validacij, na primer, se prepričajte, da če je to popolnoma enako, kot nekaj, kar že obstaja, potem pa pravijo, da je neveljaven predmet, in potem si lahko tudi določite svoje sporočilo o napaki in reči, "Invalid ker je ta že obstaja" ali nekaj takega. Toda v tem primeru bi lahko samo ustvariti nekaj dvojnik. Zdaj pa poskusite in dodamo nekaj validacij. Problem pri tem je, da je zdaj Jaz bi dobesedno predloži povsem prazno mesto. Jaz lahko s klikom na ta gumb zdaj, in tam gremo. Ti pa res ne vidim, ampak to dodatno vrstica tukaj kaže, da imam dobesedno novo delovno mesto. Treba ga je le prazno avtorja in slepo telo, in ne želimo, da bi ljudje za to. To je, če pride noter validacija Ne morem iti na moj modela objekta, in zdaj lahko dodam novo funkcijo, ki določa kaj potrjevanje pravila naj dodam, da ta model se prepričajte, da je veljavna ali, da določite, kaj pomeni biti veljaven pošta? In hočem reči, da je veljavno le, če po tako avtor in telo niso prazne, in to je, kako si to naredil v Kohana. Ustvarite novo funkcijo imenovano "pravila", in potem si v bistvu vrnil asociativno paleto , ki določa pravila o potrjevanju za ta objekt. Bomo vrne niz, nato pa, kaj bomo storili, je pravijo "avtor", da gre za paleto, ki gre v drugo matriko, imenovano "ni prazna." In potem bom rekel "telo". Ok, in sintakso za to in strukturo za to lahko izgleda malo nerodno in nekoliko zapletena. Če ste prebrali dokumentacijo, to je zelo enostavno ugotoviti, Ampak v bistvu je to tisto, kar morate storiti, da določite nekatera pravila za veljavnost, in obstaja veliko različnih pravil da bo Kohana daš zastonj, kot si lahko dodate pravila za povedati da mora biti vsaj ta dolžina. Mogoče mora biti numerična. Mogoče je, da bi alfa številčna. Mogoče je, da bi največ ta dolžina, tako naprej in tako naprej. Obstaja veliko različnih pravil, ki Kohana zagotavlja za vas, in lahko greš na njihovi spletni strani, pogled na dokumentacijo, in si lahko ogledate vse različne stvari, ki jih lahko storite. Ampak to je vse, kar moram storiti, zdaj pa poglejmo, kaj se zgodi če oddam prazno mesto. Kaj se bo zgodilo? Oh, ne, dobim napako. Dobim izjemo potrjevanja. No, to je dobro. To mi je povedal, da je moj model neveljavna, vendar ne želim prikazati izjemo za moje uporabnike, ko skušajo predloži nekaj neveljavno, kajne? Želim, da se jim neke vrste prijateljsko sporočilo o napaki ko gre kaj narobe. Kaj bomo storili je, da bomo zaviti vse, kar je v zanki poskus ulova. Pravzaprav, mislim, da je to tudi nekaj, kar še niso naučili V CS50, ker C, programski jezik C, nima izjem, ampak skoraj vsakega Drugi jezik ima izjeme, tako zelo, zelo na kratko, Izjema je nekaj, kar lahko del kode vrgel izjemo, ko gre kaj narobe, potem pa morda kakšen drug del kode višje ujeti to izjemo in naredil z njim nekaj. Na primer, v tem primeru del kode, ki poskuša rešiti model, to potrjuje model, če pa pravi: "V redu, ta model je neveljaven" da se bo vrgel izjemo, in to je nekako enakovredni v C morda vrne -1 ali kaj takega. In potem mi je ta funkcija, moja koda na višji ravni, lahko poskusite in ujeti to izjemo in v bistvu rekel: "V redu, če sem ujeti izjemo, kaj bom naredil?" Ali pa sem se odločil, da ne ujeti izjemo in naj nekdo višje ulov izjeme, ali če nihče ne ujame, potem celoten program zruši, in pravi, "Nekaj ​​je šlo narobe, in nisem mogel ravnati z njimi." Toda tisto, kar počnemo je, da zaviti košček kode v try bloku, nato pa dodate tudi nekaj, kar ti blok ulov, , ki je neke vrste kodo, ki bo skušal ujeti in izjeme, ki se lahko pojavijo. In tako, če sem ujeti to posebno izjemo ali razveljavitev izjeme, nato pa kaj bom storiti, je Bom nastaviti napake - mislim, da je, kako sem to naredil - in bom, da nastavite napak v določenem predmetu. In kaj bom storiti, potem je, če zadene to izjemo, da ne gre za preusmeritev, in če se ne preusmeri, to se dogaja, da pridejo ven iz if blog in zadeti ta blog / nova, ki se želijo želim storiti. Če je napaka, potem pa hočem iti nazaj v obliki in prikaz teh napak. Zdaj, kar želim storiti, je, želim prenesti v teh napak na pogled. Ok, mislim, da imam pogled tukaj, in v bistvu hočem prikazati tiste napake, če ti obstajajo. Preden sem napisati HTML za to, da bom res hitro ti pokažem, kaj struktura tega napak spremenljivi izgleda, in to je dobra praksa na splošno. Veliko časa boste dobili nekaj nazaj od neke metode, nekateri pa v okviru spletnega, in ne veste, kaj spremenljivka izgleda, tako da ne vem, kako delati z njim. Bom uporabila metodo print r, da ga v bistvu natisniti. In kot vidite, mi pove, da je sodelavec matrika, in imate ključ, avtor, opozarja, da ta niz, avtor ne sme biti prazno, in še en ključni, telo, opozarja na drugi niz, telo ne sme biti prazno. Jaz sem kot, v redu, v redu. Potem sem lahko Ponovil skozi niz in izpiše vsako posamezno sporočilo. To je v bistvu kot asociativni niz s kupom sporočil. Kaj bom storiti, je, "če je do napake," in bom ustvarili neurejen seznam, in bom Ponovil skozi vse napake. In to, in zdaj bom poskusil znova predložitvi to, in poglejmo, kaj smo dobili. Zdaj smo dobili to lepo seznam napak, in to je še vedno precej grdo, vendar je to očitno mogoče oblikovati tako videti lepo, ampak osnovna ideja je samo v nekaj vrstic kode, smo bili sposobni potrditi naš model, poskrbite, da nekatera polja niso bile prazne, in če je kaj narobe, potem se vrnete neke vrste sporočilo o napaki Jaz bi potem predstavili nazaj uporabniku. Prav tako lahko prilagodite potrjevanje tako da lahko dejansko prikaže sporočilo o napaki , ki je bolj specifičen, da vaše prijave ali kaj podobnega. Vse, kar je na splošno prilagodljiv. Na žalost, smo zmanjkuje časa, tako da bom moral odrezati živo kodiranja sejo tukaj. Obstaja kup drugih funkcij, želim dokazati za vas v tem primeru. Na primer, lahko dodate predloge za vašo spletno stran, tako da morda obstaja neke vrste HTML kodo, ki jo želite uporabiti za vsako posamezno stran v vašem mestu, in namesto da prilepite v vsakem posameznem file imate, kar očitno ne bi bilo slaba praksa, v bistvu lahko določite te predloge, in nato v krmilnik rekel: "Ok, jaz sem z uporabo te predloge." "Ali so vsi moji pogledi uporabite to predlogo." In zadnja stvar, želim dokazati, da vas kot dobro da nimamo časa za je cross-site skriptno, in v bistvu mislim, vi ste verjetno opazili v CS50 - Mislim, da David Malan verjetno govoril o tem, kako lahko navadno injicirati JavaScript kodo v - ste govorili o tem? Mogoče? Mogoče pa ne? Toda veliko krat lahko injicirali zlonamerno kodo JavaScript v bazo nekoga, in če ne pobegniti, da pravilno, potem, ko so predstavili te podatke nazaj uporabniku, potem lahko vodijo nekakšne naključne kode JavaScript ne želite, da se zgodi, in sem bil tekoč, da dokaže, kako bi to naredil v Kohana. To je pravzaprav zelo, zelo enostavno. Jaz lahko to storite prav zdaj, v 2 sekundah dobesedno. Vse kar morate storiti je, da v bistvu zaviti te stvari V ta stvar imenovano subjektov HTML. In da se bo samodejno pobegniti vse znake pravilno in poskrbite, da ne boste dobili ta problem. [Študent] pira ste prvi preizkus nepravilno. [Brandon Liu] Oh, ojej. Ok, to je vse, kar sem moral deliti z vami danes. Te diapozitivi se bodo objavljene, vendar so ti praviloma samo sredstva, ki jih je treba res potrebujete, da bi začeli z Kohana. Lahko greš na spletni strani. Imajo navodila in imajo tudi API Explorer. Mi lahko preuči vse različne funkcije in pomožne funkcije, ki jih imajo za vas. Običajno imajo dovolj informacij na spletni strani ki ga lahko uporabite, da bi začeli in se dogaja z Kohana. Tam se ne da veliko vaje, mislim, za Kohana, zunaj kaj imajo na spletni strani tukaj, tako da je to verjetno vaš najboljši stavo. Toda, če želite, da gredo z okvirom spletni in ne želite imeti, da poberem nov jezik, in želite nekaj, kar je relativno lahek in ima enostaven krivuljo učenja, Jaz bi definitivno predlagam Kohana. To je verjetno najboljša ponudba za to. Hecno, čeprav je, če smo s pomočjo Ruby na tirih, smo lahko ponovili, kar smo pravkar storil in verjetno bolj v skladu s 3 minutah. Ni šala, ampak učenje Ruby na tirih traja veliko dlje kot bi bilo potrebno, da se naučijo Kohana. To je v bistvu vaša izbira, kaj želite, da se odločite, da se naučijo, vendar, če želite, da vstaneš in teče hitro, Kohana je vsekakor zelo dobra izbira. Kakšna zadnja vprašanja pred koncem smo? Da. [Študent] Kako bi vključili, da v okviru CSS, kot ste jo uporabljali, ko ste bili poučevanje? Vprašanje je, kako bi vključili, da bi z okvirom CSS? Kaj bi mi verjetno storiti je, da bi mi verjetno vključuje nova mapa, kjer bi mi pustila vse naše CSS datoteke, in potem bi dodali tudi nove predloge. V predlogo sva vključujejo tiste CSS datoteke se prepričajte, da ste se sklicuje na vsako posamezno stran, in potem, ko ste dejansko pišete HTML, ki ste jo pravkar dodali ustrezne razrede in drugih malenkosti, in na primer, ko ste z nekaj podobnega obliki funkcijo pomočnika, lahko dodate več parametrov zatem opredeliti, kaj razredi želite biti pritrjeni na različne stvari tako da bi ga lahko pravilno slogu, in to je v bistvu, kako bi šel. Kakšno vprašanje? Super. Zahvaljujemo se vam za vaš čas in hvala za obisk. Ne bom dodati zelo veliko drugega, ampak 1 res hitro stvar je, da nimamo povezavo v obliki. Res neumno. Dodajmo - pravzaprav v pogledu, blog, indeks, dajva res hitro povezavo, da gre za novo stran, stran, kjer lahko vstavite novo delovno mesto. Bomo to storili. Kaj je lepo, se je ves ta skupina HTML pomožne funkcije ki različne stvari za vas, tako da boste že videli subjekte delovanje tukaj, imajo pa tudi funkcijo imenovano "sidro" ki lahko vnesete v blog / new in rekel: "Post nov blog." In da bi ustvarili to povezavo za vas, in to se mi zdi zelo nepomembno, da ne, ampak to je lepo, ker predvidevam, da ste se gibljejo vašo spletno stran od 1 domeno na drugega. In če si napisal sebe URL-jev, potem bi morali spremeniti vse URL. Ali pa ste ga premaknili od 1. podmapo v drugo podmapo. Ti bi morali zamenjati vse tiste, URL-jev sami, in to ni zabavno. Lahko uporabite to sidro tukaj, in lahko spremenite domeno ali podmape predpono v konfiguracijske datoteke enkrat, in potem se bo uporabljajo, da povsod, in to je spet odličen primer ne ponovi sebe, sušenje kodo ven. Kjerkoli ste sami ponavljanje, poskusite in odvod zraka v nekakšnem konfiguracijske datoteke ali drugačno funkcijo in imajo ročaj za vas. In zelo zadnja stvar, ki sem ti hotel pokazati bilo Predvidevam, vrnili smo se na to delovno mesto, in sem ga sestavljajo nekaj res dolgo esej, vendar sem pozabil vključiti svoj avtorja. Zdaj, ko sem kliknite "Pošlji Post," Pravkar sem izgubil vse. Ne! Res žalostno. Torej, kako se spoprijeti s tem? To je tisto, kar počnemo. Kaj moramo storiti, je tukaj pri teh vhodnih in besedilo območja funkcij, če vključujejo drugi parameter, znaša vrednost te druge parametra se bo tisto polje se bo najprej naseljena z. Kaj bi lahko storili, je v našem blogu upravljavca, smo lahko veže še eno spremenljivko. To "vrednote" klic morda. In se peljemo v post matriki, dobesedno. To pomeni, da če validacija ni uspela, Podaj mi post nizom, ki sem predložene od zadnjega zahtevo in na ta način sem lahko uporabite vrednosti iz mojega zadnjega predložitve za ponovno naseliti polja. Zdaj sem lahko naredil kaj takega vrednosti avtorja in vrednote telesu, in na ta način zdaj, če sem naredil nekaj naključno stvari in kliknite "Pošlji Post", potem pa ostane tam. Ampak bomo zašli v drugo težavo. Da deluje, ampak če grem na stran za zelo prvič, to se dogaja v nesreči, in da je zato, ker so prvič gremo na stran, ta post spremenljivka še ni bila določena. To je null. To ne obstaja. In kaj želimo povedati, je, če je ta ključ obstaja, nato vrne vrednost tega polja, ampak če ključ ne obstaja, potem vrne prazen niz. To je funkcionalnost želimo tukaj. Želimo, da preveri, če je ključ obstaja, preden poskušate dostopiti do array, in dovolj srečo, Kohana temveč nam daje tudi funkcijo pomočnika za to. Imajo vso to zbirko funkcij pod imenom ARR, okrajšava za niz, in imajo 1 funkcijo imenovano "dobili" in lahko preide v matriki, in lahko preide v imenu ključa. Potem v bistvu tisto, kar bo naredil, je, da bodo poskušali dobiti ta ključ, če pa ključ ne obstaja v matriki, nato pa se bo vrnil prazen, ali pa lahko določite tudi privzete, verjamem, kar je lepo. Zdaj, če delamo isto stvar enkrat, potem vidiš zdaj deluje prvič okoli, in spet, če vpišemo v nekaj naključno stvari in poskusite in predložiti, potem pa ostane tam. In mislim, da sem lahko tudi pokazati, kako dodati predlogo res hitro. Kaj lahko storimo prvi je, da smo lahko dodali nov pogled imenovano "template.php" v mapi Pogledi in kaj bom storiti, je, da bom izpisal nekaj, kar se imenuje "vsebina" ki se bo moja glavna vsebina. In morda na dnu grem dodati, recimo, avtorskih pravic. [Neslišno študent vprašanje] [Brandon Liu] Mogoče je to super osnovno predlogo želim uporabiti. Rad bi imel mapo z moje avtorske pravice na vsako posamezno stran, in zdaj, kaj bom naredil v mojem krmilnik Zdaj je namesto da bi rekel, "razširja Controller" Jaz bom rekel, "se razteza Controller_Template" in zdaj namesto da bi rekel, "telo odziva je enaka tem pogledu" Jaz bom rekel, "ta vsebina predloga je -" in mislim - pa sem dal enačaj? Sem pozabil. Ja, sem si mislil. In zdaj sem jih, da vsebina spremenljivka, da bo enak pogled. Jaz lahko naredim isto tukaj. In zdaj, če sem osvežiti, lahko vidite, je zdaj ta avtorskih pravic je bil dodan, in samo narediti nekaj naključno mesto, in potem še enkrat, bi morali videti, da je avtorska pravica na samem dnu strani. Great. To je vse, kar sem želel pokazati fantje. [Aplavz] Vsa vprašanja? [CS50.TV]