[Seminar] [Kohana: Kerge PHP Framework] [Brandon Liu] [Harvard University] [See on CS50.] [CS50.TV] Hi everyone. Minu nimi on Brandon. Ma olen noorem siin kolledži teed infotehnoloogia ja täna me räägime Kohana, mis on PHP web arendamise raames. Täna saab olema live kodeerimine seminar, nii et ma olen põhiliselt kavatse kulutada 5-10 minutit, selgitades, mida Kohana on ja siis ma sõna otseses mõttes läheb ehitada super lihtne blog teil on siin sõna otseses mõttes nullist. Me läheme alla koodi Kohana veebilehel, ja me ei kavatse alustada hoone blogis, ja loodetavasti see saab olema väga õpetlik, sest te näete, võib-olla äkki ma teen vigu, ja te näete mind sisse nõuda neilt, või näete minu mõttekäigust kui ma ehitada läbi selle blogi ja vahepeal võite ka saada tuttav raames ise. Loodetavasti see saab olema väga õpetlik harjutus. Esiteks, mida täpselt on raamistik? Kui oled olnud võttes CS50 siiani, siis pole tõesti töötas iga raamistikud veel, ja asi on selles. Sa oled ilmselt teinud 1 veebiarendust pset juba, ja ütleme, et te jätkuvalt ehitada veebilehed ja säilitada hoone veebilehed. Te hakkate märkama paar asja. Esimene asi, mida märkad on see, et sa oled ilmselt teevad sama asja ikka ja jälle kogu aeg, asjad puhastamiseks kasutaja andmeid sisestada, asjad korraldada faile teatud viisil. Teine asi, mida sa ilmselt ka teate, et teie kood võib hakata saama väga räpane, ja võite jätta see räpane ja lihtsalt on väga raske säilitada seda, või võite alustada struktureerida oma kood ja teha see modulaarne teatud viisil, et muuta see rohkem hooldatav. See on koht, kus web raamistike põhiliselt tulid sisse Need inimesed, kes olid ehitanud palju veebisaite, nad ütlesid, "Meil ei ole vaja uuesti teha seda iga kord, kui me ehitada veebilehel." "Miks me ei võiks lihtsalt teha pakett, mis teeb kõik need asjad teile iga kord, kui soovite ehitada koduleheküljel? " Ja nii, et kui sa teed uue veebilehe, sa lihtsalt keskenduma sellele, mida täpselt selle konkreetse veebilehel on. Sa ei pea kordama kõiki eri konfiguratsiooni ja eraldamise koode ja ümberkirjutamist kood et sa tihti teha, kui sa üritad veebilehed. Mõte on selles, et raamistik võimaldab teil kirjutada kõrgema taseme koodi ilma et peaks muretsema, madalama taseme üksikasju. Madalama taseme detail võib olla midagi sellist tegelevad puhastamine kasutaja andmeid sisestada. See on midagi, mida sa ei peaks tõesti muretsema. Sa peaksid keskenduma sellele, mida teie web jaotus on tegelikult umbes. See välistab palju trafaretset kood. On arhitektuuri oma projekti. Populaarseim oleks Model-View-Controller, mis ma lähen rääkima teine. Ja palju kordi nende raamistike kehastavad protseduuride kogum, eeskirjade ja heade tavade teil kasutada nii et kui sa vastu veebi raamistik teil on kirjutada oma koodi teatud viisil, ja see on üldiselt kokku lepitud põhimõtete kogum ühenduse poolt, mis on üldtunnustatud, et olla hea viis kirjalikult koodi. Ta teeb oma koodi rohkem hooldatav, kasutatavuse, nii edasi ja nii edasi. Ja lõpuks, mida ma tahan rõhutada, raamistikud versus raamatukogud on see mõte inversioon kontroll, ja asi on selles. Erinevus raamatukogu ja raamistik on, et raamatukogu sa oled ikka kirjalikult Põhiprogrammi ja sa oled omamoodi tuginevale raamatukogu ja kutsus teegi midagi teha. Erinevus raamatukogu ja raamistik on, et raamistik hakkab läbi kontrolli ja ta tugineb oma kood, nii et sa ei mõtle seda - see on põhjus, miks seda nimetatakse raamistik - raamistik annab selle raami ja struktuuri oma kood, ja te täidate augud, ja see muutub selgemaks teise kui sa näed mind hakkate kirjutama koodi konteksti raames. Sa näed, et ma olen täites lüngad, ja raamistik on selline kontrolliv kõik liigub tükki, ja ma pean panema tükid õiges kohas. Täna me ei kavatse rääkida Kohana, mis on üks paljudest PHP raamistikud. On web raamistike ja seal on need peaaegu iga keele, ja ma valin Kohana kuna Kohana on vaieldamatult ja üldtunnustatud lihtsamaid PHP raamistik kiirenemist. See on kõige kerge. On ka teisi ones out there, mis tulevad koos palju, palju rohkem funktsioone, kuid need kipuvad olema raske kiirenemist. Ja lõpuks, Kohana kasutab MVC arhitektuur. See on kerge piisavalt, et me saame sõna otseses mõttes ehitada projekti siinsamas ees oma silmad, ja sa saad päris palju jälgida mööda üsna kergesti. Mis on MVC arhitektuuri? Ta seisab Model-View-Controller, ja võib-olla, kui sa arvad, kood olete kirjutanud seni mõned veebi arengut psets võib teil olla võimalik näha osa sellest, kuid tavaliselt kui hakkate kirjalikult keerukama veebirakenduse, eristades kõnealuste 3 segmenti muutub üha ilmsemaks. I sätestatud MVC siin omamoodi nagu pinu ja tihti sa kuuled inimesed räägivad korstnad veebiarendust, ja see on illustreerida idee, et Iga kihi iga komponendi tõesti üritab suhelda ainult vahemikus 2 muid komponente. Keegi pöördub oma kodulehel klient või brauser. Nad suhelda oma programmi kaudu eesmärgiga kood. Vaata koodi suhtleb kontroller. Kontroller suhtleb mudel, ja mudeli suhtleb SQL andmebaasi. Ja ei ole hopping vahel kui sa kirjutad oma koodi korralikult. Mida need asjad? Mudel sisuliselt on tükk kood, mis tegeleb oma andmeid. Midagi, mis tegeleb oma andmebaasi, esemed, et teil salvestada, või allalaadimise need objektid andmebaasis et kõik on käideldud mudel. Äkki teil on objektid andmebaasis. Me luua mudel, millel on pistmist ametikohta, nii post võib olla atribuudid ta. Teil võib olla funktsioonid umbes ladustamiseks neid postitusi või allalaadimise postitust või filtreerides postitusi ja nii edasi ja nii edasi, ja see on kogu kood, mis on käitlemiseks mudel. Kontroller on omamoodi rakenduse loogikat, ja palju erinevaid asju võib minna rakenduse loogikat. Kui sa räägid, et erinevate API, , mis võib olla, kui olete tegelevad rakenduse loogikat. Kui sa üritad olla tuua andmeid mitmest eri mudelid ja on neid kombineerida kuidagi, et sageli võib käidelda kontroller. Näiteks, Facebook, kui te sõber keegi, siis võib-olla, et tegu, millega selle suhte võib teha kontroller. Ja lõpuks, vaade on kood, mis genereerib mida sa tegelikult näha. Palju kordi ma arvan CS50 psets nad ei soodusta te eraldi need 3 asja. Sa ilmselt on see suur, pikk faili kus tipus teete mõne SQL päringu ja võibolla teha mõned töötlemine on andmed, mida laaditakse andmebaasi ja siis on kõik oma HTML allosas. Ja võib juhtuda, et kui te luua rohkem ja rohkem lehekülge et sa lähed, et on natuke koodi kordamine ja ka asi on sinu faili saab tõesti suur ja pikk ja muutub kohmakas hallata. Põhjus, miks MVC on nii hästi pidada on mitmeid põhjuseid. Esimene asi, mida nimetatakse eraldamiseks muresid mis on idee, et kui teil on - ideaalis 1 tükk kood peaks tegema 1 asi ja seda teha väga hästi, ja te ei tohi ühendada tükid kood, mis teha erinevaid asju. Näiteks vaadata koodi ja mudeli kood, nad tõesti ei pea olema seotud. Nad ei pea olema samas faili, nii et kui saad, siis eraldage nad välja nii et see on lihtne hooldada. Teine asi on koodi taaskasutust. Sa võid leida ennast kirjalikult sama SQL päring või teed sarnaseid küsimusi, mida võiks ammutatava arvesse 1 funktsioon, ja see on idee mudeleid ja kontrollerid millel see eraldi funktsioon, et saab taaskasutada erinevates kohtades oma projekti. Ja lõpuks, mis on seotud kuivatamine oma kood, või mitte, korrates ennast, ei korda ennast. See on väga arusaadav arengut. Kui te ei, te ei taha korrata ennast, sest kui te kordate ennast,  see on palju kulukam hooldada. Kui te soovite muuta 1 asi, mida sa pead muutma seda kõikjal, ja mis põhjustab vigu ja see on kohutav. Olgu. Kõik küsimused siiani umbes Kohana üldse? Suur. Nüüd me ei kavatse sukelduda live kodeerimine istungil ja loodetavasti kõik läheb hästi. Ma põhimõtteliselt ehitada kodulehel üks minu kaugserverite ja nii saate teie ka vaata veebilehte ja tutvuda veebilehel ja ka keskkond on parem Seadistatud kui minu serveri masin, sest see töötab Linux asemel OS X. Me sõna otseses mõttes, et hakkan. KohanaFramework.org. Ma lähen alla koodi veebilehel. Ma lähen kopeerige link aadress, mine minu server, alla laadida, ja ma lähen, et eraldada see. [Student] Mis on suurim saate muuta teksti? [Brandon Liu] Kas see on parem? [Student] Kas see on teostatav? [Brandon Liu] Jah, see on hea. Ma allalaetud ZIP faili ja mahalaadimist, et arvesse kataloog nimega Kohana, ja me ümber, et CS50-Kohana, ja lähme sisse Lahe. Siin näed hunnik erinevaid faile. Enamus teist ei saa eirata - Me ei lähe läbi iga faili, mis on siin sest meie ajalised piirangud, aga üldiselt, kui installite Kohana, esimene asi, mida teha on sul minna kataloogist, ja sa põhimõtteliselt teha mõned keskkonnas teste ja puha veenduge, et teie keskkond on õigesti seadistatud sõitma Kohana ja veenduge, et kõik on korras. Näete enamik asju möödas, kuid üldiselt alati tekib see 1 probleem kus ta väidab, et mõned pole kirjutatav, ja see on, sest mõned load. Ma ei tea, kui palju te olete õppinud Failiõiguste CS50, aga kui sa veebi arengut, sa lähed, et tekib see küsimus palju. Ma lähen tegema seda kirjutatav ja ma arvan, et on ka - seal me läheme. Ok, nii et nüüd te näete kõik möödas, ja nüüd ta ütleb sulle, et ümber install faili. Ma lähen, et liikuda install.php fail installed.php, ja nüüd, kui ma värskendada, see annab mulle viga, ja see on koht, kus silumine on sisse See on koht, kus saab näha, mis tegelikult juhtub. Asi on selles, vaikimisi Kohana eeldab, et Teie projekt on juurkataloogi oma domeen, nii et see ootab sind olevat demo.brandonkliu.com. Me peame ütlema seda, et see on tegelikult hoopis alamkataloogi. See on alamkausta CS50 Kohana. Asi on selles, et see on valesti tõlgendanud CS50-Kohana kui midagi muud, mis ma seletan sulle teine. Aga ma peaks ütlema, et see on midagi, mis on ootuspärane. Mida me teeme, on me läheme sellesse kausta nimega bootstrap.php, mis on konfiguratsiooni kausta kus on palju erinevaid asju, on loodud. Ma avan, et üles. Siis võib-olla üks esimesi asju, mida ma teen, on vahetada ajavööndit. Ja siis vaatame. Ahaa! Siin. Seal on hunnik erinevaid konfiguratsiooni lood siin, aga see, mida ma otsin on see asi, mida nimetatakse baas URL, ja vaikimisi saan aru seatud Kohana, aga ma ei muuda seda, et CS50-Kohana, ja ma arvan, et tuleks parandada. Jah, väga. Vaikimisi näha, et see töötab, see ütleb: "Hello World". Kust see tuli? Kuidas me saame Hello World? Kui täpselt on kood, tegelikult kirjutas? Selleks, et mõista, et ma tutvustan seda kontseptsiooni nimetatakse suunamises. Päris palju kõik web raamistikud on mõiste nimega suunamises, mis on tükk tarkvara, mis kaardistab teatud URL teatud tükk koodi oma raamistik. Näiteks, kui teil on mõni link ja te lähete mõned URL nagu foo.com / blog / all siis mida raames kavatseb teha - või vähemalt see, mida Kohana kavatseb teha - on, et see saab leida klassi, mida nimetatakse kontroller blogi ja see läheb käivitada funktsioon nimega tegevus üldse. Ma tean, millest ma räägin klassi ja funktsioone, ja ma tean, et te pole kaetud klassid ja funktsioonid aastal CS50 veel, kuid nüüd, sa ei mõtle klasside lihtsalt funktsioonide rühma, viis rühmituse ülesandeid koos. See on tõesti kõik, mida vaja teada. Nüüd, kui me vaatame meie kataloogi struktuuri, sees taotluse kaust on teise kausta nimega klassides ja muud kaustad kutsutakse Controller ja mudel. Kui sa vaatad sees Controller kausta me näeme, et seal on fail nimega Tere tulemast, ja te näete, siin on klass nimega Controller Tere, ja seal on funktsioon nimega Action Index, ja mida ta teeb on see seab keha oma vastuses Hello World. See, kui kood on kirjutatud. Teine küsimus on, noh, ma ei lähe blah, blah, blah, / welcome / index. Kuidas ma sattusin? Noh, see on lihtsalt sellepärast, siin allosas meie bootstrap fail kui me seame meie liinidel näete, et nad panid mõned vaikimisi teile. Default kontroller on teretulnud. Vaiketegevuseks Index. Sellepärast, kui me paneme midagi seal see automaatselt läks Welcome kontroller ja indeks Action. Kõik mõtet nii palju? Nüüd saad teha rohkem kui lihtsalt minna Controller ja konkreetsed meetmed. Võite liigu parameetrid kontroller. Nii nagu näiteks Ma lähen lisada teise hagi selle töötleja näidata. Kutsume käesoleva meetme Echo, sest see läheb teile öelda mida iganes sa annad seda, ja nii ma põhimõtteliselt läheb haarata parameeter, mis toimub, mis saadetakse läbi mulle suunamises programmi ja nagu näete siin, see joon siin, näete, et See põhimõtteliselt tähendab, et olete kontroller, ja sul on /, ja teil on tegevus, ja sa pead teise /, ja mis saab olema parameetrid, ja kuna meil on see nimi ID nurksulgudes, mis tähendab, et me nimetades seda parameetrit ID. Hiljem minu kontroller kood, kui ma tahan, et haarata kinni selle parameetri Kas ma saan kasutada koodi kirjutasin, leida parameeter nimega ID. See on, mida ma tegin siin, ja ma lähen tagasi ja öelda, "Sa ütlesid, et". Ja nüüd, kui ma lähen oma veebilehel, Lähen cs50-kohana/welcome/echo/Helloooo-- oh, see on õige. Seal on 1 samm jätsin välja. See on osa elusate kodeeriv idee. Siin on 1 asi. Vaatame. Nii tavaliselt vaikimisi palju need veebirakendused teil lisada see index.php asi oma URL, sest mõte on index.php on omamoodi sisenemispunkti oma taotluse, kuid loomulikult mis on omamoodi tüütu on. Sa ei taha olla index.php ilmuvad URL, ja päris palju iga web raamistikku karbist on see index.php probleem, ja nii et sa pead võtma mõned meetmed, et oleks võimalik kõrvaldada seda. Ja nii sellisel juhul Mida me teeme, on me kasutada faili. htaccess, ja see on midagi, mis on omased Apache veebiserver, ja seda saab teha asju kirjutada URL ja ümbersuunamise URL ja nii edasi ja nii edasi, ja Kohana on kena piisavalt pakkuda malli. htaccess faili, mida saame kasutada. Nagu näete, seal on fail, seal nimetatakse example.htaccess, ja me kopeeri et. htaccess. Ma lähen, et avada seda ja seda muuta, ja põhimõtteliselt see hunnik erinevaid asju. Võti line võiksite pilk on siinsamas. Mõte on selles, et see loob reegel, mis ütleb, "Olgu, mida iganes sa kirjutad, nimedele index.php seda." Te näete, et. . * Tähistab midagi, sobib kõik, ja siis teine ​​osa on index.php / $ 0, ja $ 0 tähistab iganes sihib varem. Kas see on mõtet? Aga tõesti peamine asi, mida ma tahan muuta, on muuta see ümberkirjutamine baasi mis on URL baasi. See omamoodi eeldab kuhu töötades. Ma lähen lisada CS50 Kohana sellele ja nii nüüd kui ma eemaldada index.php, see peaks töötama, ja ma lähen, et lisada mõned numbrid näidata, et ta tõesti tegi tööd. Kõlab hästi. Tekkinud küsimusi? [Student] Kuidas ta teab, et teeb 123? Kas see on argument? Täpselt. Sa ei mõtle seda nagu argument. Aga imelik asi, aga see, et viis Kohana teeb seda on nad seda ei tee täpselt nagu argument. Sul on haarata seda niimoodi. Sul on haarata taotluse objekt ja küsida parameeter, mis on nime ID, ja see nimi ID pärineb et bootstrap fail et ma näitasin varem ja nimi ID Neil noolsulgudega, ja see, kuidas te rüütama need parameetrid. Lahe. Muid küsimusi? Nagu ma ütlesin, kontrollerid, nende hallata rakenduse loogikat, nii et on 1 Näiteks kui näete see on - see on väga lihtne, kuid see on ikka rakenduse loogikat, idee haarates parameeter ja luua uus string mis ütleb: "Sa ütlesid, blah," ja siis sülitab selle sulle tagasi. Ja üldiselt, mida teha, on teil luua erinevaid kontrollereid. Loote eraldi kontrollerid erinevate osade oma veebilehel. Täna me ei kavatse teha väga lihtne veebileht, ja see saab olema väga lihtne blog. Me teha uus kontroller lihtsalt postitusi blogis. Aga siis, kui ma ka kommentaare lisada blogi postitus, siis ma oleks ilmselt tahavad teha uus kontroller need kommentaarid. Kui ma tahtsin lisada kasutajaid, ma oleks ilmselt lisada uus kontroller neile kasutajatele, ja üldiselt, idee on, et kui sul on uus mudel, Uute andmete objekti, sa oled tegelevad, teil on ühe kontrolöri, et andmed objekt. Täna me alles läheb tööle 1 andmed objekti ja mis saab olema ametikohta, ja ka sa ei mõtle andmed objektide vastavad tabelid. Üldiselt iga tabeli vastab 1 tüüpi andmete objekti, nii post tabelis on 1 postitus mudel, mis on 1 postitus kontroller, mis vastab, ja sama märkusi kasutajate puhul sama, ja nii edasi ja nii edasi. Ja see on üldine rusikareegel. Seal saab olla erijuhtudel, kui sa võib erineda, kuid 90% ajast, mis on see, mida sa lähed tegema, ja ma näitan teile, et see, mida me teeme täna. 1 rohkem mõiste, enne kui me sukelduda tagasi kood, Selle idee eesmärk relatsiooniline kaardistamine. Te olete juba teinud veebiarendust pset, ja sa oled näinud, et teete SQL päringu, ja mis see naaseb olete rida. Sa saad need read, ja sa indeks neid mõne nime, veeru nimi ja tabeli ja see on, kuidas sa tööd teha, ja see võib olla veidi tülikas. Kuid lisaks sellele, kui teil on suhted oma andmebaasi, nagu näiteks siis, kui mul on kommentaare ja postitusi, siis võib-olla ma tahan haarata vanema ametikohale kommentaari. Kui ma kasutan ainult rida SQL, siis kõik, mida ma saan on ID emaettevõtte post ja mitte tegeliku post ise. Aga kui me kodeerimine, mida me tegelikult tahame, et tegelikult haarata  vanem postitada ennast mõnikord. Mis objekti relatsiooniline kaardistamise teeb, on kulub tulemused andmebaasi päringu ja paneb selle objekti jaoks, mis on palju parem töötada kui tavaline massiivid ja ridu. Näiteks nüüd, kui mul on kommentaar ehk ja ma tahan, et haarata oma ema pärast, ja ma võib-olla kommenteerida nool postiga siis tegelikult mulle post objekt vastab tegelikele vanema ametikohale, mitte ainult mõned ID, mida ma muidu kasutada ja teha uue SQL päring haarata postiga mis on tülikas ja mittevajalik. Ja lisaks, kaardistades kõik need andmed ridade objektid võite ka lisada rohkem funktsioone objektide Nii näiteks, ma rääkisin, kuidas klassid on sisuliselt rühmituste funktsioone. Sa ei mõtle seda nii. Näiteks, võib-olla on mul postitus objekt ja äkki ma tahaks olla mingisugune funktsioon sellele lisatud et põhimõtteliselt ütleb mulle, oli see hiljuti postitatud? Kas see oli postitatud viimase nädala jooksul, on õige või vale? Ja see on funktsioon võin lisada peale, et objekt, ja see on tõesti mugav on see samas kohas, ja seal on mitmeid erinevaid funktsioone saab luua need objektid, ja see on tore, et oleks võimalik kinnitada selle klassi objektile, samas kui sa just read tulevad oma andmebaasi, siis ei saa tõesti kinnitada mistahes funktsionaalsust et. See on sõna otseses mõttes lihtsalt andmeid. Kõik küsimused, mis üldse? ORMS on väga levinud veebi arengut, ja seal on palju eri liiki ORMS, ja Kohana on oma ORM. See on väga lihtne, kuid sa saad aimu, milline see välja näeb. Loome eeskujuks meie blogi postitusi, ja esimene asi, mida me kindlasti peame tegema, on luua tegelik tabel meie andmebaasi tegelikult salvestada oma andmed neile ametikohtadele. Esimene asi, mida ma lähen tegema, on minna phpMyAdmin. Olete te kasutada phpMyAdmin enne? Okei, awesome, et te juba teate, mis see on, ja ma lähen, et luua uus tabel nimega Kohana postitused, ja see saab olema väga lihtne. Ma pean uuesti sisse logid Kõik me teeme täna on autor ja keha lihtsalt hoida lihtsa. Ma lähen, et luua selles tabelis, ja nüüd me lihtsalt laua esindavad meie postitusi 2 valdkondades meie autor ja meie keha. Teine asi, mida ma lähen tegema, on praegu seadistada minu veebirakenduse et ta teab, kuidas ühendada andmebaas ja see omakorda on midagi, mida sa pead tegema kõik veebirakendusi. Sa pead ütlema seda kasutajanime ja parooli ja nimi andmebaasi ja nii edasi ja nii edasi et aru saada, kuidas tegelikult ühendada oma andmebaasi. In Kohana, meil on midagi, mida nimetatakse andmebaasi moodul, ja konfiguratsiooni kausta meil see kaust nimega andmebaas ja nagu näete, on kamp seaded sul määrata siin öelda seda, mis on kasutaja nimi ja parool andmebaasi, et ma saaks tegelikult ühendada see. Ja kuna ma ei taha, et te tegelikult teadma kasutajanime ja parooli oma andmebaasi, Mul on fail, kus ma juba pani kõik, ja ma lähen kopeeri ja kleebi see üle. Lahe. Okei. Ma arvan, et kõik konfiguratsiooni ma pean tegema, aga vaatame. Me töötame selles, ja kui midagi kokku jookseb, siis me seda parandada. Nüüd, mida ma lähen tegema, on ma lähen luua uue kontroller. Või tegelikult, vabandust. Esiteks pean ma luua uue mudeli. Ma luua uue mudeli nimega Post.php, ja see, mida me teeme, on me nimetame seda klassi Model_Post. Saaksin süntaksi esiletõstmine, ja nii kui ma ütlen "laieneb ORM," mis on põhimõtteliselt mõned rohkem objektorienteeritud programmeerimine, mis kahjuks te pole õppinud CS50 veel kuid see on üsna lihtne kiirenemist. See annab mulle kõik see lisafunktsionaalsus mis tuleb, see ORM paketi ja nii ma saan hunnik lisafunktsioone ja puha tasuta mis sa näed natuke teine. Just praegu tegelikult kõik, mida ma vaja teha, on luua selle klassi. Ma ei pea isegi mingit funktsiooni või midagi, aga ma olen loodud klass, mis tähistab tabelis ja kuna ma olen laiendanud ORM klass, Ma saan hunnik asju tasuta, nii et nüüd teil ei ole midagi seadistada rohkem üles. Ja nüüd, mida ma lähen tegema, on ma lähen luua uus regulaator, mis ma nimetada blog.php, ja ma lähen kopeerige Tere kontroller nii et ma ei pea uuesti sisestama mõned asjad, ja nüüd ma pean ümber nimetada. Nüüd, mida ma lähen tegema, et test veendumaks, et kõik töötab välja, Ma lähen haarata esimene postitus minu andmebaas ja printida keha post ekraanil. Selleks, et see, mida ma lähen tegema, esimene on ma lähen salvestada postitusi muutuja nii et mida me teeme, on - aastal Kohana, mida te teete on haarata post objekt see on selline tülikas, kuid sa pead tegema seda asja nimetatakse ORM :: tehas ja siis liigu nime mudel, mida soovite, ja ta naaseb ORM objekt, mis esindab seda mudelit. Ja siis, nagu ma ütlesin, kui me laiendada ORM objekt saame kõik need meetodid on tasuta, nii et näiteks saame selle uue funktsiooni nimega "kõik" mis automaatselt tagastab iga postitus andmebaasis mis on üsna mugav. Ja nüüd kehas ma lähen tagasi esimene postitus ja tagasi oma keha. Ja muidugi, mul on vaja luua ametikoht, niiet lisada uus postitus. Ma ütlen, "Brandon, minu kõige esimene postitus." Lahe. Ja nüüd me läheme blogid ja kui kõik toimib hästi - oh, see on mingi muu loll faili loata asi uuesti. Hoia 1 sekund. See on selline absurd. Niimoodi. Okei. Ma parandasin selle loa probleem. Ta püüdis luua mõned failid ja mõned samamoodi, ja load jällegi ei õigesti seadistatud, et ma tegin seda nii need failid olid kirjutatav ja käivitatava nii et see võiks tegelikult sisse asju. Nüüd annab mulle üks erand, öeldes: "klass ORM ei leitud", ja see on, sest ma unustasin veel ühe sammu. See on liiga halb. In bootstrap kausta fail on need moodulid siin kus saab valida kas lubada või keelata. Need on hunnik erinevaid funktsioone, mida saate valida, kas kasutada jooksul Kohana, mis on omamoodi tore. Näiteks neil autentimise moodul , mida saab kasutada autentimiseks kasutajad. Neil on caching moodul, kui soovite rakendada mingisugune vahemällu kolp teha taotlus tööd kiiremini ja tühi-tähi. Meil on vaja, et võimaldada andmebaasi ja ORM mooduli sest nagu ma ütlesin, me kasutame andmebaasi ilmselt ja me peame ka võimaldada ORM mooduli sest me tahaks olla ekstra funktsionaalsust, mis on tore on. Kõik ma pean tegema, on uncomment need 2 rida, ja nüüd, kui ma värskendada, ta andis mulle teise vea. Ta ütleb: "Klass Model_Post ei leitud." Nüüd on hea probleem on. Vaatame. Tee avalik. Ei Oota. Oh, kallis. Ma ei tea, miks see ei ole võimalik leida, et. See on tõesti kummaline. Mul on selle klassi siinsamas. Ma arvan, et võib-olla - oh. Ma olen nii loll. Ma unustasin lisada PHP tag. Sellepärast. Nüüd on mul tagasi võtta, et 1 muutus just tegin. Ok. Niimoodi. See oli tõesti rumal. Mul ei olnud ava PHP tag. Aga nagu näete, nüüd see töötab korralikult, eks? Meil on 1 postitus. Me haarasid esimene postitus, ja nüüd välja printida oma keha. Suur. Fantastiline. Küsimusi nii palju? Ei? Kas on küsimusi? Okei, nii et me lihtsalt loodud post mudel, väga lihtne, ja me lisada mõned funktsioonid hiljem. Me võime lisada kinnituste ja filtreerimist. Kinnitused on üks neist asjadest, et raamistike lahendada sinu jaoks tõesti hästi, ja ma ei usu, et teil oli seda teha oma CS50 pset, aga kui sa veebi arengut oma lõpliku projekti sa oled tõenäoliselt läheb taha teha mingisugune valideerimine nagu millel ei ole tühi kasutajanimed, võibolla võttes salasõna vähemalt põhjalikkusega, asjad niimoodi. Ja see on tõesti ebamugav rakendada neid asju ise, ja päris palju iga web raamistikku see sinu jaoks ja võimaldab teil teha seda väga puhas viis. Ja mudel, kus teil tavaliselt väljendada neid kontrolli eeskirju, sest see on kinnitamise kas mudel on kehtiv või mitte. Aga nüüd, me ei kavatse panna, et alles hiljem, ja nüüd me ei kavatse tööd teine ​​osa, ja me ei kavatse proovida ja teha uus vaade kus on loetletud kõik postitused. Etappe tegemist uue hagi, milles loetletakse kõik postitused on haarata nimekirja kõigist postitustest ja siis muuta nimekirja kõigist postitustest läbi vaadata. Siinsamas, õnneks piisavalt, me juba haaras kõik postitused Kasutades seda esimest rida, kõik funktsioon, ja nüüd me teeme on seni Olen otse millega keha reageerimine sooritades string, kuid nüüd ma tahan kasutada selleks, ja vahe vaade ja teen seda on eesmärgiga saan kena, suur HTML template, ja mida ma saan teha, on anda kellelegi teatud muutujate ja siis on seisukohal automaatselt asustada oma mall kasutades neid muutujaid. Mida ma teen on ma luua uus vaade, ja ma nimetaks silmas midagi "blog / index" ja ma lähen põhimõtteliselt siduda see - oh, mida ma kirjalikult? Mu aju on kuskil mujal. Ma lähen siduda postitusi muutuja arvates nii et kuidas vaade on juurdepääs postitus muutuja. Ja nüüd ma pean luua seda seisukohta, nii siin me oleme seda kausta nimega "Views" ja esimene, ma lähen luua uue kausta, et nn "blogi". See on kena. Nii et meil on kena hierarhia meie seisukohti. Ja siis ma lähen luua uue faili sinna nimega "index.php". Lahe. Tegelikult olgem neid nii siin. Making vaade fail on ilmselt kõige lihtsam osa kõik see, ja need on ilmselt asjad, mida sa oled juba tuttav. Me teeme midagi tõeliselt lihtne, alustada, öeldes: "Mu nimekiri blogi postitusi." Siis me ei lähe läbi, ja me võime kinnitada, läbi postitust massiiv, haarata iga post ja öelda midagi sellist - võibolla lisada rida ja siis välja printida autori ja keha. Seda mõtet nii palju? Ja vaatame, kas see toimib. Midagi ei juhtunud. Ma ei tea, miks. Oh, mul jäi 1 samm. Väga rumal minust. Olen loonud vaadata, kuid ma ei pannud Vaata vastust nii et sa pead tegema 1 asi veel. Sa pead tegema "see vastus keha" ja määra see vaade. Niimoodi. Meil on rubriik, ja siis meil on post, ja lihtsalt peksab, olgem lisada teine ​​postitus nii et me saame näha nimekirja. Ja lisada need 2 ametikohta, ja nüüd, kui ma värskenda lehekülge, me näeme kõiki neid postitusi siin. Kas see on mõtet nii palju? Jah, küsimus? Oh, okei. Nagu näete, oleme suutnud eraldada kõik need koodid välja eri osadeks ja siis näete et see on kõige selge vaade kood. See fail siin, mis tähistab arvates ta hoolib ainult esindavad andmed, andmete kuvamiseks. Läheb edasi mingi info ja kõik see on lihtsalt näidata seda sulle. Kõigil muudel osad oma kood, et sa ei pea muretsema mis tahes selle, ja samamoodi oma seisukohta kood ei pea muretsema midagi kuidas juurdepääs andmebaasi ja nii edasi ja nii edasi, mis on tõesti hea ja teeb oma koodi palju hooldatav. Nagu ma ütlesin, vaated, nad dünaamiline selles see on 1 faili, kuid see tooks kaasa erinevad seisukohad põhinevad muutujad sa tegelikult läbima, ja lisaks on olemas palju erinevaid helper funktsioone , mida saab kasutada, et aidata teil kirjutada koodi kiiremini, kus ma näitan sulle lihtsalt teine. Jah. [Student] So $ 0 on kontroller, eks? See teine ​​asi. Küsimus on on 0 $ controller? 0 $ on muutuja lõin siin. Olen loonud eesmärgiga esimene. Ma määras selle teatud muutuja. Siis võttis ta arvesse seda funktsiooni, seadke see keha reageerimine. Kas see on mõtet? [Student] Nii on vaade :: tehas on seisukohal, nagu klassi või raamatukogu [kuuldamatu] tehase funktsioon? Küsimus on vaade :: tehase funktsioon, ja põhimõtteliselt on see veel objektorienteeritud programmeerimine sisuliselt. View vaade klassi, ja see on meetod, mida nimetatakse "Factory" ja see on viis haarata objekti, mis on nimega "blog / index." Ja see on veel objektorienteeritud programmeerimise värk et ma ei lähe siin liiga palju. Nüüd ilmselt tahame luua uusi ametikohti, aga me ei tahtnud seda teha läbi andmebaasi, Nii et me luua uusi meetmeid, et luua uus ametikoht, ja seal on palju asju me peame tegema. Esimene asi, mida me teeme - Räägime need asjad ükshaaval. Esimene asi, mida me teeme on meil luua vormi sisseviimiseks uus postitus, aga ma olen ka kavatse lisada uus tegevus esiteks nii lisades uusi meetmeid on lihtsalt nii lihtne, nagu lisada uus funktsioon oma kontroller, ja nüüd ma teen midagi väga lihtne, lihtsalt haarata see vaade ja pärast seda, lihtsalt näidata seda teile. Ja siis nüüd ma lähen luua uue vaate faili ja ma lähen alustada kirjalikult mõned asjad. Mis on ilus umbes Kohana on see, et nad pakuvad palju erinevaid helper funktsioone teile kirjutada vaade kood kergemini ja 1 neist helper funktsioone või abimees moodulid on ümber kirjutamise vorme. Kirjutamiseks vormid, ma tõesti ei pea otse kirjutada mistahes HTML ise. Te olete kirjutanud HTML kujul. Sa tead, kuidas see võib olla tõesti valus ja tülikas kirjutada kujul. See ei ole lõbus, siis õnneks saame põhimõtteliselt kirjutada kujul kasutades Kohana on moodustavad helper funktsioone seda teha meie jaoks. Me põhimõtteliselt on väljad iga asi mis meil on, nii üks autoreid ja ühe vahel. Me läheme olema silt, ja me ei kavatse on sisend. Ja lõpuks, me ei kavatse olla esitamist. Ja nagu näete, see on palju puhtam kirjutada kui kõik, et räpane HTML, mis on omamoodi tore. Tõsi, on ka teisi web raamistikku, mis on see isegi puhtam, kui et kuid vähemalt on see parem kui kirjalikult HTML ise. Awesome, nii et see on see, mida sa näed. See on selline räpane, nii et ma lähen lisada line break seal teha, et vaadata veidi kenamaks. Noh, muidugi, see ikka tundub tõesti, tõesti halb, kuid me lihtsalt keskendunud funktsionaalsusele nüüd ja mitte esteetika. Pole aega teha kõike. Ja nagu näete, nüüd on meil super põhivormi, mis on omamoodi tore. See kood ütleksin on puhtam kui üritan kirjutada HTML-vormi ise, nii see on tore. Mis edasi? Nüüd peame tegema asju koos tegutsemist. Tavaliselt, kui sa kirjutad HTML vormid teil on öelda seda, kus see saab esitada vormi. Vaikimisi kõige web raamistike Ta väidab, et täpselt sama URL, nii et asi on selles, Kui saadate GET päringu / blog / uus, siis näidatakse teile vormi, aga kui sa saata postiga taotluse / blog / uus andmetega, see peaks tegelikult proovite salvestada et postitus ja midagi teha. Mida me teeme on põhimõtteliselt kõik me peame tegema, et kontrollida, kas see postitus taotluse või GET taotluse on vaadata, millised on postitus muutujad saate. Ja kui pärast muutuja on määratud, siis me läheme, et proovida ja luua uus ametikoht. Jällegi, me lihtsalt seda, ja mis loob uue postituse ja me sõna otseses mõttes läheb seada oma valdkondades nagu see, ja siis me läheme, salvestage see. Ja siis ma lähen ümber esilehele, et nad saaksid näha oma ametikohtade loetelu uuesti. Proovime seda. Ma ütlen, "Brandon" ja siis esitada posti teel, ja kui kõik hästi läheb, nagu näete, see suunatakse mind esilehele, ja kui ma kerige meil äsja sisestatud postitus. Jee! Jah, küsimus. [Student] Mis siis, kui oli sisenenud täpselt sama asi varem sisestatud? Kas veenduge, sa ei ole dubleerida Samal esitamine? Ole default, ei, sest vaikimisi - Vabandust, küsimus on, kui sisestate täpselt sama andmete kujul ja väidavad, et on see võimaldab teil sisestada eksemplaris objekt topeltkirje sisuliselt? Just nüüd, jah, see võimaldab teil seda teha, sest andmebaasid on täiesti kehtiv on täiesti duplikaatridu, aga kui see on mure, siis saad lisada kinnituste, näiteks veenduda, et kui see on täpselt sama, midagi, mis on juba olemas, siis öelda, et see on vale objekt ja siis saate isegi määrata oma veateate ja ütlevad: "Vale, sest see on juba olemas" või midagi sellist. Aga sel juhul, ma võiks lihtsalt luua midagi eksemplaris. Nüüd proovime ja lisada mõned kinnituste. Probleemiks on see just nüüd on, et Võiksin sõnalt esitada täiesti tühi postitus. Ma ei klõpsa seda nuppu kohe, ja seal me läheme. Sa ei saa tõesti näha, kuid see ekstra joont siin näitab, et ma sõna otseses mõttes on uus ametikoht. See lihtsalt on tühi autor ja tühi keha, ja me ei taha, et inimesed saaksid seda teha. See on koht, kus kinnitamise on sisse Ma ei saa minna minu mudel objekt, ja nüüd ma saan lisada uut funktsiooni, mis määrab mida valideerimisreeglite ma peaks lisama selle mudeli veenduda, et see on kehtiv või täpsustada, mida see tähendab, et kehtiv post? Ja ma tahan öelda, et see on ainus kehtiv post kui autor ja keha ei ole tühi, ja see on, kuidas sa seda Kohana. Loote uue funktsiooni nimega "Reeglid" ja siis sa põhimõtteliselt tagasi assotsiatiivne massiiv mis määratleb kinnitamise eeskirjad seda objekti. Me läheme tagasi massiivi ja siis mida me teeme on öelda "autor," see läheb massiivi mis läheb teise massiivi nimetatakse "ei ole tühi." Ja siis ma lähen ütlen "keha." Okei, ja süntaks see ja struktuur selle võib tunduda natuke kohmakas ja veidi keeruline. Kui sa loed dokumendid, see on üsna lihtne välja nuputada, Aga sisuliselt on see, mida sa pead tegema, et täpsustada mõned kontrolli eeskirju, ja seal on palju erinevaid reegleid et Kohana teile tasuta, nagu võite lisada eeskirjad öelda see peab olema vähemalt selle pikkuse. Võib-olla tuleb see numbriline. Võib-olla tuleb see tähtnumbriline. Võibolla see on äärmisel pikkust, nii edasi ja nii edasi. Seal on palju erinevaid reegleid, mis Kohana annab teile, ja võid minna oma veebilehel, vaadata dokumentatsiooni, ja näed kõiki erinevaid asju, mida saab teha. Aga see on kõik, mida ma pean tegema, ja nüüd vaatame, mis juhtub kui ma esitada tühi postitus. Mis juhtub? Oh, ei, ma saan veateate. Ma saan valideerimise erand. Noh, see on hea. Ta ütles mulle, et mu mudel on kehtetu, aga ma ei taha, et näidata, välja arvatud minu kasutajad, kui nad püüavad esitada midagi vale, eks? Ma tahan anda neile mingi sõbralikumaks veateade kui midagi läheb valesti. Mida me teeme, on me wrap kõike proovida saak loop. Tegelikult ma arvan, et see on ka midagi, mida sa ei ole õppinud veel aastal CS50, sest C programmeerimiskeelt C, ei ole erandeid, kuid peaaegu iga muu keel on erandeid, nii tõesti lühidalt Erandiks on midagi, mis on tükk koodi saab viska välja arvatud siis, kui midagi läheb valesti, kuid siis võib-olla mõned teised tükk kood kõrgemal ei saagi, et erand ja sellega midagi teha. Näiteks sel juhul, tükk kood, mis üritab päästa mudeli see kinnitab mudel, ja kui ta ütleb: "Okei, see mudel on kehtetu" see läheb visata erand, ja see on omamoodi võrdväärne C võite tagasi -1 või midagi sellist. Ja siis minu jaoks on see funktsioon, minu kood kõrgemal tasandil, võin proovida ja püüda seda erandit ja põhimõtteliselt öelda: "Okei, kui ma saagi, välja arvatud, mida ma teen?" Või ma ei soovi, ei saagi, et erand ja las keegi kõrgemal saagi erand või kui keegi saagi seda, siis kogu programm jookseb ja ütleb: "Midagi läks valesti, ja ma ei saanud sellega hakkama." Aga mida me teeme, on mässida tükk koodi proovida plokk, ja siis ka lisada midagi, mida nimetatakse saagi plokk, mis on omamoodi kood, mis püüdke erandeid, mis võivad tekkida. Ja kui ma saagi seda konkreetset erandit või kehtetuks, välja arvatud, siis see, mida ma lähen tegema, on Ma panen vead - ma arvan, et see, kuidas ma seda teen - ja ma panen vigu mõnele asjale. Ja siis see, mida ma lähen tegema, on see, kui see tabab see erand, ta ei kavatse suunata, ja kui see ei suunata, see läheb välja tulema, kui blogi ja tabas selle blogi / uus, mis tahad mida ma tahan teha. Kui on viga, siis ma tahan minna tagasi vormi ja näidata neid vigu. Nüüd, mida ma tahan teha, on Ma tahan läbida neid vigu seisukohale. Okei, ma arvan, et ma pean silmas siin, ja põhimõtteliselt ma tahan, et kuvada need vead, kui need on olemas. Enne kui ma kirjutada HTML eest, ma lähen tõesti kiiresti näidata, mida selle struktuur vigu muutuja Paistab, ja see on hea tava üldiselt. Palju kordi sa saad midagi tagasi teatud meetod, mõned funktsiooni web raamistikku, ja sa ei tea, mida muutuja välja näeb, nii et sa ei tea, kuidas sellega tegeleda. Ma lähen kasutada print r meetod põhiliselt printida. Ja nagu näete, see ütleb mulle, et see on assotsieerunud massiiv, ja sul on võti, autor, osutab see string, autor ei tohi olla tühi ja teine ​​võti, keha, punkti teise string, keha ei tohi olla tühi. Ma olen nagu, okei, lahe. Siis ma saan kinnitada, läbi massiivi ja printida iga sõnum. See on põhimõtteliselt nagu assotsiatiivne massiiv hunnik sõnumeid. Mida ma teen, on "kui vigu," ja ma lähen Tavalise nimekirja loomiseks, ja ma lähen itereerima läbi kõik vead. Ja see, ja nüüd ma lähen proovi saata see uuesti ja vaatame, mis me saame. Nüüd saame seda kena vigade nimekirja, ja see on ikka päris kole, kuid see ilmselt võimalik vormindatud vaadata kena, kuid põhiidee on ainult paar rida koodi, suutsime kinnitada meie mudel, veenduge, et teatud valdkondades ei olnud tühjad, ja kui midagi läks valesti, siis tagasi mingi veateate Ma võiks siis esitada kasutajale tagasi. Samuti saate kohandada oma valideerimine nii et saate tegelikult on veateade mis on konkreetselt teie taotluse või midagi sellist. Kõik, mis on üldiselt kohandatav. Kahjuks meil hakkab aeg otsa saama, nii et ma lähen on lõigata live kodeerimine istungil siin. Seal on hunnik muid funktsioone, mis ma tahan näidata teile Käesolevas näites. Näiteks võite lisada malle saidile et äkki on mingi HTML-koodi, mida soovite rakendada et iga lehekülje saidile, ja selle asemel, et kleepida, et igas ühes vaates faili pead, mis ilmselt oleks halb tava, saab põhimõtteliselt määratleda need mallid, ja siis oma kontroller öelda: "Okei, ma kasutan seda malli." "Kas kõik mu vaated seda malli kasutada." Ja viimane asi, mida ma tahan näidata teile samuti et meil ei ole aega, on piiriülese saidi skriptimine ja põhimõtteliselt ma arvan, et te olete ilmselt näinud CS50 - Ma arvan, et David Malan ilmselt rääkis, kuidas saab tavaliselt süstida JavaScript kood - olete sellest rääkinud? Võib-olla? Võib-olla mitte? Aga palju kordi võite süstida pahatahtlik JavaScript koodi kellegi andmebaas ning kui nad ei pääse, et õigesti, siis, kui tegemist on, et andmed tagasi kasutaja siis võib joosta mingi juhuslik JavaScript koodi sa ei taha juhtuda, ja ma läksin näitama, kuidas sa seda tegid jooksul Kohana. See on tegelikult tõesti lihtne. Ma võiksin seda teha just nüüd on 2 sekundit sõnalt. Kõik, mida pead tegema, on põhimõtteliselt wrap neid asju Selles asi nimega HTML üksused. Ja et automaatselt pääseda kõik märgid õigesti ja veenduge, et sa ei saa seda probleemi lahendada. [Student] Sa kirjutatud esimene test valesti. [Brandon Liu] Oh, oops. Olgu, see on kõik, mis mul oli, et jagada teiega täna. Need slaidid saab olema postitatud, kuid need on tavaliselt vaid vahendeid sa peaksid tõesti vaja alustada Kohana. Võite minna veebilehel. Neil on kasutusjuhend, ja neil on ka API explorer. Me saame uurida kõiki erinevaid funktsioone ja helper funktsioone nad on teile. Nad on üldiselt piisavalt teavet veebilehel , mida saab kasutada, et alustada ja hakkan minema Kohana. Seal ei ole nii palju õpetused, ma arvan, sest Kohana, väljaspool mis neil kodulehel siin, nii et see on ilmselt parim valik. Aga kui sa tahad minna koos web raamistik ja sa ei taha olla kiirenemist uut keelt, ja sa tahad midagi, mis on suhteliselt kerge ja on lihtne õppimiskõver Tahaksin kindlasti soovitada Kohana. See on ilmselt parim pakkumine selle eest. Naljakas, aga see, kui olime kasutades Ruby on Rails, oleksime korratud mida tegime ja ilmselt rohkem alla 3 minuti. No nali, kuid õppe Ruby on Rails võtab palju kauem kui see võtaks õppida Kohana. See on põhimõtteliselt oma valik, mida soovite valida, et õppida, aga kui sa tahad saada ja töötab kiiresti, Kohana on kindlasti väga hea valik. Kõik viimase küsimusi, enne kui me lõpuks? Jah. [Student] Kuidas me integreerida see aastal CSS raamistikku nagu sa kasutasid kui sa juhendades? Küsimus on selles, kuidas me integreerida et koos CSS raamistik? Mida me ilmselt teha, on meil ilmselt sisaldama uus kaust, kuhu me pane kõiki oma CSS faili, ja siis me ka lisada uue malli. Malli me hulka kuuluvad CSS failid veenduge, et nad on viidatud igal ühel leheküljel, ja siis, kui sa tegelikult kirjutad HTML, sa lihtsalt lisada asjakohane klasside ja tühi-tähi, ja näiteks, kui te kasutate midagi vorm abistaja funktsiooni, võite lisada rohkem parameetreid pärast täpsustada, mis liiki soovite siduda erinevaid asju et nad saaksid stiil korralikult, ja see on põhiliselt, kuidas teil läheb. Kõik muud küsimused? Lahe. Tänan teid teie aja eest, ja tänan teid, et tulite. Ma ei kavatse lisada väga palju muud, vaid 1 tõeliselt kiire asi on meil ei ole link vormi. Tõesti loll. Lisame - tegelikult vaadata, blogi, indeks, olgem tõesti kiiresti lisada link, mis läheb uue lehekülje, lehele, kus me saame lisada uus postitus. Me teeme seda. Mis on tore on on kogu rühma HTML helper funktsioone mis teha erinevaid asju, nii et sul juba nägin üksuste toimi siin, kuid neil on ka funktsioon nimega "ankur" kuhu saab kirjutada blogi / uus ja ütlevad: "Post uue blogi." Ja see tekitaks see link teile, ja see tundub tõesti triviaalne teha, aga see on tore, sest arvan, et te olete liigub oma kodulehel alates 1. domeen teise. Ja kui sa lihtsalt kirjutas URL ise, siis oleks muuta kõik URL-id. Või äkki kolis ta alates 1. alamkataloogi teise alamkataloogi. Sa ei pea muutma kõik need URL-ise, ja see ei ole lõbus. Võite kasutada seda ankur siin, ja saab muuta domeeni või alamkausta eesliide konfiguratsioonifailis kord, ja siis rakendab seda kõikjal, ja see on jällegi Hea näide ei korda ennast, kuivatamine oma koodi välja. Kus sa oled, korrates ise proovida ja väljavõtte mingisugune konfiguratsioonifaili või erinev funktsioon ja on seda käsitleda, et teile. Ja kõige viimane asi, mida ma tahtsin teile näidata, oli arvan, et me oleme tagasi alguses postitus, ja ma olin koosneb mõned väga pikk essee, aga ma unustasin lisada minu autor. Nüüd, kui ma vajuta "Submit Post" Ma kaotasin kõik. Ei! Tõesti kurb. Niisiis, kuidas sa tegeleda sellega? See on see, mida me teeme. Mis me teeme, on siin nende panuse ja teksti ala funktsioonid kui arvestada ka teine ​​parameeter, siis selle väärtus, teine ​​parameeter saab olema see, mis valdkonnas läheb esialgu asustatud. Mida me teha saame on meie blogi kontroller, võiksime siduda teise muutuja. Nimetagem seda "väärtused" võibolla. Ja liigu post massiiv, sõna otseses mõttes. See tähendab, et kui valideerimine ebaõnnestus andke mulle post massiivi esitasin viimase nõudmisel ja nii ma saan kasutada väärtused minu viimane esitamine repopulate väljad. Nüüd ma saan teha midagi väärtused autor ja väärtustab keha, ja nii nüüd kui ma mõne juhusliku kraami ja vajuta "Submit Post", siis ta jääb sinna. Aga me ei kavatse joosta teise probleem. See toimib, kuid kui ma lähen lehele esimest korda, see läheb krahhi, ja see on, sest esimest korda me minna lehele, postitus muutuja ei ole veel määratletud. See on null. Seda pole olemas. Ja mida me tahame öelda, on see, kui see võti on olemas, siis tagasi väärtuse selles array, kuid kui võti ei ole olemas, siis tagastab tühja stringi. See on funktsionaalsus, mida me tahame siin. Me tahame, et kontrollida, kui võti on olemas, enne kui proovite juurdepääsu massiivi ja õnneks piisavalt, Kohana annab meile abistaja funktsiooni eest. Nad on kogu see komplekt funktsioone nime all ARR, lühike massiiv, ja neil on 1 funktsioon nimega "saada" ja saab edasi massiivi, ja te ei liigu nime võti. Siis põhiliselt, mida ta teeb on see püüab saada, et võti, kuid kui võti ei eksisteeri massiivi siis naaseb tühi, või saame ka määrata vaikimisi, ma usun, mis on tore. Nüüd, kui me teeme sama asja uuesti, siis näed nüüd see töötab esimest korda ümber, ja uuesti, kui me kirjuta mingi suvaline värk ja proovida ja esitab siis ta jääb sinna. Ja ma arvan, et saan ka teile näidata, kuidas lisada malli tõesti kiiresti. Mida me saame teha, esiteks me saame lisada uus vaade nimega "template.php" jooksul Views kausta ja mida ma lähen tegema, on ma lähen välja printida midagi, mida nimetatakse "sisu" mis saab olema minu peamine sisu. Ja võib-olla väga põhjas ma lisada, ütleme, autoriõigus. [Kuuldamatu õpilane küsimus] [Brandon Liu] Võibolla see on super põhi template ma tahan kasutada. Ma tahan olla kausta minu autoriõigus igal ühel leheküljel, ja nüüd, mida ma lähen tegema sees minu kontroller Nüüd on selle asemel, et öelda: "laieneb Controller" Ma ütlen: "laieneb Controller_Template" ja nüüd selle asemel, et öelda: "Vastuseks keha on võrdne selle eesmärgiga," Ma ütlen, et "seda malli sisu -" ja ma arvan, et - ma panen võrdusmärk? Ma unustan. Jah, nii ma arvasin. Ja nüüd ma seda sisu muutuja võrdseks vaade. Ma võin teha sama siin. Ja nüüd, kui ma värskendada, näete nüüd see autoriõiguse lisatakse sinna ja lihtsalt mingi suvaline post, ja siis jälle, siis tuleb tõdeda, et autoriõigus on väga lehekülje allosas. Great. See on kõik, mida ma tahtsin näidata teile poisid. [Aplaus] Kas on küsimusi? [CS50.TV]