[Seminaras] [Kohana: Lengvas PHP pagrindų] [Brandon Liu] [Harvardo universiteto] [Tai CS50.] [CS50.TV] Sveiki visi. Mano vardas Brandon. Aš jaunesnysis čia kolegijos daro informatikos, ir šiandien mes ketiname kalbėti apie Kohana, kuris yra PHP interneto plėtros programą. Šiandien bus gyvas kodavimo seminaras todėl aš iš esmės ketinate išleisti 5-10 minučių paaiškinti, ką Kohana yra ir tada aš tiesiog einu statyti super paprastą dienoraštį Jums čia tiesiog nuo nulio. Mes ketiname atsisiųsti kodą iš Kohana tinklalapyje ir mes ketiname pradėti kurti blogą, ir tikiuosi, ji bus labai pamokantis, nes matote gal gal aš padaryti keletą klaidų, ir pamatysite mane susigrąžinti iš jų, ar jums matyti savo mąstymo procesą, kaip aš sukurti per šį dienoraštį, ir tuo tarpu, jums taip pat susipažinti su pačia sistema. Tikimės, kad tai bus labai pamokantis mankšta. Pirma, kas tiksliai yra sistema? Jei jau vartojate CS50 iki šiol, jūs ne iš tikrųjų dirbo su bet sistemos dar nėra, ir ką tai. Jūs tikriausiai padaryta 1 interneto plėtros pset jau ir tarkime, jūs ir toliau kurti interneto svetaines ir išlaikyti kurti internetinius puslapius. Jūs pradėsite pastebėti keletą dalykų. Pirmas dalykas, jūs pastebėsite, kad jūs tikriausiai daro tą patį, ką vėl ir vėl visą laiką, dalykų, pavyzdžiui, valymo naudotojo įvesties duomenis, dalykų, pavyzdžiui, organizuoti savo failus tam tikru būdu. Kitas dalykas, jūs taip pat tikriausiai pastebėjote, kad jūsų kodas gali pradėti tapti labai, labai nepatogus, ir jūs galite palikti nepatogus ir tiesiog labai sunku jį išlaikyti, arba galite pradėti formuoti savo kodą ir todėl modulinis tam tikrais būdais, kad jis taptų Patogiausią aptarnavimo. Tai kur interneto sistemos iš esmės atėjo in Šie žmonės, kurie buvo pastatyti daug svetainių, jie sakė, "Mums nereikia perdaryti tai kiekvieną kartą, kai mes sukurti svetainę." "Kodėl mes tiesiog padaryti paketą, kuris daro visus šiuos dalykus už jus kiekvieną kartą, kai norite sukurti svetainę? Ir todėl, kad kai jums padaryti naują interneto svetainę, jūs tik sutelkti dėmesį į ką tiksliai tai ypač svetainė yra apie. Jums nereikia kartoti visą įvairios konfigūracijos ir atskyrimas kodus ir perrašyti kodas kad jums dažnai tenka daryti, kai jūs darote interneto svetainėse. Idėja yra tai, kad sistema leidžia rašyti aukštesnio lygio kodą be reikalo jaudintis žemesnio lygio detales. Išsamiai žemesnio lygio gali būti kažkas panašaus susijusius su valymo naudotojo įvesties duomenis. Tai kažkas, kad jūs tikrai neturėtų jaudintis. Jūs turite sutelkti dėmesį į tai, ką jūsų interneto paskirstymas iš tikrųjų apie tai. Jis pašalina iš šabloninius kodas aikštelė. Tai jūsų projektui architektūra. Vienas iš populiariausių būtų Modelis-view-controller, kurį aš ruošiuosi kalbėti apie per sekundę. Ir daug kartų šios sistemos įkūnyti procedūrų rinkinį, taisyklės ir geriausia praktika, kuriuos galima naudoti taip, kad, kai jūs patvirtinti interneto sistemą jūs turite parašyti savo kodą tam tikru būdu, ir tai paprastai susitarta principais į bendruomenę, kuri yra visuotinai pripažintais būti geras būdas rašyti kodą. Tai daro jūsų kodas daugiau Patogiausią aptarnavimo, labiau naudingas, taip toliau ir taip toliau. Ir, pagaliau, ką aš noriu pabrėžti apie sistemas prieš bibliotekose ši idėja apie apverčiant kontrolės ir dalykas yra tai. Tarp bibliotekos ir sistemos skiriasi tuo, kad su biblioteka jūs vis dar raštu pagrindinę programą, ir jūs tarsi remdamasis biblioteką bei ragindami bibliotekoje kažką daryti už jus. Tarp bibliotekos ir sistemos skirtumas yra ta, kad sistema pradeda su kontrolės, ir ji nurodo savo kodą, todėl jūs galite galvoti apie tai, kaip - tai kodėl ji vadinama sistema - sistema suteikia šį kadrą ir struktūrą savo kodą, ir užpildyti skyles, ir tai taps akivaizdu per sekundę kai pamatysite mane pradėti rašyti kodą, kaip apibrėžta sistemos kontekste. Jūs pamatysite, kad aš užpildyti spragas, ir pagrindas yra natūra kontroliuoti visas judančias vienetų, ir aš turiu pateikti vienetų tinkamose vietose. Šiandien mes ketiname kalbėti apie Kohana, , kuri yra viena iš daugelio PHP sistemas. Yra interneto sistemas, ir yra tie, kurie beveik kiekvieną kalbą, ir aš įlaipinami Kohana nes Kohana yra neabejotinai ir apskritai pripažinta kaip paprasčiausias PHP sistemą pasiimti. Tai labiausiai lengvas. Yra kitų ten, kad ateina su daug, daug daugiau funkcijų, tačiau jie linkę būti sunkiau pasiimti. Ir, pagaliau, Kohana naudoja MVC architektūrą. Tai pakankamai lengvas, kad galite tiesiog sukurti projektą čia tiesiai prieš jūsų akis, ir jūs galite labai daug sekti kartu gana lengvai. Kas yra MVC architektūra? Tai reiškia Modelis-view-controller, o gal, jei jūs manote apie kodą rašote tiek, kiek kai kurie iš jūsų interneto plėtros psets Jums gali būti suteikta galimybė pamatyti kai šis, bet paprastai, kai jums pradėti rašyti sudėtingesnė interneto programų, tarp šių 3 segmentų padalinys tampa vis labiau ir labiau akivaizdu. Dėjau MVC čia tarsi kaip kaminą, ir dažnai išgirsite žmonių kalbėti apie kaminus interneto svetainių kūrimas, ir tai iliustruoja mintį, kad kiekvienas sluoksnis, kiekvienas komponentas tikrai stengiasi tik bendrauti tarp 2 kitų komponentų. Kažkas pasiekia jūsų svetainę, kaip klientui arba naršyklėje. Jie sąveikauja su jūsų programa per vaizdo kodą. Vaizdas kodas sąveikauja su valdikliu. Valdiklis bendrauja su modeliu, ir modelis sąveikauja su SQL duomenų bazės. Ir nėra tarp hopping jei rašote kodą teisingai. Ką šie dalykai padaryti? Modelis iš esmės yra kodo dalis, kuri susijusi su jūsų duomenis. Viskas, kas susijęs su jūsų duomenų bazėje, su daiktų, kad jums laikyti, arba išrinkti tuos objektus duomenų bazėje, kad viskas tvarko modelį. Gal turite objektų duomenų bazę. Mes ketiname sukurti modelį, turintį daryti su pranešimų, taip postas gali turėti kai kuriuos jo atributus. Jūs galite turėti funkcijas aplink saugoti tuos pranešimus ar gaunant žinutes arba filtravimo pranešimus ir tt, ir tt, ir viskas kodas tai tvarko modelį. Valdiklis yra tarsi logika, ir įvairių dalykų gali eiti į logika. Jei jūs kalbate su kitu API kad gali būti ten, kur esate, susijusius su logika. Jei bandote turėti pritraukti duomenis iš kelių skirtingų modelių ir turi derinti juos tam tikru būdu, kad dažnai gali būti tvarkomi duomenų valdytojo. Pavyzdžiui, "Facebook", jei draugas ką nors, tada gal, kad nustatant šį santykį aktas gali būti atliekamas duomenų valdytojas. Ir pagaliau, vaizdas yra kodas, kuris manimi kurti tai, ką jūs iš tikrųjų pamatyti. Daug kartų Manau, kad per CS50 psets jie iš tikrųjų neskatina jums vaikinai atskirti šiuos 3 dalykus. Jūs tikriausiai turite šį didelį, ilgą failą, kur viršuje jums padaryti šiek tiek SQL užklausą ir gal padaryti kai kuriuos perdirbimo dėl duomenų, kuriuos gauti iš duomenų bazės, ir tada jūs turite visas savo HTML apačioje. Ir jums gali rasti, kad jums sukurti daugiau ir daugiau puslapių kad jūs ketinate turėti tam tikrą kodą pasikartojimų, o taip pat, dalykas yra jūsų failas bus tikrai didelis ir ilgas ir tampa griozdiškas valdyti. Priežastis, kodėl "MVC yra taip gerai vertinamas yra dėl daugelio priežasčių. Pirmas dalykas, yra kažkas vadinamas atskyrimas susijęs kuris yra idėja, kad jei turite - idealiai 1 kodo fragmentą reikėtų daryti 1 dalyką ir tai padaryti tikrai gerai, ir jūs neturėtumėte sujungti gabalus kodo, kad padaryti nesulyginamus dalykus. Pavyzdžiui, peržiūrėti kodą ir kodo, jie tikrai turi būti susiję. Jie neturi būti tų pačių failų, todėl, kai galima, atskirkite juos todėl lengva prižiūrėti. Kitas dalykas yra kodas pakartotinio naudojimo. Jums gali rasti sau rašyti tą patį SQL užklausą arba daro panašių užklausų, kurios gali būti paimami į 1 funkcija, ir tai idėja modelių ir valdytojams, turintys jį į atskirą funkciją, kurią galima panaudoti įvairiose vietose savo projektą. Ir, pagaliau, tai susieta su džiovinimo savo kodą, ar kartoti sau, nereikia kartoti sau. Tai labai suprantamas vystymąsi. Kai galite, jūs nenorite kartoti sau, nes jei kartoti sau,  tai daug brangiau išlaikyti. Jei norite pakeisti 1 dalykas, jūs turite pakeisti jį visur, ir kad veda prie klaidų, ir tai siaubinga. Gerai. Turite klausimų iki šiol apie Kohana ne visi? Didysis. Dabar mes ketiname pasinerti į gyvo kodavimo sesijos ir, tikiuosi, viskas gerai. Aš einu iš esmės sukurti šią svetainę vienas iš mano nutolusius serverius, ir tokiu būdu jūs vaikinai taip pat gali pamatyti interneto svetainėje ir prisijungti prie šio tinklalapio, ir taip pat aplinka yra geriau Nekonfigūruoti nei mano nuotolinio kompiuterio, nes jis veikia Linux vietoj OS X. Mes tiesiog ketiname pradėti. KohanaFramework.org. Aš atsisiųsti kodą iš svetainės. Aš ruošiuosi nukopijuoti nuorodą adresą, eikite į mano serverį, jį atsisiųsti, ir aš ruošiuosi išgauti ją. [Studentų] Koks didžiausias galite padaryti tekstą? [Brandon Liu] Ar tai geriau? [Studentų] Ar tai Vykdytinas? [Brandon Liu] Taip, viskas gerai. Aš atsisiųsti ZIP failą ir Išspausti, kad į katalogą vadinamas Kohana, ir mes ketiname pakeisti, kad CS50-Kohana, ir eikime in Nuostabus. Čia galite pamatyti daug įvairių failų krūva. Dauguma iš jūsų gali ignoruoti - kurdama nesiruošia eiti per kiekvieną failą, kad yra čia nes mūsų laiko apribojimus, bet paprastai, kai įdiegsite Kohana, pirmas dalykas, ką daryti yra jūs einate į katalogą, ir jūs iš esmės ką nors aplinkos sąlygoms bandymai, ir Papuošalą įsitikinkite, kad jūsų aplinka yra tinkamai nustatytas paleisti Kohana ir įsitikinkite, kad viskas gerai. Jūs galite pamatyti daugelis dalykų praėjo, bet paprastai jūs visada paleisti į šią problemą 1 kur jis skundžiasi, kad kai direktorija neįrašomi, ir tai todėl, kad kai kurių teises. Aš nežinau, kiek vaikinai sužinojo apie failų permissions CS50, bet jei jūs darote interneto svetainių kūrimas, jūs ketinate paleisti į šį klausimą daug. Aš ruošiuosi padaryti tai rašyti ir manau, kad taip pat turi - ten mes einame. Gerai, kad dabar jūs galite pamatyti viskas praėjo, ir dabar jis jums pasakys, kad pervardyti install failą. Aš ruošiuosi persikelti install.php failą installed.php, o dabar, jei aš atnaujinti, jis suteikia man klaida, ir tai yra, kai derinimo Įgijusi Tai kur jūs galite pamatyti, kas iš tikrųjų nutiks. Dalykas yra, pagal nutylėjimą, Kohana daroma prielaida, kad jūsų projektas yra ne šakniniame kataloge domene, todėl jis tikisi jums būti demo.brandonkliu.com. Mes turime pasakyti, kad tai iš tikrųjų pakatalogį. Jis yra pakatalogį vadinamas CS50 Kohana. Dalykas yra, ji manimi neteisingai aiškino CS50-Kohana kaip kažkas, kurį aš paaiškinti jums per sekundę. Tačiau turėčiau pasakyti, kad kažkas, kad galima tikėtis. Ką mes ketiname padaryti, tai mes ketiname eiti į šį aplanką, pavadintą bootstrap.php, kuris yra konfigūracija aplanką, kuriame įvairių dalykų yra įsteigti. Aš atidarau, kad iki. Tada gal vienas iš pirmųjų dalykų, aš padaryti, tai pakeisti laiko juostą. Ir tada pažiūrėkime. Aha! Čia. Yra įvairių konfigūracijos priežodžiai krūva čia bet viena aš ieškote yra šis dalykas vadinamas Bazinis URL, ir pagal nutylėjimą man jį nustatyti Kohana, bet aš ruošiuosi pakeisti, kad į CS50-Kohana, ir manau, kad ją išspręsti. Taip, puikus. Pagal nutylėjimą, matyti, kad jis veikia, jis sako: "Hello World". Kur, kad atėjai? Kaip mes gauti Hello World? Kur tiksliai yra kodas, kuris iš tikrųjų rašė, kad? Norėdami suprasti, kad aš jums pristatyti šią koncepciją, vadinamą maršruto. Beveik visi interneto sistemos turi koncepciją, vadinamą maršruto kuri yra programinė įranga, kuri bus map tam tikrą URL iki tam tikro kodo fragmentą per savo sistemą. Pavyzdžiui, jei turite kokių nors URL ir jums eiti į kai URL kaip foo.com / blog / visos tada, ką sistema darys - ar bent jau kas Kohana ketina daryti - jis ketina rasti klasė vadinama reguliatorius blogas, ir jis ketina paleisti funkcija pavadinta veiksmus viską. Aš žinau, aš kalbu apie klases ir funkcijas, ir aš žinau, vaikinai jos nebuvo taikomos klases ir funkcijas į CS50 dar, bet dabar, jūs galite galvoti klases kaip tik funkcijų grupės, grupuoti funkcijas kartu būdas. Tai tikrai viskas, ką reikia žinoti. Dabar, jei mes žiūrime į mūsų aplankų struktūrą, viduje taikymą aplanke yra dar vienas aplankas vadinamas klasės, ir kiti katalogai vadinami kontrolieriaus ir modelis. Jei pažvelgti į vidų kontrolieriaus aplanką, matome, kad yra failas, vadinamas Sveiki, ir jūs galite pamatyti čia yra klasės vadinamas kontroleris Sveiki, ir ten yra funkcija vadinama veiksmų rodyklė, ir ką ji daro tai nustato savo atsaką į "Hello World kūną. Štai kur kodas yra parašyta. Kitas klausimas yra, gerai, aš ne eiti į bla, bla, bla, / welcome / index. Kaip aš galų gale čia? Na, tai vien dėl to, čia mūsų įkrovos failą apačioje kur mes nustatome mūsų maršrutus galite matyti, kad jie nustatyti tam tikras įsipareigojimų neįvykdymo jums. Numatytasis valdiklis Sveiki. Veiksmas pagal nutylėjimą yra rodiklis. Štai kodėl, kai mes įdėti nieko ten jis automatiškai atiteko Sveiki kontrolierius ir indekso veiksmų. Viskas prasmės iki šiol? Dabar jūs galite padaryti daugiau nei tiesiog eiti kontrolieriaus ir konkrečių veiksmų. Jūs taip pat gali perduoti parametrus į valdiklio. Kaip pavyzdys, Aš ruošiuosi įdėti kitą veiksmą su šiuo valdikliu jums parodyti. Pavadinkime šį veiksmą Aido, nes jis ketina pasakyti jums, ką jūs suteikiate jai, ir todėl aš iš esmės ketina patraukti parametras, kuris ketina būti siunčiami per mane maršrutų programą, ir kaip jūs galite pamatyti čia ši eilutė čia, jūs galite pamatyti, kad tai iš esmės reiškia, kad turite valdiklis, ir jūs turite /, ir jūs turite veiksmus, ir jūs turite Kita /, ir tai bus parametrai, ir todėl mes turime šį pavadinimą ID per laužtiniuose skliaustuose, tai reiškia, kad mes pavadino šį parametrą ID. Vėliau mano valdiklio kodą, jei aš noriu paimti tą parametrą užlaikymas, Galiu naudoti kodą rašiau, rasti parametro pavadintas vardą. Štai ką aš čia padariau, ir aš ruošiuosi grįžti ir pasakyti, "Jūs sakėte, kad". Ir todėl dabar, jei aš einu į mūsų interneto svetainėje, Aš einu į cs50-kohana/welcome/echo/Helloooo-- O, kad tai tiesa. Yra 1 žingsnis aš paliktas. Tai yra viena iš gyvų kodavimo idėją. Štai 1 dalykas. Pažiūrėkime. Taigi, paprastai pagal nutylėjimą iš šių interneto programų aikštelė turite įtraukti šį index.php dalyką savo URL, nes idėja yra index.php yra tarsi įvažiavimo Jūsų taikymo, bet, žinoma, tai tarsi erzina turėti. Jūs nenorite turėti index.php rodomi URL, ir beveik kiekvienas interneto sistema out of the box turi šią index.php problemą, ir todėl jūs turite imtis tam tikrų priemonių, kad būtų galima pašalinti, kad. Ir taip šiuo atveju, ką mes ketiname padaryti, tai mes ketiname naudoti failą. Htaccess, ir tai yra kažkas, kad konkreti Apache web serverį, ir jis gali padaryti kažką panašaus perrašyti URL ir nukreipti URL ir tt ir tt, ir Kohana yra gražus pakanka pateikti šabloną. htaccess failą, kurį galite naudoti. Kaip matote, ten yra failas yra vadinamas example.htaccess, ir mes ketiname kopijuoti, kad į. htaccess. Aš ruošiuosi atidaryti tai ir jį redaguoti, ir iš esmės ji yra įvairių dalykų krūva. Pagrindinis linija galbūt norėsite pažvelgti į tai, čia. Idėja yra tai, kad nustato taisyklę, kad sako, "Gerai, ką rašote, pridėkite index.php, kad." Galite matyti, kad. *. Stovi nieko, rungtynės nieko, ir tada antra dalis yra index.php / $ 0, ir $ 0 reiškia kokia buvo suderinta anksčiau. Ar tai prasminga? Bet tikrai pagrindinis dalykas, kurį noriu pakeisti yra pakeisti šį perrašyti bazę, kuri yra URL bazę. Tai tarsi prisiima kurioje dirbate nuo. Aš ruošiuosi įdėti CS50 Kohana į tai, ir tokiu būdu dabar, jei aš pašalinti index.php, ji turėtų dirbti, ir aš ruošiuosi pridėti numerius parodyti, kad tai iš tiesų padarė darbą. Skamba gerai. Visi klausimai iki šiol? [Studentų] Kaip tai žinoti, kad 123? Ar tai argumentas? Būtent. Jūs galite galvoti apie tai, kaip argumentą. Bet Keistas dalykas, nors tai, kad būdas Kohana daro yra jie neturi daryti tiksliai taip, kaip argumentą. Jūs turite patraukti jį, kaip šis. Jūs turite patraukti prašymo objektas ir prašyti parametro tai pavadino ID, ir tas pavadinimas ID ateina iš tos įkrovos failą kad aš parodė anksčiau, ir pavadinimas buvo ID tose laužtiniuose skliaustuose, ir tai, kaip jūs patraukti tuos parametrus. Nuostabus. Visi kiti klausimai? Kaip ir sakiau, valdikliai, jie tvarko logika, todėl tai 1 atvejis, kai matote that - tai labai paprastas, bet jis vis dar logika, greiferiniai parametrą ir sukurti naują eilutę idėja kad sako: "Tu sakei, blah", ir tada spjaudytis, kad su Jumis. Ir apskritai, ką jūs darote, yra sukurti įvairių valdikliai. Jūs sukuriate atskirą valdikliai skirtingų dalių jūsų svetainę. Šiandien mes ketiname padaryti labai paprastą interneto svetainę, ir tai bus labai paprastas dienoraštis. Mes ketiname sukurti naują valdiklį tik už tas dienoraštyje pranešimų. Bet tada jei aš būčiau taip pat pridėti komentarų bloge, tada aš tikriausiai norėsite sukurti naują valdiklį tas pastabas. Jei aš norėjau pridėti vartotojus, aš tikriausiai pridėti naują valdiklį tiems vartotojams, ir apskritai, idėja yra ta, kad, kai jūs turite naują modelį, Naujasis duomenų objektas, jūs susiduriame su, jūs turite vieną tikrintoją to objekto duomenų. Šiandien mes tik ketina dirbti su 1 duomenų objektą, ir tai bus pranešimų, o taip pat galite galvoti apie duomenų objektus, atitinkančius lentelės. Paprastai kiekvienoje lentelėje atitinka 1 tipo objekto duomenų, todėl po stalo turės 1 post modelis, kuris turės 1 post valdiklį atitinkantį, kad ir pats komentaruose, pats vartotojams, ir taip toliau ir taip toliau. Ir tai bendra taisyklė nykščio. Yra bus specialūs atvejai, kur gali skirtis nuo to, bet 90% laiko, kad tai, ką jūs ketinate daryti, ir aš jums parodysiu, kad tai, ką mes ketiname daryti šiandien. 1 daugiau koncepcija, kol mes neria atgal į kodą, šis objektas relacyjne idėja. Vaikinai jau padaryta Web Development pset, ir mačiau, kad jūs padaryti SQL užklausą, ir kokia ji grąžina jums yra eilutės. Jūs gaunate šias eilutes, ir jūs indekso juos tam tikru pavadinimu, Kolonėlės ir stalo vardas, ir tai, kaip jūs su juo dirbti, ir ji gali būti šiek tiek sudėtinga. Tačiau be to, jei turite ryšius per savo duomenų bazę, kaip, pavyzdžiui, jei aš turiu pastabų ir pranešimų, tada gal norite patraukti tėvų postą komentarą. Jei aš naudoju tik eilutes SQL, tada viskas, ką galiu gauti yra ID patronuojančios paštu, o ne faktinis pats pranešimas. Bet kai mes kodavimo, ką mes iš tikrųjų norime, kad iš tikrųjų paimti  tėvų rašyti save kartais. Kas objektas relacyjne ar yra Ji mano, kad duomenų bazės užklausos rezultatus ir įdėkite jį į objektus už jus, kurie daug gražiau dirbti su nei paprasto matricas ir eilučių. Pavyzdžiui, dabar, kai turiu komentarą gero, ir aš noriu paimti savo tėvų pareigas, ir aš gal komentarą rodyklės įrašą, tada jis bus tikrai suteikti man po objektą atitinkantis faktinę patronuojančios paštu, o ne tik kai ID, kurį aš priešingu atveju turi naudoti ir padaryti dar vieną SQL užklausą patraukti paštu, kuri yra sudėtinga ir nereikalinga. Ir be to, kartografavimo visus šiuos duomenų eilutes į objektus, Jūs taip pat galite pridėti daugiau funkcijų objektų, todėl, pavyzdžiui, aš kalbėjau apie tai, kaip klasės yra iš esmės grupės funkcijas. Jūs galite galvoti apie tai, kaip, kad. Pavyzdžiui, gal aš turiu šį pranešimą objektą, o gal aš norėčiau turėti tam tikrą funkciją rūšiuoti prie jos kad iš esmės man sako, ji buvo neseniai paskelbtas? Jis buvo paskelbtas per paskutinę savaitę, true arba false? Ir tai funkcija galiu pridėti į tą objektą, ir tai tikrai patogu, kad jis toje pačioje vietoje, ir yra skirtingas funkcijas galite sukurti priimančiosios šių objektų, ir tai tikrai gražus, kad būtų galima jį pridėti prie klasės, prie objekto, o jei jūs tiesiog turėjo eilučių, gaunamus iš savo duomenų bazės, tada jūs tikrai negali pridėti bet funkcionalumą, kad. Tai tiesiog tik duomenys. Turite klausimų apie tai ne visi? ORMS yra labai dažni interneto svetainių kūrimas, ir yra įvairių tipų ORMS daug, ir Kohana turi savo ORM. Tai labai paprastas, bet jūs gausite tai, ką ji atrodo skonį. Kurkime mūsų dienoraščio modelį, ir pirmas dalykas, kurį mes akivaizdžiai reikia padaryti yra sukurti realią lentelę per mūsų duomenų bazėje iš tikrųjų laikyti savo duomenis tų pranešimų. Pirmas dalykas, aš ruošiuosi padaryti, tai eiti į phpMyAdmin. Ar jums, vaikinai naudoti phpMyAdmin anksčiau? Gerai, nuostabus, todėl jūs vaikinai jau žinote, kas tai yra, ir aš norėčiau sukurti naują lentelę, pavadintą Kohana Pranešimai, ir tai bus tikrai paprasta. Aš turiu vėl prisijungti prie in Visa, ką mes ketiname daryti šiandien turi autorius ir kūną, tiesiog laikyti jį paprasta. Aš ruošiuosi kurti šią lentelę, ir dabar mes tiesiog turime lentelę, atstovaujantis savo pranešimų su 2 srityse mūsų autorius ir mūsų organizme. Kitas dalykas, aš einu daryti dabar sukonfigūruoti savo interneto paraišką, todėl žino, kaip prisijungti prie duomenų bazės, ir tai, vėlgi, yra kažkas, kad jūs turite daryti su visais interneto programų. Jūs turite pasakyti jai savo vartotojo vardą ir slaptažodį ir duomenų bazės pavadinimą ir tt ir tt išsiaiškinti, kaip iš tikrųjų prisijungti prie savo duomenų bazės. Į Kohana, mes turime kažką vadinama duomenų bazės modulis, ir konfigūracijos aplanko mes turime šį aplanką, pavadintą duomenų bazė, ir, kaip matote, yra nustatymų krūva turite nustatyti čia pasakyti, kas yra vartotojo vardas ir slaptažodis į duomenų bazę, todėl aš iš tikrųjų gali prie jo prisijungti. O kadangi aš nenoriu, kad jūs, vaikinai, kad iš tikrųjų žinoti vartotojo vardas ir slaptažodis mano duomenų bazėje, Turiu failą, kur aš jau nustatytas, tai visi, ir aš ruošiuosi nukopijuokite ir įklijuokite jį per. Nuostabus. Gerai. Manau, kad visa konfigūracija man reikia daryti, bet pažiūrėkime. Mes ir toliau dirbti joje, ir jei kas nors sugenda, tada mes ją išspręsti. Dabar, ką aš ruošiuosi padaryti tai aš sukurti naują valdiklį. Ar tikrai, atsiprašau. Pirmiausia turiu sukurti naują modelį. Aš sukurti naują modelį, vadinamą Post.php, ir ką mes ketiname padaryti, tai mes ketiname jį vadiname klasė Model_Post. Gauti tam tikrą sintaksės apie, ir todėl, kai aš sakau, "tęsiasi ORM, kad" iš esmės šiek tiek daugiau Objektinis programavimas, kuris, deja, vaikinai ne išmoko CS50 dar, bet tai gana lengva pasiimti. Tai suteikia man visa tai papildomų funkcijų, kad ateina į šį ORM paketą, ir gaunu papildomų funkcijų ir Plauktiņš nemokamai krūva, kurį pamatysite bitų per sekundę. Dabar tikrai viskas, ką reikia padaryti, tai sukurti šią klasę. Aš net nereikia daryti bet kurią funkciją arba nieko, bet aš sukūriau klasės, kuri atstovauja lentelę, ir nes aš pratęsė šį ORM klasę, Gaunu daug dalykų krūva nemokamai, kad dabar jūs neturite nieko nustatyti daugiau veiksmų. Ir dabar, ką aš ruošiuosi padaryti tai aš sukurti naują valdiklį, kurį aš ruošiuosi pavadinimas blog.php, ir aš ruošiuosi nukopijuokite Sveiki kontrolierius todėl aš neturiu perspausdinti kai kurių dalykų, ir dabar turiu pervadinti tai. Dabar, ką aš ruošiuosi daryti išbandyti įsitikinti, ar viskas yra darbo, Aš ruošiuosi patraukti pirmąjį pranešimą iš savo duomenų bazės ir atspausdinti ekrane paštu kūną. Norėdami tai padaryti, ką aš ruošiuosi padaryti pirmiausia yra aš ruošiuosi įrašyti pranešimus kintamasis taip, ką mes ketiname padaryti, tai - į Kohana ką jūs darote, yra patraukti pašto objektą tai tipo sudėtinga, bet jūs turite daryti tai, ką vadinama ORM :: gamyklos, ir tada pereiti į modelio norite pavadinimu, ir ji grąžina ORM objektą, kuris patvirtina, kad modelis. Ir tada, kaip sakiau, kai mes išplėsti ORM objektą, mes visus šiuos metodus nemokamai, todėl, pavyzdžiui, mes gauname tai nauja funkcija vadinama "visus", kuri automatiškai grįžta kiekvieną įrašą į duomenų bazę, kuri yra gana patogu. O dabar organizme aš ruošiuosi grįžti pirmas postas ir grįžti savo kūną. Ir, žinoma, man reikia sukurti įrašą, todėl galime įrašyti naują įrašą. Pasakysiu "Brandon, mano labai pirmąjį postą." Nuostabus. Ir dabar mes ketiname eiti į dienoraščius ir jei viskas veikia gerai - O, tai kai kita kvailas failas leidimas dalykas dar kartą. Laikykite ant 1 sekundę. Tai koks absurdas. Čia mes eiti. Gerai. Poprawiłem kad leidimas problemą. Jis bando sukurti kai kuriuos failus ir šiek žurnalą, ir leidimus, vėlgi, buvo netinkamai nustatytas, todėl aš padariau tai todėl tie failai buvo rašyti ir vykdomąjį todėl iš tikrųjų galėtų prisijungti prie dalykų. Dabar tai, kad suteikėte man dar vieną išimtį posakį, "klasė ORM nerastas" ir tai todėl, kad aš pamiršau dar vieną žingsnį. Tai labai blogai. Į įkrovos failą aplanke yra šie moduliai čia, kurių galite pasirinkti įjungti arba išjungti. Tai yra įvairių funkcijų krūva, kad jūs galite pasirinkti naudoti per Kohana, kuri yra tarsi gražus. Pavyzdžiui, jie turi prisijungimo modulį kurią galite naudoti autentifikavimo vartotojams. Jie turi spartinimo modulį, jei norite įgyvendinti kai spartinimo atgal galą, kad paraiška dirbti greičiau ir Plauktiņš rūšiuoti. Mums reikia, kad į duomenų bazę ir ORM modulį, nes kaip sakiau, mes, naudodamos duomenų bazę, žinoma, ir mes taip pat turime sudaryti sąlygas ORM modulį, nes mes norėtume turėti papildomą funkcionalumą, kuris yra malonu turėti. Viskas, ką turite padaryti, tai odkomentować tie 2 linijos, o dabar, jei aš atnaujinti, ji davė man dar vieną klaidą. Jis sako: "Model_Post klasės nerastas." Dabar tai yra gera problema turi. Pažiūrėkime. Ją viešai paskelbti. No Palauk. O, brangusis. Aš nežinau, kodėl jis negali rasti, kad. Tai tikrai keista. Turiu šią klasę čia. Manau, gali tekti - oi. Esu labai kvailas. Aš pamiršau pridėti PHP tegus. Štai kodėl. Dabar turiu anuliuoti, kad 1 pakeitimas Aš ką tik padarė. Gerai. Čia mes eiti. Tai buvo tikrai kvailas. Aš neturėjau atidarymo PHP tegus. Bet, kaip matote, dabar jis veikia, tiesa? Mes turime 1 postą. Mes griebė pirmą postą, ir dabar mes atspausdinti savo kūną. Didysis. Mobiliesiems telefonams. Turite klausimų iki šiol? Nope? Turite klausimų? Gerai, kad mes tiesiog sukurta post modelis, labai paprastas, ir mes ketiname pridėti keletą funkcijų vėliau. Mes galime pridėti tvirtinti ir filtravimas. Tokius yra vienas iš dalykų, kad sistemos išspręsti už jus tikrai, tikrai gerai, ir nemanau, kad vaikinai turėjo tai padaryti savo CS50 pset, bet jei jūs darote interneto svetainių kūrimas jūsų galutinis projektas, jūs tikriausiai ketina norite ką nors įteisinimo rūšiuoti, kaip neturi tuščių vartotojo vardus, gal turintys slaptažodį bent gana išsamiai, dalykų, pavyzdžiui, kad. Ir tai tikrai sunku įgyvendinti šiuos dalykus pagal save, ir beveik kiekvienas interneto sistema daro tai už jus ir leidžia jums padaryti jį labai švariu būdu. Ir modelis, kur jūs paprastai išreikšti tuos tikrinimo taisyklės, nes tai patvirtinti, ar modelis galioja, ar ne. Bet dabar, mes ketiname daryti, kad tik vėliau, ir dabar mes ketiname dirbti kitoje dalyje, ir mes ketiname išbandyti ir sukurti naują vaizdą kad pateikiamas visų pranešimų. Veiksmus dalyvauja priimant naują ieškinį, kuriame visas žinutes yra patraukti visų postų ir tada atimti iš visų postų, per nuomone. Štai čia, pakankamai laimei, mes jau griebė visas žinutes naudojant šią pirmąją eilutę, rasti visą funkciją, o dabar ką mes ketiname daryti iki šiol Aš tiesiogiai nustatant atsaką kūną išlaikius eilutę, bet dabar noriu naudoti vaizdą, ir tarp nuomone ir tik daro šį skirtumą yra su nuomone galiu turėti gražią, didelis HTML šabloną, ir ką aš galiu padaryti, tai perduoti jį tam tikrais kintamaisiais ir tada jau vaizdas automatiškai pridės savo šabloną naudoti šiuos kintamuosius. Ką aš padaryti, tai aš sukurti naują vaizdą, ir aš pavadinti vaizdo kažką panašaus į "dienoraščio / index" ir aš ruošiuosi iš esmės įpareigoti tai - oi, ką aš rašau? Mano smegenys yra kažkur kitur. Aš ruošiuosi įpareigoti pranešimų kintamas su nuomone, todėl, kad taip vaizdas turi prieigą prie šios pašto kintamąjį. Ir todėl dabar man reikia sukurti šį vaizdą, todėl čia mes turime šį aplanką, pavadintą "Žiūrėti", ir pirmą kartą, aš ruošiuosi sukurti naują aplanką pagal tą vadinamą "blog". Tai gražus. Tokiu būdu mes galime turėti gražią hierarchiją mūsų nuomonę. Ir tada aš ruošiuosi sukurti kitą ten failą pavadinimu "index.php". Nuostabus. Tiesą sakant, galime turėti juos abu čia. Padaryti vaizdo failas yra turbūt paprasčiausias dalis visa tai, ir tai tikriausiai viskas jau esate susipažinę su. Mes ketiname padaryti kažką tikrai paprasta, pradėti sakydamas: "Mano sąrašas dienoraščio." Tada mes galime eiti per, ir mes galime pakartoti per pran masyvas, patraukti kiekvieną postą ir pasakyti kažką panašaus į - gal pridėti eilutę ir tada atsispausdinti autorius ir kūną. Tai prasmės iki šiol? Ir tegul pamatyti, jei ji veikia. Nieko neįvyko. Įdomu, kodėl. Oi, aš praleidau 1 žingsnį. Labai kvailas mane. Aš sukūriau vaizdą, bet aš ne nustatyti vaizdą kaip atsaką, todėl jūs turite padaryti dar 1 dalykas. Jūs turite padaryti "Šis atsakymas kūną" ir nustatyti, kad ji būtų vaizdas. Čia mes eiti. Mes turime antraštę, tada mes turime pranešimą, ir tik prasideda, galime įdėti kitą pranešimą todėl matome sąrašą. Ir įterpti šiuos 2 pranešimus, o dabar, jei aš atnaujinti puslapį, mes matome visus šiuos pranešimus čia. Ar tai prasminga tiek, kiek? Taip, klausimas? O, gerai. Kaip matote, mes jau sugeba atskirti visus šiuos kodus iš į skirtingus skirsnius ir tada jūs galite pamatyti tai labiausiai akivaizdu, su vaizdu kodą. Šis failas čia, kad atstovauja nuomonei, ji rūpinasi tik apie atstovaujanti duomenis, rodant duomenis. Ji gauna praėjo šiek tiek duomenų, rūšiuoti, ir visi ji tiesiog parodyti jį jums. Visose kitose kodą, jums nereikės nerimauti, bet kad, ir panašiai, jūsų nuomone kodas neturi jaudintis nieko apie kaip prieiti prie duomenų bazės ir tt ir tt, kuri yra tikrai gera ir daro jūsų kodas daug daugiau Patogiausią aptarnavimo. Kaip ir sakiau, pažiūrų, jie dinamiška, kad tai 1 failas, bet jis duotų skirtingus požiūrius remiantis kintamųjų jūs iš tikrųjų vežamos, ir, be to, yra įvairių pagalbinių funkcijų daug kad jūs galite naudoti, siekiant padėti jums parašyti savo kodą greičiau, kurį aš jums parodysiu, vos sekundę. Taip. [Studentų] Taigi $ 0 yra valdiklis, tiesa? Tai antras dalykas. Klausimas yra 0 $ kontrolierius? 0 $ yra kintama aš sukūriau čia. Aš sukūriau vaizdą pirmas. Aš priskirti jį tam tikru kintamuoju. Tada aš išlaikė jį į šią funkciją, nustatykite ją kaip atsakymui. Ar tai prasminga? [Studentų] Taigi yra peržiūra :: gamykla, yra vaizdas kaip klasės arba biblioteka [nesigirdi] gamykla funkcija? Klausimas yra apie peržiūra :: gamyklos funkciją, ir iš esmės tai yra šiek tiek daugiau Objektinis programavimas iš esmės. View vaizdas klasė, ir ji turi metodą, vadinamą "fabrikas", ir tai būdas patraukti objektą, pavadintas "dienoraštis / index". Ir tai šiek tiek daugiau Objektinis programavimas medžiaga kad aš nesiruošia eiti į čia per daug. Dabar akivaizdu, kad mes norime sukurti naujų darbo vietų, tačiau mes nenorime to daryti per duomenų bazę, todėl mes ketiname sukurti naują veiksmų siekiant sukurti naują įrašą, ir yra daug dalykų, mes turime padaryti. Pirmas dalykas, mes ketiname daryti - galime spręsti šiuos dalykus po vieną. Pirmas dalykas, mes padaryti, tai mes turime sukurti formą įterpti naują įrašą, bet aš taip pat ketina įtraukti naujus veiksmus, pirma, todėl pridedant naują veiksmų yra tiesiog taip paprasta, kaip pridėti naują funkciją su valdikliu, ir dabar aš ruošiuosi padaryti kažką labai paprastas, tiesiog paimti šį vaizdą ir įdėti jį, tiesiog parodyti jį jums. Ir tada aš dabar ruošiuosi sukurti naują vaizdo failą, ir aš ruošiuosi pradėti rašyti kai kurių dalykų. Kas malonu apie Kohana yra tai, kad jie suteikia įvairių pagalbinių funkcijų daug jums lengviau rašyti vaizdo kodą ir 1 iš šių pagalbinių funkcijų ar pagalbininkas moduliai yra apie rašymo formas. Rašyti formas, aš ne tikrai turi tiesiogiai rašyti jokių HTML save. Vaikinai buvo parašyta HTML formas. Jūs žinote, kaip jis gali būti tikrai, tikrai skausminga ir sudėtinga rašyti formas. Tai nėra įdomus, todėl, laimei, mes iš esmės gali rašyti forma, naudojant Kohana s sudaro pagalbininkas funkcijas padaryti už mus. Mes ketiname iš esmės turi laukus kiekvienas dalykas, mes turime, todėl vienas autoriams ir vienas įstaigų. Mes ketiname turėti etiketę, ir mes ketiname turėti įvestį. Ir pagaliau, mes ketiname turėti pasiūlymą. Ir, kaip matote, tai yra daug švaresnis rašyti kaip visi, kad nepatogus, HTML, kuris yra natūra gražus. Natūralu, kad yra kitų interneto sistemas, kurios dar švaresnis nei, kad bet bent jau tai yra geriau nei raštu HTML sau. Nuostabus, todėl tai, ką matote. Tai tipo nepatogus, todėl aš ruošiuosi pridėti eilutės lūžį čia padaryti, kad atrodo šiek tiek gražiau. Na, žinoma, ji vis dar atrodo tikrai, tikrai blogai, bet mes tik sutelktas dėl dabar, o ne funkcionalumą dėl estetikos. Nėra laiko padaryti viską. Ir, kaip matote, dabar mes turime super pagrindinę formą, kuris yra natūra gražus. Šis kodas sakyčiau yra švaresnis nei bando rašyti HTML formą sau, taip, kad malonu. Kas toliau? Dabar mes turime daryti tai, ko su veiksmais. Paprastai, kai rašote HTML formas, jūs turite pasakyti, kur jis ketina pateikti formą. Pagal nutylėjimą, dauguma interneto sistemas, ji tvirtina, kad į tą patį URL, todėl dalykas yra, jei jūs siunčiate GET užklausos / blog / naujas, ji turėtų parodyti jums formą, bet jei jūs siunčiate post prašymą / blog / naujas su duomenimis, ji iš tikrųjų turėtų pabandyti išgelbėti šias pareigas ir kažką daryti su juo. Ką mes ketiname daryti yra Iš esmės viskas, ką turime padaryti, kad patikrinti, ar tai po prašymas arba GET užklausos yra patikrinti, kas yra post kintamieji galite nustatyti. Ir jei po kintamasis, tada mes ketiname išbandyti ir sukurti naują įrašą. Vėlgi, mes tiesiog tai padaryti, ir sukuria naują įrašą, ir mes tiesiog ketina nustatyti savo laukus, kaip šis, ir tada mes ketiname išsaugokite jį. Ir tada aš ruošiuosi nukreipti į rodyklės puslapį, kad jie galėtų pamatyti mūsų etatų sąrašu vėl. Pabandykime tai. Pasakysiu "Brandon" ir tada pateikti pranešimą ir, jei viskas vyks gerai, kaip matote, ji nukreipti mane į rodyklės puslapį, ir jei aš pereikite prie dugno, turime naujai įdėtą įrašą. Yay! Taip, klausimas. [Studentų] Ką daryti, jei pateko į tą patį dalyką Jūs įvedėte anksčiau? Ar tai įsitikinkite, kad turite ne dubliuoti pats pateikimas? Būkite nutylėjimą, ne, nes pagal nutylėjimą - atsiprašau, klausimas yra, jei įvedate tas pačias duomenų forma ir teigia, kad ji leidžia jums įrašyti pasikartojantį objektą, dubliuoti įrašą, iš esmės? Dabar taip, tai leis jums tai padaryti, nes duomenų bazėse tai visiškai galioja turėti visiškai pasikartojančius eilutes, bet jei tai yra problema, tada jūs galite pridėti tvirtinti, pavyzdžiui, įsitikinti, kad, jei tai yra lygiai tas pats, kaip kažkas, kad jau egzistuoja, tada sako, kad tai negalioja objektas, ir tada jūs netgi galite nurodyti savo klaidos pranešimą ir sako: "Neteisinga, nes tai jau yra" ar kažkas panašaus. Tačiau šiuo atveju, galėčiau tiesiog sukurti kažką dublikatas. Dabar pabandykime ir pridėti keletą tvirtinti. Su šia problema dabar yra ta, kad Galėčiau tiesiog pateikti visiškai tuščią postą. Galiu spustelėkite šį mygtuką dabar, ir mes einame. Jūs tikrai negali pamatyti, bet šios papildomos eilutės čia rodo, kad aš tiesiog turėti naują postą. Jis tiesiog turi tuščią autorius ir tuščią kūną, ir mes nenorime, kad žmonės galėtų tai padaryti. Tai kur patvirtinimas Įgijusi Aš galiu eiti į savo modelio objektą, ir dabar aš galiu pridėti naują funkciją, kuri nusakytų, ką patvirtinimo taisyklės turėčiau pridėti prie šio modelio įsitikinkite, kad ji galioja, ar nurodyti, ką reiškia būti galiojantis pranešimas? Ir aš noriu pasakyti, kad tai tik galioja pranešimas, jei abu autorius ir kūnas yra tuščias, ir tai, kaip jūs jį Kohana. Jūs sukuriate naują funkciją pavadintą "taisyklės", ir tada jūs iš esmės grąžina masyvą kuris apibrėžia patvirtinimo taisykles šio objekto. Mes ketiname grąžinti masyvą, ir tada tai, ką mes ketiname daryti yra pasakyti "autorius," jis eina į masyvą, kurie vyksta į kitą masyve "tuščias". Ir tada aš ruošiuosi pasakyti "kūną". Gerai, o tai sintaksė ir struktūra, kad šis gali atrodyti šiek tiek sudėtinga ir šiek tiek sudėtinga. Jei skaityti dokumentus, tai gana paprasta išsiaiškinti, Bet iš esmės tai, ką jums reikia padaryti, norint nurodyti, kai tikrinimo taisyklės, ir yra įvairių taisyklių daug kad Kohana duos jums nemokamai, kaip jūs galite pridėti taisykles pasakyti jis turi būti bent ši ilgis. Gal ji turi būti skaitmeninis. Gal ji turi būti alfa skaitmeninis. Gal ji turi būti kuo šis ilgis, tt ir pan. Yra įvairių taisyklių daug, kad Kohana suteikia jums, ir jūs galite eiti į savo interneto svetainėje, pažvelgti į dokumentus, ir jūs galite pamatyti visas įvairių dalykų, kuriuos galite padaryti. Bet tai viskas, ką turite padaryti, o dabar pažiūrėkime, kas atsitinka, jei aš pateikti tuščią postą. Kas nutiks? O, ne, aš gaunu klaidą. Gaunu patvirtinimo išimtis. Na, tai gerai. Jis man pasakė, kad mano modelis yra neteisingas, bet aš nenoriu rodyti išimtį mano vartotojams, kai jie bando pateikti kažką neteisingas, tiesa? Aš noriu duoti jiems tam tikrą draugiškesnė klaidos pranešimą rūšiuoti kai kas nors negerai. Ką mes ketiname padaryti, tai mes ketiname wrap viską išbandyti sugavimo kilpą. Tiesą sakant, manau, kad tai yra kažkas, jūs ne išmokti dar į CS50, nes C programavimo kalba C neturi išimčių, bet beveik kiekvienas Kita kalba turi išimčių, todėl tikrai, tikrai trumpai, Išimtis yra kažkas, kad kodo dalis gali mesti išimtis, kai kažkas negerai, bet tada gal kai kurie kiti kodo fragmentą aukščiau galite sugauti šią išimtį ir kažką su juo. Pavyzdžiui, šiuo atveju, kodo gabalas, kuris bando išgelbėti modelį, tai patvirtina modelį, ir jei jis sako: "Gerai, šis modelis yra neteisingas" jis ketina mesti išimtis, ir tai yra rūšies lygiavertis C galite grįžti -1 arba kažką panašaus, kad. Ir tada man ši funkcija, mano kodas aukštesniu lygiu, galiu pabandyti ir sugauti šią išimtį ir iš esmės sako: "Gerai, jei aš sugauti išimtis, ką aš ketinu daryti?" Ar galėčiau pasirinkti ne sugauti, kad išimtį ir leisti kam nors aukščiau sugauti išimtis, arba jei niekas pakyla, tada visa programa sugenda ir sako: "Kažkas nutiko, ir aš negalėjo tvarkyti." Bet ką mes darome, yra jums wrap kodo gabalas pabandyti blokas, ir tada taip pat pridėti kažką vadinama laimikis blokas, tai kodo rūšiuoti, kad pabandyti ir sugauti išimtis, kurios gali atsirasti. Ir todėl, jei aš sugauti šią konkrečią išimtį arba negaliojančia išimtis, tada ką aš ruošiuosi daryti yra Aš ruošiuosi nustatyti klaidos - manau, kad tai, kaip tai padaryti - ir aš ruošiuosi nustatyti klaidas tam tikrą objektą. Ir tada, ką aš ruošiuosi daryti jei ji hitai šią išimtį, jis nesiruošia nukreipti, ir jei jis nėra nukreipti, jis ketina išeiti iš jeigu dienoraštyje ir paspauskite šis dienoraštis / naujas, kuris nori noriu daryti. Jei yra klaida, tada aš noriu grįžti į formą ir rodyti tuos klaidų. Dabar, ką aš noriu padaryti, tai aš noriu perduoti tų klaidų prie nuomonės. Gerai, manau, kad turiu nuomonę čia, ir iš esmės aš noriu parodyti tas klaidas, jei jie egzistuoja. Prieš rašyti už tai HTML, aš tikrai greitai parodyti, ką iš šios klaidos struktūra kintamųjų atrodo, ir tai yra gera praktika apskritai. Daug kartų jums kažką atgal nuo tam tikru metodu, kai kurie interneto sistemos funkcija, ir jūs nežinote ką kintamasis atrodo, todėl jums nereikia žinoti, kaip su juo dirbti. Aš ruošiuosi naudoti spausdinimo r metodą iš esmės jį atspausdinti. Ir kaip matote, jis man sako, tai asocijuota masyvas, ir jūs turite raktą, autorius nurodo, kad ši eilutė, autorius turi būti tuščias, o kitas raktas, įstaiga, atkreipia dėmesį į kitą eilutę, kūno negali būti tušti. Aš, pavyzdžiui, gerai, gerai. Tada galiu pakartoti per masyvo ir atsispausdinti kiekvieną žinutę. Tai iš esmės panašus į masyvą su pranešimais krūva. Ką aš ruošiuosi daryti: "Jei klaidos" ir aš norėčiau sukurti netvarkingai sąrašą ir aš ruošiuosi pakartoti per visus klaidų. Ir tai, ir dabar aš ruošiuosi pabandyti pateikti dar kartą, ir pažiūrėkime, ką mes gauname. Dabar mes gauti šią gražią sąrašą klaidų, ir tai yra dar gana bjaurus, bet tai akivaizdžiai gali būti suformatuotas taip, kad gražiai atrodo, tačiau pagrindinė idėja yra tik keletą eilučių kodo, mes galėjome patvirtinti mūsų modelį, įsitikinti, kad tam tikri laukai nebuvo tuščios, ir jei kažkas negerai, tada grįžkite kai klaidos pranešimą rūšiuoti Tada galėčiau pristatyti atgal į vartotojo. Jūs taip pat galite tinkinti patvirtinimo taip, kad jūs iš tikrųjų galite turėti klaidos pranešimą kad yra daugiau būdingi jūsų prašymą ar kažką panašaus, kad. Visa tai iš esmės keisti. Deja, mes bėga laikas, todėl aš ruošiuosi išjungti gyventi kodavimo seansą čia. Yra kitų funkcijų krūva, kad aš noriu parodyti jums šiame pavyzdyje. Pavyzdžiui, galite pridėti šablonus savo svetainę, tai gal yra tam tikrų HTML kodas rūšiuoti, kad norite taikyti į kiekvieną puslapį savo svetainėje, ir vietoj įdėjimo kad į kiekvieną vaizdo failą turite, kurios akivaizdžiai būtų bloga praktika, jūs iš esmės gali nustatyti šiuos šablonus, ir tada jūsų kontrolierius sako: "Gerai, aš naudoju šį šabloną." "Ar visi mano nuomonė naudoti šį šabloną." Ir paskutinis dalykas, kurį noriu parodyti jums, kaip gerai kad mes neturime laiko yra cross-site scripting, ir iš esmės manau, kad vaikinai tikriausiai matė ir CS50 - Manau Davidas Malan tikriausiai kalbėjo apie tai, kaip galite paprastai švirkšti JavaScript kodą į - jūs kalbėjote apie tai? Gal? Gal ir ne? Bet daug kartų, galite švirkšti kenksmingą JavaScript kodą į kažkieno duomenų bazę, ir jei jie negali išvengti, kad tinkamai tada, kai jie pateikia tuos duomenis atgal į vartotojo, tada jis gali paleisti kai kurių atsitiktinių JavaScript rūšiuoti nenorite, kad taip atsitiktų, ir aš buvau ketinate parodyti, kaip norite padaryti, kad per Kohana. Tai tikrai, tikrai, tikrai paprasta. Galėčiau tai padaryti dabar per 2 sekundes pažodžiui. Viskas, ką turite padaryti, tai iš esmės wrap šių dalykų Šiame dalykas vadinamas HTML trumpinius. Ir tai bus automatiškai pabėgti visus simbolius tinkamai ir įsitikinkite, kad jums nereikia gauti šią problemą. [Studentų] Jūs parašėte pirmąjį egzaminą neteisingai. [Brandon Liu] Oi, oi. Gerai, kad viskas aš pasidalinti su jumis šiandien. Šios skaidrės bus paskelbtas, tačiau jie paprastai yra vieninteliai ištekliai jums tikrai turėtų tekti pradėti Kohana. Jūs galite pereiti į svetainę. Jie vartotojo instrukciją, ir jie taip pat turi API Explorer. Mes galime ištirti visas skirtingas funkcijas ir pagalbininkas funkcijas jie turi už jus. Jie paprastai turi pakankamai informacijos apie svetainę kad galite naudoti norėdami pradėti ir pradėti žaisti su Kohana. Yra ne tai, kad daug samouczków, manau, už Kohana, už ką jie turi interneto svetainėje čia, todėl tai turbūt jūsų Geriausia. Bet jeigu jūs norite eiti su interneto sistemos ir jūs nenorite, kad pasiimti naują kalbą, ir tu nori kažką, kad yra gana lengvas ir turi lengvai mokymosi kreivė, Aš tikrai rekomenduojame Kohana. Tai turbūt geriausias siūlymas, kad. Juokingas dalykas, nors tai, jei mes buvome naudojant Ruby on Rails, galėtume pakartoti tai, ką mes ką tik padarė ir tikriausiai daugiau pagal 3 minutes. Ne juokai, bet mokytis Ruby on Rails trunka daug ilgiau nei ji imsis mokytis Kohana. Tai iš esmės jūsų pasirinkimas, ką norite pasirinkti mokytis, tačiau, jei norite gauti ir veikia greitai, Kohana yra tikrai labai geras pasirinkimas. Bet paskutiniai klausimai kol mes pabaigoje? Taip. [Studentų] Kaip mes integruoti, kad į CSS sistemą kaip jūs naudojate, kai buvo duodama? Kyla klausimas, kaip turėtume integruoti, kad su CSS sistemą? Ką mes tikriausiai padaryti, tai mes tikriausiai taip pat naujas aplankas, kur mes sąvartynas visus mūsų CSS failų, ir tada mes norime tai taip pat pridėti naują šabloną. Šablone mes norime įtraukti tuos CSS failų įsitikinkite, kad jie nuorodos į kiekvieną puslapį, ir tada, kai jūs iš tikrųjų rašote HTML, jūs tiesiog pridėkite atitinkamų klasių ir Papuošalą, ir, pavyzdžiui, kai jūs naudojate kažką panašaus formos pagalbininkas funkcija, galite pridėti daugiau parametrų vėliau nustatyti, kokie užsiėmimai norite būti pridedamas prie įvairių dalykų kad jie galėtų stiliaus tinkamai, ir kad iš esmės, kaip jūs einate. Visi kiti klausimai? Nuostabus. Dėkoju už sugaištą laiką ir padėkoti, kad atvykote. Aš nesiruošia pridėti labai daug kitu, bet 1 tikrai greitas dalykas mes neturime nuorodą į formą. Tikrai kvailas. Pridėkime - faktiškai nuomone, tinklaraštis, indeksas, tegul tikrai greitai pridėti nuorodą, kad eina į naują puslapį, puslapis, kur mes galime įterpti naują įrašą. Mes ketiname tai padaryti. Kas malonu yra yra visa ši grupė HTML pagalbininkas funkcijų kurie padaryti įvairių dalykų už jus, todėl jūs jau matė subjektus veikti čia, bet jie taip pat turi funkciją, vadinamą "inkaro" kurią galite įvesti dienoraštis / nauja ir sako: "Rašyti naują dienoraštį." Ir tai sudarytų šią nuorodą jums, ir tai atrodo tikrai trivialus daryti, bet tai yra gražus, nes manau, kad jūs judate savo svetainę iš 1 srities į kitą. Ir jei jūs tiesiog surašė URL sau, tada jums reikės pakeisti visus URL. O gal jūs persikėlė iš 1 pakatalogį į kitą katalogą. Jums reikės pakeisti visus šiuos URL sau, ir tai nėra smagu. Jūs galite naudoti šį inkarą čia, ir jūs galite pakeisti domeną ar poaplankio prefiksą konfigūracijos failą vieną kartą, ir tada ji bus taikoma, kad visur, ir tai, vėlgi, puikus pavyzdys, nereikia kartoti sau, džiovinimas kodą iš. Kur jūs kartoti sau, išbandyti ir išskirti kai konfigūracijos failo rūšiuoti arba į kitą funkciją ir jį tvarkyti, kad už jus. Ir paskutinis dalykas, aš norėjau parodyti jums buvo tarkime mes grįžome į šį postą, ir aš sudaro tikrai ilgą esė, bet aš pamiršau įtraukti mano autorius. Dabar, kai aš paspauskite mygtuką "Siųsti Post" Aš tiesiog prarado viską. Ne! Tikrai liūdna. Taigi, kaip jums kovoti su tuo? Tai, ką mes darome. Ką mes darome, yra čia šių įvesties ir teksto zonos funkcijas, jei mes įtraukti antrą parametrą, tada tos antro parametro vertę bus kas laukas bus iš pradžių užpildytos. Ką mes galime padaryti yra mūsų dienoraštyje valdytojas, galėtume įpareigoti kitą kintamąjį. Pavadinkite tai "vertybes" gal. Ir praeiti po masyvas, pažodžiui. Tai reiškia, kad, jei patvirtinimas nepavyko, pereina man po matrica, aš pateikti nuo paskutinio prašymo, ir tokiu būdu galiu naudoti reikšmes nuo paskutinio mano nuomone repopulate laukus. Dabar galiu padaryti kažką panašaus vertybių autoriui ir vertybės kūną, kaip dabar, jei aš šiek tiek atsitiktinių daiktų ir paspauskite mygtuką "Siųsti Post", tada jis lieka ten. Tačiau mes ketiname paleisti į kitą problema. Tai veikia, bet jei aš einu į puslapį, labai pirmą kartą, ji vyksta į avariją, ir tai todėl, kad pirmą kartą mes einame į puslapį, šis pranešimas kintamasis nebuvo nustatyta dar. Tai niekinis. Jis neegzistuoja. Ir ką mes norime pasakyti, jei raktas yra, tada grąžina šio masyvo reikšmę, bet jei rakto nėra, tada grąžina tuščią eilutę. Štai funkcionalumą mes norime čia. Norime patikrinti, ar raktas egzistuoja iki bando prieiti prie masyvo, ir pakankamai laimei, Kohana taip pat suteikia mums pagalbininkas funkciją, kad. Jie turi visą šį rinkinį funkcijų pagal pavadinimą ARR, trumpas masyvas, ir jie turi 1 funkcija vadinama "gauti" ir jūs galite pereiti į masyvą, ir jūs galite pereiti į rakto vardą. Tada iš esmės tai, ką jis darys tai bandys gauti tą raktą, bet jei tai raktas neegzistuoja masyvo, tada jis grįš Blankas, ar mes taip pat galite nurodyti numatytąjį, manau, kuris yra gražus. Dabar, jei mes tą patį padaryti ir vėl, tada pamatysite dabar ji dirba pirmą kartą aplink, ir vėl, jei mes tipo kai kurių atsitiktinių daiktų ir bandyti ir pateikti, tada jis lieka ten. Ir aš manau, aš taip pat gali parodyti jums, kaip pridėti šabloną tikrai greitai. Ką mes galime padaryti pirmiausia, mes galime pridėti naują vaizdą, vadinamą "template.php" per Rodiniai aplanką, ir ką aš ruošiuosi padaryti, tai aš ruošiuosi atsispausdinti kažką vadinama "turinys" kuris bus mano pagrindinis turinys. O gal ne pačioje apačioje Aš ruošiuosi įdėti, tarkim, autorinės teisės. [Nesigirdi studentas klausimas] [Brandon Liu] Gal tai super pagrindinio šablono aš noriu naudoti. Noriu turėti aplanką su mano autorių teisių į kiekvieną puslapį, ir dabar, ką aš ruošiuosi daryti per mano kontrolierius dabar vietoj sakydamas: "tęsiasi kontrolierius" Aš ruošiuosi pasakyti "tęsiasi Controller_Template" ir dabar, o ne sakydamas, "atsakas kūnas yra lygūs šiuo požiūriu," Aš ruošiuosi pasakyti, "tai šablonas turinys -" ir aš manau, - aš įdėti lygybės ženklą? Aš pamirštu. Taip, aš taip maniau. Ir dabar aš nustačiau, kad turinys kintamasis prilygti vaizdą. Galiu padaryti pats čia. Ir dabar, jei aš atnaujinti, jūs galite pamatyti dabar tai autorių teisės yra pridėta, ir tiesiog padaryti šiek tiek Atsitiktinis užrašas, ir tada vėl, jūs turėtumėte pamatyti, kad autorinės teisės yra pačioje apačioje. Puiku. Tai viskas, ką norėjau parodyti jums, vaikinai. [Plojimai] Turite klausimų? [CS50.TV]