[Seminārs] [Kohana: Vieglie PHP pamatprogramma] [Brandon Liu] [Harvard University] [Tas ir CS50.] [CS50.TV] Hi visiem. Mans vārds ir Brandon. Es esmu jaunākais šeit koledžas darot datorzinātnes, un šodien mēs esam gatavojas runāt par Kohana, kas ir PHP web izstrādes ietvaros. Šodien būs dzīvot kodēšanas seminārs, tāpēc es esmu būtībā gatavojas pavadīt 5-10 minūtes izskaidrot, ko Kohana ir, un tad es esmu burtiski gatavojas būvēt super vienkāršu blogu jums šeit burtiski no nulles. Mēs ejam, lai lejupielādētu kodu Kohana mājas lapā, un mēs esam gatavojas sākt veidot blogu, un cerams, ka tas būs ļoti pamācošs, jo jūs redzēsiet varbūt varbūt es ņemšu veikt dažas kļūdas, un jūs redzēsiet mani atgūties no tiem, vai jūs redzēsiet manu domāšanas procesu, kā es veidot, izmantojot šo emuāru, un tikmēr, jūs arī iepazīties ar sistēmu pati. Cerams, ka tas būs ļoti pamācošs pasākums. Pirmkārt, kas īsti ir pamats? Ja esat lietojis CS50 līdz šim, jums nav īsti strādājuši ar kādu sistēmas vēl, un lieta ir tā. Jūs, iespējams, izdarīt 1 web izstrādes PSET jau un pieņemsim, ka jūs turpināt veidot tīmekļa vietnes un saglabāt ēkas mājas lapas. Jūs sākat pamanīt dažas lietas. Pirmā lieta, jūs ievērosiet, ka jūs, iespējams, darīt to pašu lietas atkal un atkal visu laiku, lietas, piemēram, tīrīšanas lietotāja ievades datiem, lietas, piemēram, organizējot failus noteiktā veidā. Otra lieta, jūs arī, iespējams, ievērosiet, ka jūsu kods var sākt kļūt ļoti, ļoti netīrs, un jūs varat atstāt to netīrs, un vienkārši ir ļoti grūti uzturēt, vai jūs varat sākt, lai strukturētu savu kodu un padarīt to modulāro noteiktos veidos, lai padarītu to vēl uzturams. Tas ir, ja web sistēmas pamatā ienāca Šie cilvēki, kas bija būvēts daudz mājas lapas, viņi teica, "Mums nav nepieciešams pārtaisīt šo katru reizi, kad mēs izveidotu tīmekļa vietni." "Kāpēc ne mēs tikai veikt kompleksu, kas dara visas šīs lietas jums katru reizi, kad jūs vēlaties, lai izveidotu tīmekļa vietni? " Un tā, ka tad, kad jūs veicat jaunu tīmekļa vietni, jūs tikai koncentrēties uz to, ko tieši šī konkrētā mājas lapa ir about. Jums nav nepieciešams atkārtot visu dažādas konfigurācijas un kodu atdalīšana un pārrakstīšanu kodu ka jūs bieži vien ir jādara, ja jūs gūstat mājas lapas. Ideja ir tāda, ka sistēma ļauj rakstīt augstāka līmeņa kodu neraizējoties par zemāka līmeņa informāciju. Zemāka līmeņa detalizācijas varētu būt kaut kas līdzīgs nodarbojas ar tīrīšanas lietotāja ievades datiem. Tas ir kaut kas jums nav īsti jāuztraucas par. Jums vajadzētu koncentrēties uz to, ko jūsu interneta piešķīrums ir faktiski par. Tas novērš daudz tekstveidnes kodu. Tā ir arhitektūra, lai savam projektam. Populārākajām vienu, būtu Model-View-Controller, ko es esmu gatavojas runāt par sekundē. Un daudz reižu šīs sistēmas iemieso procedūru kopumu, noteikumi, un labāko praksi, lai jūs varētu izmantot tā, ka tad, kad jūs pieņemt web sistēmu jums ir rakstīt savu kodu kādā noteiktā veidā, un tas ir vispārēji vienojušies darbības principi ko sabiedrība, kas parasti tiek uzskatīta labs veids, rakstot kodu. Tas padara jūsu kodu vairāk uzturams, vairāk izmantojami, tā tālāk, un tā tālāk. Un visbeidzot, lieta, ko es gribu uzsvērt par sistēmām pret bibliotēkām ir ideja par inversijas kontroles, un lieta ir tā. Atšķirība starp bibliotēku un sistēmu ir tā, ka ar bibliotēku jūs joprojām rakstiski galvenās programmas, un jūs esat veida atsaucoties uz bibliotēku un aicinot uz bibliotēku, lai darīt kaut ko par jums. Atšķirība starp bibliotēku un sistēmu ir tā, ka sistēma sākas ar kontroli, un tas atsaucas uz savu kodu, lai jūs varētu domāt par to kā - tas ir iemesls, kāpēc to sauc sistēma - sistēma nodrošina šo ietvaru un struktūru jūsu kodu, un jūs aizpildīt caurumus, un tas kļūs skaidrs sekundē ja redzat man sākt rakstīt kodu kontekstā ietvaros. Jūs redzēsiet, ka es esmu, aizpildot trūkumus, un sistēma ir sava veida kontrolēt visas kustīgās gabalus, un man ir jānoliek gabalu pareizajās vietās. Šodien mēs nokļūsim līdz runāt par Kohana, kas ir viens no daudziem PHP sistēmu. Ir web sistēmas, un tur ir tie, kas praktiski katru vienā valodā, un es esmu picking Kohana jo Kohana ir apstrīdami un vispārēji atzīta kā vienkāršākais PHP sistēmu uzņemt. Tas ir visvairāk viegls. Ir arī citi tiem, kas tur, kas nāk ar daudz, daudz vairāk funkcijas, bet tie mēdz būt grūtāk uzņemt. Un visbeidzot, Kohana izmanto MVC arhitektūru. Tas ir pietiekami viegls, lai mēs spētu izveidot projektu šeit tieši priekšā jūsu acīm, un jūs varat diezgan daudz sekot līdzi diezgan viegli. Kas ir MVC arhitektūra? Tas nozīmē Model-View-Controller, un varbūt, ja jūs domājat par to kodu, jūs esat rakstiski līdz šim daži no jūsu interneta attīstības psets Jūs, iespējams, var redzēt dažus no šī, bet parasti, kad sākat rakstīt sarežģītāka tīmekļa lietojumprogrammu, sadalījumu starp šīm 3 segmentiem kļūst arvien vairāk un vairāk acīmredzama. Es izklāstīts MVC šeit veida kā kaudze, un bieži vien jūs dzirdat cilvēki runā par kaudzēm interneta attīstību, un tas ir ilustrēt domu, ka katrs slānis, katru sastāvdaļu patiešām cenšas tikai sazināties starp 2 citiem komponentiem. Kāds piekļūst jūsu mājas lapā, kā klientu vai pārlūkprogrammu. Tie mijiedarbojas ar savu programmu, izmantojot skatu kodu. Skats kods mijiedarbojas ar kontrolieri. Kontrolieris mijiedarbojas ar modeli, un modeļa mijiedarbojas ar SQL datu bāzi. Un nav lēciena no, ja jūs rakstīt savu kodu pareizi. Ko šīs lietas darīt? Modelis būtībā ir gabals kods, kas nodarbojas ar jūsu datiem. Jebkas, kas nodarbojas ar savu datu bāzi, ar objektiem, ka jūs uzglabāt, vai ielādējot šos objektus datu bāzē, tas viss strādājot ar modeli. Varbūt jums ir objektus jūsu datu bāzē. Mēs spēsim izveidot modeli, kam sakars ar amatiem, tāpēc post var būt dažas īpašības, lai to. Jums var būt funkcijas ap uzglabāt šos amatus vai ielādējot amatus vai filtrēšanas amatu un tā tālāk, un tā tālāk, un tas ir viss kods, kas ir apstrādāti ar modeli. Kontrolieris ir sava pieteikuma loģikas, un daudzas dažādas lietas var iet pieteikuma loģiku. Ja jūs runājat ar atšķirīgu API, , kas var būt, ja jums ir darīšana ar pieteikumu loģiku. Ja jūs mēģināt, lai būtu ievest datus no vairākiem dažādiem modeļiem un ir apvienot tos kaut kādā veidā, kas bieži vien var apstrādāt kontrolieris. Piemēram, Facebook, ja jūs draugs kāds, tad varbūt, ka akts nosaka, ka attiecības var veikt kontrolieris. Un visbeidzot, skats ir kods, kas ir radīt to, ko jūs faktiski redzēt. Daudz reižu es domāju, ka CS50 psets tie nav īsti aicinām jūs guys, lai atdalītu šīs 3 lietas. Jūs, iespējams, ir šo lielo, garš faila kur augšā Jūs veikt dažas SQL vaicājumu, un varbūt tie daži pārstrādes uz datiem, kas iegūti no datubāzes, un tad jums ir visas jūsu HTML apakšā. Un jūs varat atrast, ka jums izveidot vairāk un vairāk lapas ka jūs gatavojas ir dažas koda atkārtošanos, kā arī, lieta ir fails kļūst ļoti liels un garš un kļūst smagnēja pārvaldīt. Iemesls, kāpēc MVC ir tik labi uzskatīt ir vairāku iemeslu dēļ. Pirmā lieta ir kaut ko sauc atdalīšana bažas kas ir ideja, ka, ja jums ir - ideāli 1 gabals koda vajadzētu darīt 1 lieta, un darīt to ļoti labi, un jums nevajadzētu apvienot gabalu kodu, kas darīt atšķirīgas lietas. Piemēram, skatīt kodu un modeļa kodu, tie nav īsti jābūt saistītiem. Viņiem nav jābūt pašiem failiem, tad, kad jūs varat, atdaliet tos ārā tāpēc ir viegli uzturēt. Otra lieta ir koda atkārtotu. Jūs varat atrast sev rakstot to pašu SQL vaicājumu, vai darot līdzīgi vaicājumi, kas varētu novadītā uz 1 funkciju, un tas ir ideja modeļu un kontrolieriem, kam to atsevišķu funkciju, kas jūs varētu atkārtoti izmantot dažādās vietās jūsu projektā. Un visbeidzot, kas ir saistīts ar žāvēšanu savu kodu, vai ne atkārtojot sevi, neatkārtot sevi. Tas ir ļoti saprotama attīstībā. Ikreiz, kad jūs varat, jūs nevēlaties atkārtot sevi, jo, ja jūs atkārtot sevi,  tas ir daudz dārgāk uzturēt. Ja Jūs vēlaties mainīt 1 lieta, jums ir mainīt to visur, un kas noved pie kļūdām, un tas ir briesmīgi. Visas tiesības. Kādi jautājumi līdz šim par Kohana vispār? Lieliski. Tagad mēs esam gatavojas nodoties dzīvot kodēšanas sesijā un cerams, ka viss iet labi. Es esmu gatavojas būtībā veidot šo mājas lapu par vienu no maniem attāliem serveriem, un tādā veidā jūs guys var arī skatīt mājas lapā un piekļūt mājas lapā, un arī vide ir labāka konfigurēts nekā mana tālvadības iekārtu, jo tas darbojas Linux nevis OS X. Mēs burtiski gatavojas sākt. KohanaFramework.org. Es esmu gatavojas lejupielādēt kodu no mājas lapas. Es esmu gatavojas kopēt saites adresi, iet uz mana servera, lejupielādēt to, un es esmu gatavojas iegūt to. [Student] Kāds ir lielākais varat veikt tekstu? [Brandon Liu] Vai tas ir labāk? [Student] Vai tas ir izdarāms? [Brandon Liu] Jā, tas ir jauki. I lejupielādēt ZIP failu un unzipped kas stājas direktoriju sauc Kohana, un mēs ejam, lai pārdēvētu šo CS50-Kohana, un iesim iekšā Awesome. Šeit jūs redzat ķekars dažādiem failiem. Lielākā daļa no jums var ignorēt - we're nav gatavojas iet caur katru failu, kas ir šeit jo mūsu laika ierobežojumu, bet parasti, kad jūs instalēt Kohana, pirmā lieta, jums jādara ir doties uz direktoriju, un jūs būtībā darīt dažas vides pārbaudes un plauktiņš lai pārliecinātos, ka jūsu vide ir pareizi iestatīts darboties Kohana un pārliecinieties, ka viss ir kārtībā. Jūs varat redzēt, lielākā daļa lietas pagājis, bet parasti jūs vienmēr satikt šajā 1 problēmu ja tā pārmet, ka daži direktorijā nav rakstāma, un tas ir tāpēc, ka daži atļauju. Es nezinu, cik daudz jums puiši ir iemācījušies par failu atļaujas, kas CS50, bet, ja jūs darāt web izstrāde, jūs gatavojas uzskriet šo jautājumu daudz. Es esmu gatavojas darīt to rakstāma un es domāju, ka man arī ir - tur mēs ejam. Labi, tāpēc tagad jūs varat redzēt visu pagājis, un tagad tas jums pateiks, lai pārdēvētu failu install.php. Es esmu gatavojas pārvietot install.php failu installed.php, un tagad, ja es atsvaidzināt, tas dod man kļūda, un tas ir, ja atkļūdošanas nāk collas Tas ir, ja jūs varat redzēt, kas patiesībā notiks. Lieta ir, pēc noklusējuma, Kohana pieņem, ka jūsu projekts ir saknes direktoriju jūsu domēnu, tāpēc tas ir gaida, lai jūs būt demo.brandonkliu.com. Mums ir pateikt to, ka tas ir faktiski apakšmapi. Tas ir apakšmapi sauc CS50 Kohana. Lieta ir, tas ir kļūdaini interpretē CS50-Kohana kā kaut kas cits, ko es paskaidrošu jums sekundē. Bet es jums saku, tas ir kaut kas ir sagaidāms. Ko mēs gatavojamies darīt, ir, mēs ejam, lai dotos uz šo mapi sauc bootstrap.php, kas ir konfigurācijas mape, kurā daudz dažādas lietas, ir izveidota. Es atvērt, ka līdz. Tad varbūt viena no pirmajām lietām, ko es ņemšu darīt, ir mainīt laika zonu. Un tad paskatīsimies. Aha! Tieši šeit. Ir ķekars dažādas konfigurācijas teicieni šeit, bet viens es esmu meklē tas ir lieta, ko sauc bāze URL, un pēc noklusējuma es saņemt to, kas ir Kohana, bet es esmu gatavojas mainīt, ka, lai CS50-Kohana, un es domāju, ka vajadzētu noteikt to. Jā, lieliski. Pēc noklusējuma, lai pārliecinātos, ka tas strādā, tas saka: "Hello World". No kurienes tas nāk no? Kā mēs to Hello World? Kur tieši ir kods, kas faktiski rakstīja, ka? Lai saprastu, ka es ieviest šo koncepciju sauc maiņu. Diezgan daudz visas mājas sistēmas ir jēdziens, ko sauc par maršrutēšanu, kas ir gabals programmatūru, kas vēros noteiktu URL lai noteiktu gabals koda ietvaros jūsu sistēmā. Piemēram, ja jums ir kāda URL un doties uz kādu URL, piemēram foo.com / blog / visi tad kāda sistēma ir gatavojas darīt - vai vismaz to, kas Kohana gatavojas darīt - tas notiek, lai atrastu klasi sauc kontrolieris blog, un tas notiek, lai palaistu funkciju nosaukts darbību visu. Es zinu, es runāju par klases un funkcijas, un es zinu, jūs guys nav ietverti klases un funkcijas in CS50 vēl, bet tagad, Jūs varat domāt par klasēm, kā tikai grupas funkcijas, veids, kā grupēšanas funkcijas kopā. Tas tiešām viss, kas jums ir nepieciešams zināt. Tagad, ja mēs skatāmies uz mūsu mapju struktūru, iekšpusē pieteikumu mapē ir vēl viens mape ar nosaukumu nodarbības, un citas mapes sauc kontrolieri un modelis. Ja paskatās iekšā Controller mapi, mēs redzam, ka ir failu sauc Sveicināti, un jūs varat redzēt šeit ir klasi sauc Controller Sveicināti, un ir funkcija, ko sauc par rīcības Index, un ko tā dara, ir tā nosaka ķermeņa reakcijas uz Hello World. Tas ir, ja kods tiek rakstīts. Otrs jautājums ir, labi, es negāju blah, blah, blah, / welcome / index. Kā es galu galā šeit? Nu, tas ir tikai tāpēc, ka šeit apakšā mūsu bootstrap failu ja mēs, kas mūsu ceļu Jūs varat redzēt, ka tie, kas dažas noklusējumus jums. Noklusējuma kontrolieris ir apsveicami. Noklusējuma darbība ir rādītājs. Tāpēc, kad mēs ieliekam nekas tur tas automātiski devās uz starta kontrolieri un indeksa darbība. Viss jēga tik tālu? Tagad jūs varat darīt vairāk nekā tikai iet uz Controller un konkrēta rīcība. Jūs varat arī pāriet parametriem kontrolieris. Tāpat kā, piemēram, Es esmu gatavojas, lai pievienotu citu rīcību, lai šo kontrolieris, lai parādītu jums. Sauksim šo darbību Echo, jo tas notiek, lai jums pastāstīt, ko jūs arī tā, un tāpēc es esmu būtībā gatavojas sagrābt parametrs, kas notiek jāsūta caur mani maršrutēšanas programmas un, kā jūs varat redzēt šeit, šī līnija tieši šeit, jūs varat redzēt, ka Tas būtībā nozīmē, ka jums ir kontrolieris, un jums ir /, un jums ir rīkoties, un jums ir vēl /, un tas būs parametri, un tāpēc, ka mēs esam šo vārdu ID leņķveida iekavās, tas nozīmē, ka mēs esam nosaucot šo parametru ID. Vēlāk manā kontrolieris kodu, ja es gribu, lai greifers turēt šo parametru, Es varu izmantot kodu es uzrakstīju, atrast parametru nosaukts ID. Tas ir tas, ko es darīju šeit, un es esmu gatavojas atgriezties un teikt, "Jūs teicāt, ka". Un tāpēc tagad, ja es dodos uz mūsu mājas lapā, Es eju uz cs50-kohana/welcome/echo/Helloooo-- Ak, tas ir labi. Ir 1 solis, es izlaist. Tā ir daļa no dzīvu kodēšanas ideju. Lūk 1 lieta. Paskatīsimies. Tāpēc parasti pēc noklusējuma ar daudz no šiem tīmekļa lietojumprogrammas Jums ir iekļaut šo index.php lieta jūsu URL, jo ideja ir index.php ir sava veida ieejas punkts savu pieteikumu, bet, protams, tas ir sava veida kaitinošas, lai būtu. Jūs nevēlaties, lai būtu index.php parādās jūsu URL, un diezgan daudz katru web sistēmu no kastes ir šī index.php problēmu, , un tāpēc jums ir veikt dažus pasākumus, lai spētu noņemt to. Un tādēļ šajā gadījumā ko mēs gatavojamies darīt, ir, mēs spēsim izmantot failu ar nosaukumu. htaccess, un tas ir kaut kas, kas ir raksturīgas Apache web serveri, un to var darīt lietas, piemēram, pārrakstīt URL un novirzīšanas URL, un tā tālāk, un tā tālāk, un Kohana ir jauka pietiekami, lai nodrošinātu veidni. htaccess failu, ka mēs varam izmantot. Kā jūs varat redzēt, tur ir fails tur sauc example.htaccess, un mēs ejam, lai kopētu, ka, lai. htaccess. Es esmu gatavojas atvērt to un rediģēt to, un būtībā tas ķekars dažādas lietas. Galvenais līnijas jūs varat apskatīt, ir tieši šeit. Ideja ir tāda, ka tas izveido noteikums, kas saka, "Labi, ko jūs tipa, prepend index.php ar to." Jūs varat redzēt, ka. . * Nozīmē kaut ko, atbilst kaut ko, un pēc tam otrā daļa ir index.php / $ 0, un $ 0 attiecas uz kāda tika saskaņota iepriekš. Vai tas ir jēga? Bet patiesībā galvenais, ko es gribu mainīt, ir mainīt šo pārrakstīt bāzi, kas ir URL bāze. Tā veida pieņemts, ja jūs strādājat no. Es esmu gatavojas pievienot CS50 Kohana to, ka, un ka jau tagad, ja es noņemt index.php, tas ir darbs, un es esmu gatavojas pievienot dažus numurus lai parādītu, ka tas patiešām bija darbs. Izklausās labi. Kādi jautājumi līdz šim? [Studentu] Kā tas jāzina, lai 123? Ir tas, ka arguments? Tieši tā. Jūs varat domāt par to, tāpat kā argumentu. Bet dīvaini lieta, lai gan, ir tas, ka ceļš Kohana to dara ir tie nav darīt to tieši tā, kā argumentu. Jums ir, lai greifers to, kā šis. Jums ir greifers pieprasījuma objektu un lūgt parametra, kas ir nosaukts ID, un šis nosaukums ID nāk no šī sāknēšanas faila ka es parādīja iepriekš, un vārds ID Šajos leņķa iekavās, un tas, kā jūs greifers tos parametrus. Awesome. Kādi citi jautājumi? Tāpat kā es teicu, kontrolieri, viņi rīkojas pieteikumu loģiku, tā, ka ir 1 gadījums, kad jūs varat redzēt That - tas ir ļoti vienkāršas, bet tas joprojām ir pieteikumu loģika, ideja satveršanas parametru un izveidot jaunu virkni ka saka: "Jūs teicāt, blah," un tad spļaut, ka atpakaļ uz jums. Un vispār, kas jums jādara, ir jums izveidot dažādas kontrolieriem. Jums izveidot atsevišķu kontrolieri dažādām daļām jūsu mājas lapā. Šodien mēs esam gatavojas veikt ļoti vienkārša mājas lapa, un tas būs ļoti vienkāršas blog. Mēs ejam, lai izveidotu jaunu kontrolieri tikai par amatiem blogu. Bet tad, ja es būtu arī pievienot komentārus blog post, tad es, iespējams, vēlas, lai izveidotu jaunu kontrolieri piezīmēm. Ja es gribēju pievienot lietotājus, es, iespējams pievienot jaunu kontrolieri tiem lietotājiem, un vispār, doma ir tāda, ka, ja jums ir jauns modelis, jaunu datu objekts, kas jums ir darīšana ar, Jums ir vienu kontrolieri šo datu objektu. Šodien mēs esam tikai gatavojas strādāt ar 1 datu objekts, un tas būs posts, , un arī jūs varat domāt par datu objektiem kā atbilstošs tabulas. Parasti katra tabula atbilst 1 tipa datu objektam, tāpēc post galda būs 1 post modeli, kas ir 1 post kontrolieris atbilst tam, un pats par komentāriem, pats lietotājiem, un tā tālāk, un tā tālāk. Un tas ir vispārējs noteikums īkšķis. Tur būs īpaši gadījumi, kad jums var atšķirties no tā, bet 90% no laika, kas ir tas, ko jūs gatavojas darīt, un es jums parādīs, ka tas, ko mēs gatavojamies darīt šodien. 1 vairāk koncepcija pirms mēs nodoties atpakaļ kodu, šī ideja par objektu relāciju kartēšanu. Jūs guys jau darīts web izstrādes PSET, un jūs esat redzējis, ka jums veikt SQL vaicājumu, un neatkarīgi no tā atgriežas pie jums ir rindas. Jūs saņemsiet šīs rindas, un jūs indekss tos ar kādu nosaukumu, nosaukums kolonnas un tabulas, un tas, kā jūs strādājat ar to, un tas var būt mazliet apgrūtinoša. Bet, turklāt, ja jums ir attiecības savā datu bāzē, kā, piemēram, ja man ir komentāri un ziņas, tad varbūt es gribu, lai greifers mātes amatu komentāru. Ja es izmantot tikai rindas SQL, tad viss, ko es varētu saņemt, ir ID mātesuzņēmuma amata un nevis faktisko post pati. Bet, kad mēs esam kodēšanas, ko mēs patiesībā gribam, ir faktiski sagrābt  mātes post pati reizēm. Kas objektu relāciju kartēšanu tas ir tas aizņem Datubāzes vaicājumu rezultātus un nodod to objektiem, lai jūs, kas ir daudz jaukāk strādāt nekā plain bloki un rindās. Piemēram, tagad, kad man ir komentārs, iespējams, un es gribu, lai greifers tās mātes amatu, un man varbūt komentēt arrow amatu, tad tas faktiski dod man post objektu kas atbilst faktiskajam mātes pastu, ne tikai daži ID, ko es citādi būtu izmantot un veikt vēl vienu SQL vaicājumu, lai greifers amatu, kas ir apgrūtinoša un nevajadzīga. Un turklāt, apzinot visus šos datu rindas uz objektiem, Jūs varat arī pievienot vairāk funkciju objektiem, tā, piemēram, es runāju par to, kā nodarbības būtībā grupējumi funkcijas. Jūs varat domāt par to, piemēram, ka. Piemēram, varbūt man ir šo ziņu objektu, un varbūt es gribētu, lai būtu sava veida funkciju veida, kas tai pievienoti , kas būtībā saka man tas bija nesen ievietojis? Tā tika publicēta pagājušajā nedēļā, patiess vai nepatiess? Un tas ir funkcija, es varu pievienot uz šo objektu, un tas ir patiešām ērti, lai to tajā pašā vietā, un tur ir milzum daudz dažādu funkciju, jūs varat izveidot par šiem objektiem, un tas ir patiešām jauki, lai varētu pievienot to klasi, uz objektu, bet, ja jūs tikko bija rindas, kas nāk no jūsu datu bāzē, tad jūs nevarat īsti pievienot jebkuru funkcionalitāti, kas. Tas ir burtiski tikai dati. Visus jautājumus par to vispār? ORMs ir ļoti bieži web izstrāde, un ir daudz dažādu veidu ORMs, un Kohana ir savs ORM. Tas ir ļoti vienkāršas, bet jūs saņemsiet garšu, kā tas izskatās. Pieņemsim izveidot modeli mūsu blog posts, un pirmā lieta, mums, protams, ir jādara, ir, lai izveidotu faktisko tabulu mūsu datu bāzē, lai faktiski uzglabāt savus datus par šiem amatiem. Pirmā lieta, ko es esmu gatavojas darīt, ir doties uz phpMyAdmin. Vai jums puiši izmanto phpMyAdmin pirms? Labi, laba, lai jūs guys jau zināt, kas tas ir, un es esmu gatavojas izveidot jaunu tabulu sauc Kohana Raksti, un tas būs ļoti vienkārši. Es ņemšu, lai pieteiktos atpakaļ collas Viss, ko mēs gatavojamies darīt, šodien ir autors un ķermeni, tikai glabāt to vienkārši. Es esmu gatavojas, lai izveidotu šo tabulu, un tagad mēs vienkārši ir tabula, kas pārstāv mūsu posts ar 2 laukus mūsu autoru un mūsu organismā. Cita lieta, ko es esmu gatavojas darīt tagad, ir konfigurēt savu tīmekļa lietojumprogrammu, lai tā zina, kā izveidot savienojumu ar datu bāzi, un tas atkal ir kaut kas jums ir jādara ar visiem tīmekļa lietojumprogrammas. Jums ir pateikt to lietotāja vārdu un paroli un datu bāzes nosaukumu un tā tālāk, un tā tālāk izdomāt, kā to faktiski savienojumu ar savu datu bāzi. Ir Kohana, mums ir kaut kas ko sauc par datu bāzes modulis, un konfigurācijas mapē mēs esam šo mapi sauc par datu bāze, un, kā jūs varat redzēt, ir ķekars iestatījumiem ir noteikt šeit pateikt to, kas ir lietotāja vārds un parole par datu bāzi, lai es patiesībā var izveidot savienojumu ar to. Un tā kā es nevēlos, lai jūs guys tiešām zināt lietotāja vārdu un paroli manu datu bāzi, Man ir fails, kur es jau, kas to visu, un es esmu gatavojas kopēt un ielīmēt to vairāk. Awesome. Labi. Es domāju, ka tas viss konfigurācija man jādara, bet pieņemsim redzēt. Mēs turpināsim strādāt tajā, un, ja kaut kas atteici, tad mēs salabot. Tagad tas, ko es esmu gatavojas darīt, ir es esmu gatavojas izveidot jaunu kontrolieris. Vai tiešām, sorry. Vispirms man ir, lai izveidotu jaunu modeli. Es izveidot jaunu modeli, ko sauc par Post.php, un ko mēs gatavojamies darīt, ir, mēs ejam, lai izsauktu to klasi Model_Post. Get daži sintakse izceļot uz, un tad, kad es saku, "paplašina ORM", kas ir pamatā daži vairāk objektorientētā programmēšana, kas diemžēl jūs guys nav iemācījušies CS50 vēl, bet tas ir diezgan viegli uzņemt. Tas dod man visu šo papildu funkcionalitāti, kas nāk šajā ORM paketē, un tāpēc man ķekars papildu funkcijas un plauktiņš par brīvu, ko jūs redzēsiet mazliet sekundē. Tieši tagad tiešām viss, kas man jādara, ir izveidot šo klasi. Man nav pat nepieciešams veikt jebkuru funkciju vai kaut ko, bet es esmu izveidojis klase, kas attēlo tabulas, un tāpēc, ka es esmu pagarināt šo ORM klasē, Man ķekars lietas par brīvu, tāpēc tagad jums nav noteikt kaut ko vairāk uz augšu. Un tagad to, ko es esmu gatavojas darīt, ir es esmu gatavojas izveidot jaunu kontrolieri, ko es esmu gatavojas nosaukt blog.php, un es esmu gatavojas kopēt pār Welcome kontrolieris tāpēc man nav atkārtojiet daži sīkumi, un tagad man ir pārdēvēt to. Tagad tas, ko es esmu gatavojas darīt, lai pārbaudītu, lai pārliecinātos, ka viss strādā out, Es esmu gatavojas greifers pirmo ierakstu no manas bāzē un izdrukāt ķermeņa pastu uz ekrāna. Lai to izdarītu, ka tas, ko es esmu gatavojas darīt vispirms, ir es esmu gatavojas, lai saglabātu amatu mainīgā tā, ko mēs gatavojamies darīt, ir - in Kohana, ko jūs darīt, ir, lai greifers post objektu tas ir sava veida apgrūtinoša, bet jums ir darīt šo lietu sauc par ORM :: rūpnīcas, un tad jums iet ar nosaukumu modeli, kuru vēlaties, un tas atgriež ORM objektu, kas pārstāv šo modeli. Un tad, kā jau teicu, kad mēs paplašināt ORM objektu, mēs visas šīs metodes par brīvu, tā, piemēram, mēs iegūtu šo jauno funkciju sauc par "atradīsiet visu," kas automātiski atgriežas katru amatu bāzē, kas ir diezgan ērti. Un tagad organismā es esmu gatavojas atgriezties Pirmais post un atgriezties savu ķermeni. Un, protams, man ir nepieciešams, lai izveidotu ziņu, tāpēc pieņemsim ievietot jaunu post. Es saku: "Brandon, mana pirmā pastu." Awesome. Un tagad mēs esam gatavojas doties uz blogus un, ja viss strādā labi - ak, tas ir kādu citu mēms failu atļauja lieta vēlreiz. Turiet par 1 sekundi. Tas ir sava veida absurds. Tur mēs ejam. Labi. Es noteikti šo atļauju problēmu. Tā centās radīt dažus failus un kādu žurnālu, un atļaujas, atkal nebija pareizi uzstādīts, tāpēc es to tā, ka šie faili ir rakstāms un izpildāmā tāpēc tas patiešām varētu pieteikties uz lietām. Tagad tas dod man vēl vienu izņēmumu sakot, "klases ORM nav atrasts," un tas ir tāpēc, ka es aizmirsu vēl viens solis. Tas ir pārāk slikti. Jo sāknēšanas mapju fails ir šie moduļi šeit, ko jūs varat izvēlēties iespējot vai atspējot. Tie ir ķekars dažādas pazīmes, ka jūs varat izvēlēties, lai izmantotu ietvaros Kohana, kas ir sava veida jauki. Piemēram, viņiem ir autentifikācijas moduli kuru jūs varat izmantot autentiskumu lietotājiem. Viņi ir caching moduli, ja jūs vēlaties, lai īstenotu daži caching atpakaļ beigām, lai padarītu pieteikumu darbu ātrāk un plauktiņš kārtošanas. Mums ir nepieciešams, lai ļautu datubāzi un ORM moduli, jo kā jau teicu, mēs, izmantojot datu bāzi, protams, un mums arī ir nepieciešams, lai ļautu ORM moduli, tāpēc, ka mēs gribētu, lai būtu papildu funkcionalitāti, kas ir jauki, ir. Viss, kas man ir jādara, ir uncomment šiem 2 līnijas, un tagad, ja es atsvaidzināt, tas man deva vēl vienu kļūdu. Tā saka: "Model_Post Klase nav atrasts." Tagad tas ir labs problēma ir. Paskatīsimies. To publiskot. Nē Pagaidi. Ak, mīļā. Es nezinu, kāpēc tas nav iespējams atrast to. Tas ir tiešām dīvaini. Man ir šīs klases šeit. Es domāju, es varētu būt - oh. Es esmu tik mēms. Es aizmirsu pievienot PHP tagu. Tas ir iemesls, kāpēc. Tagad man ir, lai atsauktu, ka 1 maiņa es vienkārši darīju. Labi. Tur mēs ejam. Tas bija tiešām muļķīgi. Man nebija atvēršanas PHP tagu. Bet kā jūs varat redzēt, tagad tas strādā pareizi, vai ne? Mums ir 1 post. Mēs satvert pirmo ziņojumu, un tagad mēs izdrukāt savu ķermeni. Lieliski. Fantastiska. Visus jautājumus līdz šim? Nē? Kādi jautājumi? Labi, tāpēc mēs vienkārši radīja post modeli, ļoti vienkāršas, un mēs esam gatavojas pievienot dažas funkcijas vēlāk. Mēs varam pievienot apstiprinājumi un filtrēšanu. Apstiprinājumi ir viena no lietām, ka sistēmas atrisinātu jums ļoti, ļoti labi, un es nedomāju, ka jūs guys bija jādara, lai jūsu CS50 PSET, bet, ja jūs interneta attīstību, lai jūsu gala projektu, jūs, iespējams gatavojas vēlaties darīt kādu validācijas veida, tāpat kā nav tukšu lietotājvārdus, varbūt kam lietotājs ar vismaz dažās garumā, lietām, piemēram, ka. Un tas ir patiešām apgrūtinoši, lai īstenotu šīs lietas ar sevi, un diezgan daudz katru web sistēmu tas jums un ļauj jums darīt to ļoti tīrā veidā. Un modelis ir, ja jūs parasti paust šo validācijas kārtulas, jo tas apstiprināšanu, vai paraugs ir derīgs vai nē. Bet tagad, mēs ejam, lai likt, ka tikai vēlāk, un tagad mēs esam gatavojas strādāt uz citu daļu, un mēs esam gatavojas izmēģināt un veikt jaunu skatu kas uzskaita visus amatus. Iesaistītās veicot jaunu prasību uzskaitot visus amatus soļi ir satvert sarakstu visu posts un pēc tam padarīt sarakstu visu posts caur nolūkā. Tieši šeit, par laimi pietiekami, mēs jau satvert visus amatus Izmantojot šo pirmo rindu, atrast visas funkcijas, un tagad to, ko mēs gatavojamies darīt, ir tik tālu Es esmu tieši nosakot ķermeņa atbildes nokārtojot virkni, bet tagad es vēlos izmantot skatu, un starpība starp mērķi un vienkārši dara to ir, lai es varētu būt jauka, liels HTML veidni, un ko es varu darīt, ir nodot to daži mainīgie un tad ir skats automātiski aizpildīt savu veidni Izmantojot šos mainīgos. Ko es darīšu, ir es izveidot jaunu skatu, un es ņemšu nosaukt skata kaut ko līdzīgu "blog / index" un es esmu gatavojas būtībā saistīt to - ak, ko es rakstīt? Manas smadzenes ir kaut kur citur. Es esmu gatavojas saistīt amata mainīgo viedoklim, tā, kā viedoklis ir piekļuve šim post mainīgo. Un tāpēc tagad man ir nepieciešams, lai izveidotu šo viedokli, tāpēc šeit mēs esam šo mapi sauc par "Apskates," un, pirmkārt, es esmu gatavojas izveidot jaunu mapi ar šo sauc par "Blog". Tas ir jauki. Tādā veidā mēs varam būt jauka hierarhija mūsu viedokli. Un tad es esmu gatavojas izveidot vēl vienu failu, kas tur sauc "index.php". Awesome. Patiesībā, pieņemsim tos gan šeit. Making skata failu, ir iespējams, vienkāršākais daļa no šī visa, un tie, iespējams, ir lietas, jūs jau esat iepazinušies ar. Mēs ejam, lai darīt kaut ko patiešām vienkārša, sākums sakot: "Mana sarakstu blog posts." Tad mēs varam iet cauri, un mēs varam atkārtot, izmantojot amatiem masīvs, paķert katru amatu un teikt kaut ko līdzīgu - varbūt pievienotu līniju un pēc tam izdrukāt autors un ķermeni. Ka jēga tik tālu? Un pieņemsim redzēt, ja tā darbojas. Nekas nav noticis. Nez kāpēc. Ak, es nokavēju soli 1. Ļoti muļķīgi no manis. Es radīju viedokli, bet man nebija noteikti viedokli par atbildi, tāpēc jums ir jādara vairāk kā 1 lieta. Kas jums jādara, "šo atbildi ķermeni" un noteikt, ka tas ir skats. Tur mēs ejam. Mums ir mūsu pozīciju, un tad mums ir post, un tikai sākas, pieņemsim ievietot citā amatā lai mēs varētu redzēt sarakstu. Un ievietot šos 2 amata vietas, un tagad, ja es atsvaidzinātu lapu, mēs redzam visus šos amatus šeit. Vai, ka jēga tik tālu? Jā, jautājums? Ak, labi. Kā jūs varat redzēt, mēs esam spējuši nošķirt visus šos kodus, kas dažādās sadaļās, un tad jūs varat redzēt, tas ir ļoti skaidrs, ar skatu kodu. Šis fails šeit, kas pārstāv viedokli, tas tikai rūp, kas pārstāv datus izlikšana datus. Tas izpaužas pagājis vismaz kaut kādus datus, un visiem tas ir tikai parādīt to jums. Visās citās savu kodu, jums nebūs jāuztraucas par kādu, kas, un tāpat, jūsu viedoklis kods nav jāuztraucas neko kā piekļūt datu bāzi un tā tālāk, un tā tālāk, kas ir tiešām laba, un padara jūsu kodu daudz uzturams. Tāpat kā es teicu, viedokļi, viņi ir dinamisks, jo tas ir 1 fails, bet tas radītu dažādus viedokļus pamatojoties uz mainīgajiem jūs faktiski iet uz, un turklāt, tur ir daudz dažādu palīgs funkcijas ka jūs varat izmantot, lai palīdzētu jums rakstīt savu kodu ātrāk, ko es jums parādīs tikai sekundi. Jā. [Student] Tātad, 0 $ ir kontrolieris, vai ne? Ka otrā lieta. Jautājums ir, ir $ 0 kontrolieris? 0 $ ir mainīgs es izveidojis šeit. I izveidojis viedokli pirmās. Es piešķirts to uz kādu mainīgo. Tad es pagājis to šo funkciju, noteikt to kā ķermeņa atbildes. Vai tas ir jēga? [Studentu] Tāpēc ir uzskats :: fabrika, ir skats kā klasē vai bibliotēka [dzirdams] rūpnīcas funkcija? Jautājums ir par to view :: rūpnīcas darbību, un būtībā tas ir vēl daži objektorientētā programmēšana pēc būtības. Skats ir skats klasē, un tā ir metode, ko sauc par "Factory" un tas ir veids, kā greifers objektu, kas ir ar nosaukumu "blog / index." Un tas ir vēl daži objektorientētā programmēšana sīkumi ka es neesmu gatavojas iedziļināties šeit pārāk daudz. Tagad, protams, mēs vēlamies izveidot jaunas amata vietas, bet mēs negribam to darīt, izmantojot datu bāzi, tāpēc mēs spēsim izveidot jaunu prasību izveidot jaunu amatu, un tur ir daudz lietas, kas mums jādara. Pirmā lieta, ko mēs gatavojamies darīt - pieņemsim risinātu šīs lietas pa vienam. Pirmā lieta, ko mēs darīt, ir, mēs esam ieguvuši, lai izveidotu formu ievietošanas jaunu ziņu, bet es esmu arī gatavojas pievienot jaunu darbību, pirmkārt, tāpēc pievienojot jaunu darbību, ir tikpat viegli, kā pievienojot jaunu funkciju ar jūsu kontrolieris, un tagad es esmu gatavojas darīt kaut ko ļoti pamata, vienkārši paķert šo viedokli, un pēc tam, vienkārši parādīt to jums. Un tad tagad es esmu gatavojas izveidot jaunu skatu failu, un es esmu gatavojas sākt rakstīt daži sīkumi. Kas ir jauka par Kohana ir tas, ka tie nodrošina daudz dažādu palīgs funkcijas , lai jūs varētu rakstīt skatu kodu vieglāk, un 1 no tiem palīgs funkciju vai palīgs moduļiem ir ap rakstot formas. Rakstīšanai formas, man nav īsti ir tieši rakstīt jebkurā HTML sevi. Jums puiši ir rakstīts HTML formas. Jūs zināt, kā tas var būt ļoti, ļoti sāpīgi un apgrūtinoši rakstīt formas. Tas nav jautri, tāpēc par laimi, mēs varam būtībā uzrakstīt formā, izmantojot Kohana s forma palīgs funkcijas, lai to izdarītu mums. Mēs ejam, lai būtībā ir laukus katru lieta mums ir, tāpēc viens autoriem un vienu institūciju. Mēs ejam, lai būtu etiķeti, un mēs ejam, lai būtu ievadi. Un tad beidzot, mēs esam nāksies iesniegumu. Un, kā jūs varat redzēt, tas ir daudz tīrāks rakstīt par visu, kas netīrs HTML, kas ir sava veida jauki. Piešķirts, ir arī citi interneta sistēmas, kas ir tā pat tīrāks nekā, bet vismaz tas ir labāk, nekā rakstot HTML pats. Awesome, tāpēc tas ir tas, ko jūs redzat. Tas ir sava veida netīrs, tāpēc es esmu gatavojas pievienot rindiņas pārtraukumu tur lai kas izskatās mazliet nicer. Nu, protams, tas joprojām izskatās ļoti, ļoti slikti, bet mēs esam tikai koncentrējas uz funkcionalitāti, lai tagad, nevis par estētiku. Nav laika, lai to visu. Un, kā jūs varat redzēt, tagad mums ir super pamatforma, kas ir sava veida jauki. Šis kods Es teiktu, ka ir tīrāks nekā mēģināt rakstīt HTML forma sevi, tāpēc tas ir jauki. Ko tālāk? Tagad mums ir nepieciešams darīt lietas ar rīcību. Parasti, ja jūs rakstīt HTML formas, Jums pateikt to, ja tas notiek, lai iesniegtu veidlapu. Pēc noklusējuma lielākā daļa tīmekļa ietvaros, tā iesniedz tieši tādu pašu URL, tāpēc lieta ir, Ja sūtāt get pieprasījumu / blog / new, tas ir parādīt jums formu, bet, ja jūs sūtīt post pieprasījumu / blog / new ar datiem, tas būtu tiešām mēģināt saglabāt šo amatu un kaut ko darīt ar to. Ko mēs gatavojamies darīt, ir būtībā viss, kas mums ir jādara, lai pārbaudītu, vai tas ir post pieprasījumu vai GET pieprasījumu ir pārbaudīt, kādi ir post mainīgie var iestatīt. Un, ja pēc mainīgais ir uzstādīts, tad mēs ejam, lai mēģinātu izveidot jaunu amatu. Atgādināsim, ka mēs vienkārši darīt to, un tas rada jaunu amatu, un mēs burtiski gatavojas noteikt tās jomas, piemēram, tas, un tad mēs ejam, lai to saglabātu. Un tad es esmu gatavojas novirzīt indeksa lapu, lai viņi varētu redzēt mūsu sarakstu ar amatu vēlreiz. Mēģināsim to. Es saku: "Brandon" un pēc tam iesniegt amatu, un, ja viss noritēs labi, kā jūs varat redzēt, tas novirzīts mani uz indeksu lapā, un, ja es ritiniet uz leju, mums ir nesen ievietots amatu. Yay! Jā, jautājums. [Student] Ko darīt, ja Jums bija iekļauta tieši tas pats esat ievadījis pirms? Vai to pārbaudīt, lai pārliecinātos, ka jums nav dublēt pats iesniegums? Ir noklusējuma, nē, jo pēc noklusējuma - sorry, jautājums ir, ja ievadāt tieši tādu pašu datu veidā un apgalvo, ka tas ļaus jums ievietot dublikātu objektu, dublēt ierakstu būtībā? Tieši tagad, jā, tas ļaus jums darīt, ka, jo datu bāzēs, tas ir ļoti lietderīga, lai būtu pilnīgi dublēt rindas, bet, ja tas ir bažas, tad jūs varat pievienot apstiprinājumi, piemēram, lai pārliecinātos, ka, ja tas ir tieši tāds pats, kā kaut ko, kas jau pastāv, tad saka, ka tas ir nederīgs objekts, un tad jūs pat varat norādīt savu kļūdas ziņojumu un saka, "Invalid jo tas jau pastāv", vai kaut kas tamlīdzīgs. Bet šajā gadījumā, es varētu tikai radīt kaut ko dublēt. Tagad pamēģināsim un pievienot dažas apstiprinājumi. Problēma ar tas tieši tagad ir tas, ka Es varētu burtiski iesniegt pilnīgi tukšu amatu. Es varētu noklikšķināt uz šīs pogas tieši tagad, un tur mēs ejam. Jūs nevarat īsti redzēt, bet tas papildus līnija šeit norāda, ka man burtiski ir jaunu post. Tas vienkārši ir tukša autors un tukšu ķermeni, un mēs nevēlamies, lai cilvēki varētu darīt. Tas ir, ja apstiprinājums nāk collas Es varu iet uz manu modeli objektu, un tagad es varu pievienot jaunu funkciju, kas nosaka ko apstiprināšanas noteikumi, man vajadzētu pievienot šo modeli lai pārliecinātos, ka tā ir derīga, vai arī norādīt, ko tas nozīmē būt derīgs post? Un es gribu teikt, tas ir tikai derīgs post, ja gan autors un ķermeņa nav tukša, un tas ir kā jūs to Kohana. Izveidojot jaunu funkciju sauc "noteikumi," un tad jūs būtībā atgriezt asociatīvo masīvu kas nosaka validācijas noteikumus par šo objektu. Mēs ejam, lai atgrieztos masīvs, un tad to, ko mēs gatavojamies darīt, ir saka "autors", tā iet uz masīva, kas dodas uz citu masīvu sauc par "nav tukšs." Un tad es esmu gatavojas teikt "ķermeni." Labi, un sintakse šo un struktūru, lai tas var izskatīties mazliet apgrūtinoša un nedaudz sarežģītāk. Ja jūs lasīt dokumentus, tas ir diezgan vienkārši, lai noskaidrotu, Bet būtībā tas ir tas, kas jums jādara, lai norādītu daži apstiprināšanas noteikumi, un tur ir daudz dažādu noteikumu ka Kohana dos jums par brīvu, kā jūs varat pievienot noteikumus, lai pateikt tai jābūt vismaz šo garumu. Varbūt tas ir jābūt ciparu. Varbūt tas ir jābūt alfa ciparu. Varbūt tas ir augstākais šo garumu, tā tālāk un tā tālāk. Ir daudz dažādu noteikumu, kas Kohana sniedz jums, un jūs varat doties uz viņu mājas lapā, apskatīt dokumentāciju, un jūs varat redzēt visu dažādas lietas, ko jūs varat darīt. Bet tas ir viss, kas man ir jādara, un tagad pieņemsim redzēt, kas notiek ja es iesniegt tukšu amatu. Kas notiks? Ak, nē, man kļūda. Man validācijas izņēmums. Nu, tas ir labi. Tā man teica, ka mans modelis ir nederīgs, bet es nevēlos, lai parādītu izņēmums maniem lietotājiem, kad viņi mēģina sniegt kaut ko nederīgu, vai ne? Es vēlos, lai dotu viņiem kaut kādas draudzīgāku kļūdas ziņojuma veida kad kaut kas noiet greizi. Ko mēs gatavojamies darīt, ir, mēs spēsim wrap viss ir mēģināt nozvejas cilpu. Patiesībā, es domāju, ka tas ir arī kaut kas jums vēl nav iemācījušies in CS50, jo C, programmēšanas valoda C, nav izņēmumi, bet gandrīz katrs citā valodā ir izņēmumi, tik ļoti, ļoti īsi, Izņēmums ir kaut kas gabals kodu var mest izņēmums, ja kaut kas noiet greizi, bet tad varbūt kāds cits gabals koda augstāk var noķert šo izņēmumu, un kaut ko darīt ar to. Piemēram, šajā gadījumā gabals kodu, kas mēģina glābt modeli, tas apstiprina modeli, un, ja tā saka: "Labi, šis modelis ir nederīgs," tas notiek, lai mest izņēmums, un tas ir sava veida līdzvērtīgs C jūs varētu atgriezties -1 vai kaut kas tamlīdzīgs. Un tad man, šī funkcija, mans kods augstākā līmenī, es varētu mēģināt noķert šo izņēmumu un būtībā saka: "Labi, ja es nozvejas izņēmums, ko es esmu gatavojas darīt?" Vai es varētu izvēlēties, lai nozvejas šo izņēmumu un ļaut kādam augstāk nozvejas izņēmums, vai arī tad, ja neviens nozvejas to, tad visa programma avārijās un saka: "Kaut kas nogāja greizi, un es nevarēju rīkoties ar to." Bet ko mēs darām, ir jūs wrap gabals kodu izmēģināt blokā, un tad jūs arī pievienot kaut ko sauc catch bloks, kas ir sava veida kods, kas mēģinātu panākt izņēmumus, kas var rasties. Un tāpēc, ja es nozvejas šo konkrēto izņēmumu vai atzīšanu par spēkā neesošu izņēmums, tad tas, ko es esmu gatavojas darīt, ir Es esmu gatavojas noteikt kļūdas - Es domāju, ka tas, kā es varu to darīt - un es esmu gatavojas noteikt kļūdas ar kādu objektu. Un tad ko es esmu gatavojas darīt, ir, ja tas hits šo izņēmumu, tas nav gatavojas novirzīt, un, ja tas nav novirzīt, tas nāks ārā no, ja blogā un hit šo emuāru / new, kas vēlas, es gribu darīt. Ja ir kļūda, tad es gribu, lai dotos atpakaļ uz formu un parādītu šīs kļūdas. Tagad tas, ko es gribu darīt, ir es gribu iet uz šo kļūdu uz skatu. Labi, es domāju, ka man ir skatu tieši šeit, un būtībā es gribu parādīt šīs kļūdas, ja tādi ir. Pirms es rakstīt HTML uz to, ka es esmu gatavojas tiešām ātri parādīs, ko struktūra šīs kļūdas mainīga izskatās, un tas ir laba prakse kopumā. Daudz reižu jums kaut ko atpakaļ no kāda metode, dažas funkcijas web ietvaros, un jūs nezināt, ko mainīgais izskatās, tāpēc jums nav jāzina, kā strādāt ar to. Es esmu gatavojas izmantot drukas r metodi, lai būtībā to izdrukāt. Un, kā jūs varat redzēt, tas man saka, tas ir asociētā masīvs, un jums ir būtiska, autors norāda uz šīs virknes, autors nedrīkst būt tukša, un vēl viens būtisks, ķermenis, norāda uz citu stīgu, struktūra nedrīkst būt tukša. Es, piemēram, labi, atdzesē. Tad es varu atkārtot, izmantojot masīvu un izdrukāt katru ziņu. Tas ir būtībā tāpat kā asociatīvo masīvu ar ķekars ziņojumus. Ko es esmu gatavojas darīt, ir "ja kļūdas," un es esmu gatavojas izveidot Nenumurēts saraksts, un es esmu gatavojas atkārtot, izmantojot visas kļūdas. Un tas, un tagad es esmu gatavojas izmēģināt iesniegt vēlreiz, un redzēsim, ko mēs saņemam. Tagad mēs šo jauku sarakstu ar kļūdām, un tas joprojām ir diezgan neglīts, bet tas, protams, var formatēt, lai izskatās jauki, bet pamatideja ir tikai dažas rindiņas kodu, mums izdevās apstiprina mūsu modeli, pārliecinieties, ka nebija tukši daži lauki, un, ja kaut kas nogāja greizi, tad atpakaļ kaut kādas kļūdas ziņojuma veida Tad es varētu iesniegt atpakaļ uz lietotāja. Varat arī pielāgot savu apstiprināšanu tā, ka jūs faktiski var būt kļūdas ziņojumu , kas ir vairāk raksturīgi jūsu pieteikumu vai kaut kas tamlīdzīgs. Viss, kas parasti ir pielāgojama. Diemžēl, mēs esam pietrūkt laika, tāpēc es esmu nāksies nogriezt dzīvot kodēšanas sesiju šeit. Ir ķekars citas funkcijas, ko es vēlos parādīt jums Šajā piemērā. Piemēram, jūs varat pievienot veidnes, lai jūsu vietnē, tāpēc varbūt ir dažas HTML kods veida, ka jūs vēlaties, lai piemērotu uz katru lapu jūsu vietnē, un tā vietā, aplīmēšana, ka ikvienā skats failu jums ir, kas acīmredzami būtu slikta prakse, Jūs varat būtībā noteikt šīs veidnes, un tad jūsu kontrolieris saka: "Labi, es esmu, izmantojot šo veidni." "Vai visi mani uzskati izmantot šo veidni." Un viena pēdējā lieta, ko es vēlos parādīt jums, kā arī ka mums nav laika, ir cross-site skriptu, un būtībā es domāju, ka jūs guys ir iespējams redzēt CS50 - Es domāju, ka Deivids Malan iespējams, runāja par to, kā jūs parasti var injicēt JavaScript kodu uz - jūs esat runājuši par šo? Varbūt? Varbūt ne? Bet daudz reizes jūs varat injicēt ļaunprātīgu JavaScript kodu uz kāda datu bāzē, un, ja tie nav aizbēgt, ka pareizi, Pēc tam, kad tie sniedz šo informāciju atpakaļ uz lietotāja, tad tas var palaist dažas no izlases JavaScript kodu veida jūs nevēlaties, lai notiktu, un es biju gatavojas, lai parādītu, kā jūs darīt laikā Kohana. Tas ir tiešām ļoti, ļoti viegli. Es varētu darīt to tieši tagad, pēc 2 sekundēm burtiski. Viss, kas Jums jādara, ir būtībā wrap šīs lietas šajā lieta, ko sauc par HTML vienībām. Un tas automātiski izvairīties visus burtus pareizi un pārliecinieties, ka Jums nav iegūt šo problēmu. [Student] Jūs nepareizi uzrakstīti pirmo testu. [Brandon Liu] Ak, hmm. Labi, ka viss man bija dalīties ar jums šodien. Šie slaidi gatavojas publicēta, taču tie parasti vienīgie resursi jums tiešām ir nepieciešams, lai sāktu ar Kohana. Jūs varat iet uz mājas lapā. Viņi ir lietotāja rokasgrāmata, un tie ir arī API pētnieks. Mēs varam izpētīt visas dažādās funkcijas un palīgs funkcijas tie ir par jums. Tās parasti ir pietiekami daudz informācijas par mājas lapā ka jūs varat izmantot, lai sāktu un iegūt notiek ar Kohana. Tur nav nemaz tik daudz konsultācijas, es domāju, par Kohana, ārpus ko viņi ir mājas lapā šeit, tāpēc tas ir iespējams, jūsu labākais. Bet, ja jūs vēlaties, lai iet ar web sistēmu un jūs nevēlaties, lai būtu uzņemt jaunu valodu, un jūs vēlaties kaut ko, kas ir salīdzinoši viegls un ir viegli mācīšanās līkne, Es noteikti ieteiktu Kohana. Tas ir iespējams, ir labākais piedāvājums par to. Smieklīgi, lai gan, ir, ja mēs, izmantojot Ruby on Rails, mēs varētu atkārtot to, ko mēs tikko izdarījām un, iespējams, vairāk zem 3 minūtēm. Nav joks, bet mācīties, Ruby on Rails notiek daudz ilgāk , nekā tas būtu nepieciešams, lai uzzinātu Kohana. Tā būtībā jūsu izvēle par to, ko jūs vēlaties, lai izvēlētos mācīties, bet, ja jūs vēlaties, lai piecelties un darbojas ātri, Kohana noteikti ir ļoti laba izvēle. Kādi pēdējie jautājumi, pirms mēs beigās? Jā. [Studentu] Kā mēs integrēt ka ar CSS ietvaros, piemēram, jūs izmantojat, kad jūs instruēt? Jautājums ir, kā tas mums integrēt, ka ar CSS sistēmu? Ko mēs, iespējams darīt, ir, mēs, iespējams, iekļaut jauna mape, kur mēs varētu dump visus mūsu CSS failus, un tad mēs gribētu arī pievienotu jaunu veidni. Veidnē mēs gribētu iekļaut šos CSS failus lai pārliecinātos, ka viņi ir atsauce uz katru lapu, un tad, kad jūs faktiski ir rakstiski HTML, Jūs vienkārši pievienot attiecīgus nodarbības un plauktiņš, un, piemēram, ja jūs izmantojat kaut ko līdzīgu formu palīgs funkciju, jūs varat pievienot vairāk parametrus tam norādīt, ko nodarbības vēlaties jāpievieno dažādām lietām lai viņi varētu stils to pareizi, un tas ir pamatā, kā jūs varētu iet. Kādi citi jautājumi? Awesome. Paldies par jūsu laiku, un paldies par ierašanos. Man nebija gatavojas pievienot ļoti daudz kas cits, bet 1 tiešām ātri lieta mums nav saite formu. Tiešām muļķīgi. Pieņemsim pievienot - faktiski uzskata, blog, indekss, pieņemsim ļoti ātri pievienot saiti, kas iet uz jauno lapu, lapa, kurā mēs varam ievietot jaunu post. Mēs ejam, lai to izdarītu. Kas ir jauki, ir, ka tas ir visa grupa HTML palīgs funkcijas kas darīt dažādas lietas, lai jūs, lai jūs jau redzējāt vienībām darboties šeit, bet tie ir arī funkciju sauc "enkurs" ko jūs varat ierakstīt blog / new un saka: "Post jaunu blog." Un tas radītu šo saiti jums, un tas, šķiet, tiešām niecīgs to darīt, bet tas ir jauki, tāpēc pieņemsim, ka jums ir pārvietot savu mājas lapā no 1 domēna uz citu. Un, ja jūs vienkārši izrakstīja URL, sevi, tad jums būtu mainīt visus URL. Vai varbūt jūs pārcelts no 1 apakšmapi uz citu apakšmapi. Jums būtu jāmaina visu, kas URL sevi, un tas nav jautri. Jūs varat izmantot šo enkuru tieši šeit, un jūs varat mainīt domēna vai apakšmapi prefiksu konfigurācijas failu, kad, un tad tas attieksies, ka visur, un tas ir, atkal, lielisks piemērs neatkārtot sevi, žāvēšana savu kodu out. Kur jūs atkārtot sevi, izmēģināt un iegūt kaut kādas konfigurācijas failu veida vai ar citu funkciju un ir tā, ka rokturis jums. Un ļoti pēdējā lieta, ko es gribēju, lai parādītu jums bija pieņemsim, ka mēs esam atpakaļ uz šo amatu, un es biju veido daži patiešām ilgi eseju, bet es aizmirsu, lai iekļautu savu autoru. Tagad, kad es noklikšķiniet uz "Iesniegt Post" Es tikko zaudējis visu. Nē! Tiešām skumji. Tātad, kā jūs galā ar šo? Tas ir tas, ko mēs darām. Ko mēs darām, ir šeit, lai šīm ievades un tekstu zonas funkcijas, ja ietver otru parametru, tad vērtību, kas otro parametru būs kāda joma būs sākotnēji apdzīvots ar. Ko mēs varētu darīt, ir mūsu blogā kontrolieris, mēs varētu saistīties citu mainīgo. To sauc par "vērtībām" varbūt. Un iet uz post masīvs, burtiski. Tas nozīmē, ka, ja validācija neizdevās, iet man post masīvu, ka es iesniegto no pēdējās pieprasījuma un tādā veidā es varu izmantot vērtības no savām pēdējām iesniegšanas repopulate laukus. Tagad es varu darīt kaut ko līdzīgu vērtību autora un vērtības ķermeni, un, ka jau tagad, ja man darīt daži izlases stuff un noklikšķiniet uz "Iesniegt Post", tad tā paliek tur. Bet mēs ejam uzskriet citu problēmu. Tas darbojas, bet, ja es eju uz lapu ļoti pirmo reizi, tas būs crash, un tas ir tāpēc, ka pirmo reizi mēs ejam uz lapu, šis amats mainīgais nav definēts vēl. Tas ir null. Tas neeksistē. Un ko mēs gribam pateikt, ir, ja šo taustiņu pastāv, tad atpakaļ vērtību šo masīva, bet, ja atslēgas nav, tad atpakaļ tukšu virkni. Tas ir funkcionalitāte, mēs vēlamies šeit. Mēs gribam, lai pārbaudītu, vai galvenais, pirms mēģināt piekļūt masīvs eksistē, un par laimi pietiekami, Kohana arī dod mums palīgs funkciju, kas. Viņi ir visu šo komplektu funkcijas ar nosaukumu ARR, īss, masīvs, un tie ir 1 funkciju sauc "get" un jūs varat iet masīvā, un jūs varat iet ar nosaukumu atslēgu. Tad būtībā to, ko tā darīs, tas centīsies iegūt šo taustiņu, bet, ja galvenais neeksistē masīvā, tad tas atgriezīsies tukšs, vai arī mēs varam arī norādīt noklusējuma, es uzskatu, kas ir jauki. Tagad, ja mēs to pašu vēlreiz, tad jūs tagad redzēt tas darbojas pirmo reizi apkārt, un atkal, ja mēs tipa kaut izlases sīkumi un mēģināt iesniegt, tad tā paliek tur. Un es domāju, es varētu arī parādīs, kā, lai pievienotu veidni tiešām ātri. Ko mēs varam darīt, vispirms ir, mēs varam pievienot jaunu skatu sauc par "template.php" ietvaros mapē Skati un ko es esmu gatavojas darīt, ir es esmu gatavojas izdrukāt kaut ko sauc par "satura" kas būs mans galvenais saturs. Un varbūt ir ļoti apakšējā es esmu gatavojas pievienot, teiksim, autortiesības. [Dzirdams students jautājums] [Brandon Liu] Varbūt tas ir super pamata veidni, es vēlos izmantot. Es gribu, lai ir mape ar manu autortiesības uz katru lapu, un tagad to, ko es esmu gatavojas darīt manā kontrolieris Tagad tā vietā, lai sakot, "paplašina Controller" Es esmu gatavojas teikt, "paplašina Controller_Template," un tagad tā vietā, lai sakot, "atbilde ķermenis ir vienāds ar šo viedokli," Es esmu gatavojas teikt: "Šī veidne saturs ir -" un es domāju - man likt vienādības zīmi? Es aizmirstu. Jā, es domāju tā. Un tagad es noteikti, ka saturs mainīgo vienāds skatu. Es varu darīt to pašu šeit. Un tagad, ja es atsvaidzināt, jūs varat redzēt, tagad šī autortiesības pievieno tur, un tikai veikt dažas izlases pastu, un tad atkal, jums vajadzētu redzēt, ka autortiesības ir pašā lapas apakšā. Great. Tas ir viss, ko es gribēju parādīt jums puiši. [Aplausi] Kādi jautājumi? [CS50.TV]