[Seminar] [Kohana: Qafas PHP Lightweight] [Brandon Liu] [Harvard University] [Dan huwa CS50.] [CS50.TV] Kulħadd Hi. Jisimni Brandon. I'ma junior hawn fil-kulleġġ tagħmel xjenza tal-kompjuter, u llum aħna qed tmur biex jitkellmu dwar Kohana, li huwa qafas iżvilupp tal-web PHP. Illum se tkun seminar kodifikazzjoni ħajjin, hekk jien bażikament se jqattgħu 5-10 minuti tispjega dak Kohana hu, u mbagħad jien litteralment ser tibni blog super sempliċi għalik dritt hawn litteralment mill-bidu. Aħna qed tmur biex tniżżel l-kodiċi mill-websajt Kohana, u aħna qed tmur biex tibda bini ta 'blog, u wieħed jittama li ser tkun istruttivi ħafna, għaliex inti ser tara forsi forsi I ser tagħmel xi żbalji, u tkun taf tara lili jirkupraw minnhom, jew tkun taf tara proċess tal-ħsieb tiegħi bħala I jibnu permezz ta 'dan blog, u sadanittant, inti ser tirċievi wkoll familjari mal-qafas innifsu. Nisperaw li ser jkun eżerċizzju istruttivi ħafna. L-ewwel, x'inhi eżattament qafas? Jekk inti kont qed tieħu CS50 s'issa, int ma verament ħadmu ma ebda oqfsa għadhom, u l-ħaġa hija din. You ħadthom probabbilment isir 1 pset web iżvilupp diġà, u ejja ngħidu li inti tkompli tibni websajts u jżommu bini websajts. Int ser ikollok tibda l-avviż ftit affarijiet. L-ewwel ħaġa tkun taf Avviż huwa li int probabilment tagħmel l-istess affarijiet aktar u aktar mill-ġdid il-ħin kollu, affarijiet bħal tindif data input utent, affarijiet bħall-organizzazzjoni fajls tiegħek b'ċertu mod. Il-ħaġa oħra li inti ser x'aktarx ukoll avviż huwa li kodiċi tiegħek jistgħu jibdew isiru ħafna, ħafna messy, u inti tista 'tħalli messy u biss ikollhom żmien iebsa ħafna ż-żamma tiegħu, jew inti tista 'tibda biex jistrutturaw kodiċi tiegħek u jagħmilha modulari f'ċerti modi biex jagħmluha aktar maintainable. Dan huwa fejn l-oqfsa web bażikament daħal pulzieri Dawn in-nies li kienu bnew ħafna ta 'websajts, huma qalu, "Aħna ma bżonn li jerġa 'jagħmel dan wieħed kull darba aħna tibni website." "Għaliex ma aħna biss tagħmel pakkett li ma dawn l-affarijiet għalik kull wieħed ħin inti tixtieq li tibni website? " U hekk li meta inti tagħmel websajt ġdida, inti biss tiffoka fuq dak eżattament din il-websajt partikolari huwa madwar. Inti ma għandekx bżonn jirrepetu l-konfigurazzjoni varji u separazzjoni ta 'kodiċijiet u l-kodiċi riskrittura li inti spiss għandek tagħmel meta int tagħmel websajts. L-idea hija li qafas tippermetti li inti tikteb kodiċi ta 'livell ogħla mingħajr ma joqogħdu jinkwetaw dwar id-dettalji ta 'livell aktar baxx. A dettall ta 'livell inferjuri tista' tkun xi ħaġa simili jittrattaw tindif data input utent. Dik xi ħaġa li inti m'għandekx verament bżonn ninkwetaw dwar. Għandek tiffoka fuq dak allokazzjoni web tiegħek huwa attwalment madwar. Jelimina ħafna kodiċi boilerplate. Huwa arkitettura għall-proġett tiegħek. L-aktar wieħed popolari tkun Mudell View-Kontrollur, li jien ser jitkellmu dwar fit-tieni. U ħafna drabi dawn l-oqfsa jinkorporaw sett ta 'proċeduri, regoli, u l-aħjar prattiki għalik għall-użu hekk li meta inti tadotta l-qafas web ikollok biex jikteb il-kodiċi tiegħek b'ċertu mod, u huwa ġeneralment miftiehem sett ta 'prinċipji mill-komunità li hija ġeneralment aċċettata li tkun mod tajjeb ta 'kitba kodiċi. Jagħmel kodiċi tiegħek aktar maintainable, aktar użabbli, hekk u ibqa 'sejjer hekk. U fl-aħħarnett, il-ħaġa li nixtieq li jkun enfasizzat dwar oqfsa versus libreriji hija din idea dwar l-inverżjoni ta 'kontroll, u l-ħaġa hija din. Id-differenza bejn librerija u qafas huwa li bil-librerija inti għadek bil-miktub il-programm prinċipali, u int sort li jinvokaw il-librerija u tappella lill-librerija biex tagħmel xi ħaġa għalik. Id-differenza bejn librerija u qafas huwa li l-qafas jibda bil-kontroll, u huwa jinvoka kodiċi tiegħek, sabiex inti tista 'taħseb bħala - dan huwa għaliex huwa msejjaħ' qafas - qafas jipprovdi dan il-qafas u l-istruttura għall-kodiċi tiegħek, u timla l-toqob, u dan se jsir aktar evidenti fit-tieni meta tara lili tibda jikteb il-kodiċi fil-kuntest tal-qafas. Int ser ikollok tara li jien timla l-lakuni, u l-qafas huwa tip ta 'kontroll l-biċċiet li jiċċaqalqu, u I għandhom tpoġġi l-biċċiet fil-postijiet dritt. Illum aħna qed tmur biex jitkellmu dwar Kohana, li hija waħda mill-oqfsa PHP ħafna. Hemm oqfsa web, u hemm dawk fi kważi kull lingwa waħda, u jien picking Kohana minħabba Kohana huwa probabbilment u ġeneralment rikonoxxuti bħala l-qafas PHP eħfef li pick up. Hu l-aktar ħfief. Hemm oħrajn hemmhekk li jiġu ma 'ħafna, ħafna aktar karatteristiċi, iżda dawn għandhom tendenza li jkunu aktar diffiċli li pick up. U fl-aħħarnett, Kohana juża l-arkitettura MVC. Huwa ħfief biżżejjed li nistgħu litteralment jibnu proġett dritt hawn dritt quddiem għajnejn tiegħek, u inti tista pretty ħafna isegwu flimkien pretty faċilment. X'inhu l-arkitettura MVC? Hija tirrappreżenta Mudell View-Kontrollur, u forsi jekk taħseb dwar il-kodiċi inti stajt ġie miktub s'issa għal xi wħud psets web iżvilupp tiegħek inti tista 'tkun kapaċi biex tara xi ta' dan, iżda ġeneralment meta tibda bil-miktub a web applikazzjoni aktar kumplessi, id-diviżjoni bejn dawn is-segmenti 3 isir aktar u aktar evidenti. I stabbiliti l MVC hawn tip ta 'bħala munzell, u spiss tkun taf tisma nies jitkellmu dwar stacks fil web iżvilupp, u dan huwa li juri l-idea li kull saff, kull komponent verament tipprova tikkomunika biss bejn 2 komponenti oħra. Xi ħadd aċċessi website tiegħek bħala klijent jew browser. Huma jinteraġixxu mal-programm tiegħek permezz tal-kodiċi fehma. Il-kodiċi fehma jinteraġixxi mal-kontrollur. Il-kontrollur jinteraġixxi mal-mudell, u l-mudell jinteraġixxi mal-database SQL. U ma hemm ebda Hopping bejn jekk tikteb kodiċi tiegħek sewwa. What do dawn l-affarijiet do? Il-mudell essenzjalment hija l-biċċa tal-kodiċi li jittratta d-data tiegħek. Kwalunkwe ħaġa li jittratta ma 'database tiegħek, ma' l-oġġetti li inti taħżen, jew li taqra dawk l-oġġetti fid-database, thats kollha mmaniġġjati mill-mudell. Forsi inti għandek oġġetti tiegħek fid-database. Aħna qed tmur biex jinħoloq mudell li jkollhom x'jaqsmu ma 'postijiet, so a post jista 'jkollhom xi attributi lilha. Inti jista 'jkollhom funzjonijiet madwar ħażna dawk il-postijiet jew li taqra postijiet jew filtrazzjoni il-postijiet u hekk u ibqa 'sejjer hekk, u li kollox l-kodiċi thats mmaniġġjati mill-mudell. Il-kontrollur huwa tip tal-loġika applikazzjoni, u ħafna affarijiet differenti tista 'tmur fil-loġika applikazzjoni. Jekk int tkellem lil API differenti, li jista 'jkun fejn inti qed jittrattaw mal-loġika applikazzjoni. Jekk inti qed tipprova li jkollhom biex iġibu fi data minn mudelli differenti multipli u għandhom jinġabru flimkien b'xi mod, li spiss jistgħu jiġu mmaniġġjati mill-kontrollur. Per eżempju, fuq Facebook, jekk xi ħadd inti ħabib, allura forsi dak l-att li jistabbilixxi li r-relazzjoni jista 'jsir mill-kontrollur. U fl-aħħarnett, l-opinjoni huwa l-kodiċi thats jiġġenera dak li attwalment tara. Ħafna drabi I think fil-psets CS50 dawn ma verament ninkoraġġukom guys li tissepara dawn l-affarijiet 3. Inti probabilment jkollhom din big, fajl twil fejn fil-quċċata inti tagħmel xi mistoqsija SQL u forsi jagħmlu xi proċessar fuq l-informazzjoni li inti miksuba mid-database, u allura inti għandek kollha HTML tiegħek fil-qiegħ. U inti tista 'ssib li kif inti toħloq aktar u aktar paġni li int ser ikollhom xi ripetizzjoni kodiċi, u wkoll, il-ħaġa hija fajl tiegħek gets verament kbir u twil u ssir dens biex jamministraw. Ir-raġuni għaliex MVC huwa hekk ukoll jitqiesu huwa għal numru ta 'raġunijiet. L-ewwel ħaġa hija xi ħaġa imsejħa separazzjoni ta 'tħassib li hija l-idea li meta jkollok - idealment 1 biċċa tal-kodiċi għandhom jagħmlu ħaġa 1 u jagħmluh verament tajjeb, u inti ma għandhom jgħaqqdu biċċiet tal-kodiċi li tagħmel affarijiet differenti. Per eżempju, il-fehma kodiċi u l-kodiċi mudell, dawn ma verament ikollhom li jkunu relatati. Huma ma għandhom ikunu fl-istess files, hekk meta inti tista ', jisseparahom hekk huwa faċli biex jinżamm. Il-ħaġa oħra hija kodiċi użu mill-ġdid. Inti tista 'ssib ruħek miktub l-istess mistoqsija SQL jew tagħmel mistoqsijiet simili li jistgħu jkunu estratti fi 1-funzjoni, u dak l-idea wara mudelli u kontrolluri, wara dan fil-funzjoni separata li inti tista 'użu mill-ġdid f'postijiet differenti fil-proġett tiegħek. U fl-aħħarnett, thats marbuta ma tnixxif kodiċi tiegħek, jew ma jkunux ripetuti it yourself, ma jirrepetu yourself. Dan huwa komprensibbli ħafna fl-iżvilupp. Kull meta inti tista ', inti ma tridx li jirrepetu lilek innifsek, għaliex jekk inti tirrepeti lilek innifsek,  huwa ħafna aktar għoli biex tinżamm. Jekk inti tixtieq li tibdel ħaġa 1, għandek tibdel kullimkien, u li twassal għal bugs, u huwa horrible. Id-dritt. Kwalunkwe mistoqsijiet s'issa dwar Kohana fil-livelli kollha? Great. Issa aħna qed tmur biex adsa fis-sessjoni kodifikazzjoni ħajjin, u nisperaw li kollox imur sew. I am ser bażikament jibnu din il-websajt fuq waħda ta 'servers remoti tiegħi, u li mod inti guys tista' wkoll ara l-websajt u l-aċċess għall-websajt, l-ambjent u hija wkoll konfigurati aħjar minn magna remoti tiegħi, għaliex huwa taħdem Linux minflok OS X. Aħna litteralment ser tibda. KohanaFramework.org. Jien ser tniżżel il-kodiċi mill-websajt. Jien ser kopja l-indirizz link, mur server tiegħi, niżżlu, u jien ser estratt. [Student] X'hemm l-akbar inti tista 'tagħmel it-test? [Brandon Liu] Huwa li aħjar? [Student] Huwa li doable? [Brandon Liu] Yeah, li l-multa. I jitniżżel fajl ZIP u unzipped li fis direttorju imsejjaħ Kohana, u aħna qed tmur biex tibdel isem li CS50-Kohana, u ejja go pulzieri Tal-biża '. Hawnhekk inti tara mazz ta 'fajls differenti. Ħafna mill inti tista 'tinjora - we're mhux se jmorru permezz ta' kull fajl waħdieni li fil hawn minħabba restrizzjonijiet ta 'ħin tagħna, iżda ġeneralment meta inti jinstallaw Kohana, l-ewwel ħaġa li għandek tagħmel hija inti tmur għall-direttorju, u tkun taf bażikament jagħmlu xi testijiet u whatnot ambjent tagħmel żgur li l-ambjent tiegħek huwa stabbilit sew biex imexxu Kohana u kun żgur li kollox huwa dritt. Tista 'tara aktar affarijiet għadda, iżda ġeneralment inti dejjem run fis-problema 1 fejn hija tilmenta li xi direttorju mhix writable, u dan għaliex ta 'xi permessi. I do not know kemm inti guys jkunu tgħallmu dwar permessi fajl fil CS50, imma jekk inti tagħmel web iżvilupp, int ser jibda fis din il-kwistjoni ħafna. Jien ser jagħmilha writable u naħseb Għandi wkoll li - hemm immorru. Okay, hekk issa inti tista 'tara kollox għadda, u issa se jgħidlek li tibdel isem il-fajl install.php. Jien ser jimxu l-fajl install.php li installed.php, u issa jekk I jġedded, hija tagħti me xi żball, u dan huwa fejn l-debugging taqa pulzieri Dan huwa fejn inti tista tara dak li attwalment jiġri. Il-ħaġa hija, fil-kontumaċja, Kohana jassumi li proġett tiegħek huwa fil-direttorju għerq tal-dominju tiegħek, Allura huwa jistennew li inti tkun fil demo.brandonkliu.com. Irridu tgħid li huwa attwalment fil-subfolder. Huwa fil-subfolder imsejjaħ CS50 Kohana. Il-ħaġa hi, huwa interpretazzjoni ħażina CS50-Kohana bħala xi ħaġa oħra, li jiena ser tispjega li int fit-tieni. Imma I għandu jgħidlek li l-xi ħaġa li tkun mistennija. Dak li aħna qed tmur biex tagħmel hu li aħna qed tmur biex jmorru fis dan folder imsejjaħ bootstrap.php, li hija l-folder konfigurazzjoni fejn ħafna affarijiet differenti huma stabbiliti. I miftuħa dan up. Imbagħad forsi waħda mill-ewwel affarijiet jien ser tagħmel hu li jibdlu l-żona ta 'ħin. U mbagħad ejja ara. Aha! Dritt hawn. Hemm mazz ta 'sayings konfigurazzjoni differenti fil hawn, iżda l-waħda jien infittxu huwa dan ħaġa imsejħa URL bażi, u kontumaċja I ġġibu stabbilit li Kohana, imma jien ser bidla li għal CS50-Kohana, u naħseb li għandha tiffissa lilha. Iva, kbir. Konvenzjonalment, biex tara li huwa xogħol, huwa jgħid, "Hello World". Fejn ma li jiġu minn? Kif ma nagħmlu biex Hello World? Fejn eżattament huwa l-kodiċi li effettivament kiteb li? Biex tifhem dan, jien ser jintroduċu dan il-kunċett imsejħa routing. Pretty ħafna oqfsa web jkollu l-kunċett imsejjaħ routing, li hija l-biċċa ta 'l-software li se jfasslu ċertu URL għal ċertu biċċa tal-kodiċi fil-qafas tiegħek. Per eżempju, jekk ikollok xi URL u inti tmur għal xi URL bħal foo.com / blog / kollha allura dak il-qafas huwa se jagħmel - jew għall-inqas dak Kohana se tagħmel - hija li għaddej biex isibu klassi msejħa kontrollur blog, u li għaddej biex imexxu l-funzjoni jismu azzjoni kollha. Naf jien jitkellem dwar il-klassi u l-funzjonijiet, u naf inti guys ma koprewx klassijiet u l-funzjonijiet fil CS50 s'issa, iżda għal issa, inti tista 'taħseb klassijiet biss bħala grupp ta' funzjonijiet, mod ta 'raggruppament funzjonijiet flimkien. Li tassew kollha li għandek bżonn tkun taf. Issa jekk inħarsu lejn l-istruttura folder tagħna, ġewwa l-folder applikazzjoni hemm ieħor folder imsejjaħ klassijiet, u l-folders oħra huma msejħa Kontrollur u Mudell. Jekk inti tfittex ġewwa l-folder Kontrollur, naraw li hemm fajl imsejjaħ Merħba, u tista 'tara hawn huwa klassi msejħa Kontrollur Merħba, u hemm funzjoni msejħa Azzjoni Indiċi, u dak li ma huwa jistabbilixxi l-korp ta 'rispons tiegħek għal Hello World. Li meta l-kodiċi qed jiġi miktub. Il-kwistjoni oħra hija, ukoll, I ma tmurx lil blah, blah, blah, / welcome / indiċi. Kif għamlet I jispiċċaw here? Ukoll, li sempliċiment għaliex hawn fil-qiegħ tal-fajl bootstrap tagħna fejn aħna waqqafna rotot tagħna tista 'tara li huma stabbiliti xi nuqqasijiet għalik. Il-kontrollur default hija milqugħa. L-azzjoni default Indiċi. C'est pourquoi meta nitfgħu xejn fil hemm awtomatikament marru għall-kontrollur Merħba u l-Azzjoni indiċi. Kollox jagħmel sens s'issa? Issa, inti tista 'tagħmel aktar milli sempliċiment mur Kontrollur u azzjoni speċifika. Tista 'wkoll tgħaddi fil-parametri għall-kontrollur. Just bħala eżempju, Jien ser iżid azzjoni oħra li dan il-kontrollur biex turi li inti. Ejja sejħa dan azzjoni Echo, għaliex dan huwa ser jgħidlek dak kollu li tagħtiha, u hekk jien bażikament ser grab parametru li għaddej biex jintbagħtu permezz lili għall-programm routing, u kif tistgħu taraw hawn, din il-linja dritt hawn, tista 'tara li dan bażikament ifisser li inti għandek kontrollur, u inti għandek /, u inti għandek l-azzjoni, u inti għandek / ieħor, u li għaddej biex tkun parametri, u għaliex għandna dan l-isem ID fil-parentesi angolu, dan ifisser li aħna qed issemmi dan il-parametru ID. Aktar tard fil-kodiċi kontrollur tiegħi jekk irrid grab a istiva ta 'dak il-parametru, I jistgħu jużaw il-kodiċi I kiteb, isibu l-parametru imsemmi ID. Dan huwa dak li għamilt hawn, u jien ser jirritorna u jgħidu, "Inti qal" li. U hekk issa jekk I tmur għall-websajt tagħna, Mmur cs50-kohana/welcome/echo/Helloooo-- oh, li d-dritt. Hemm 1 pass I titħalla barra. Din hija parti mill-idea kodifikazzjoni ħajjin. Hawn ħaġa 1. Ejja ara. Allura normalment awtomatikament ma 'lott ta' dawn l-applikazzjonijiet web inti għandek tinkludi dan ħaġa index.php fil URL tiegħek, minħabba li l-idea hija index.php huwa tip ta 'l-punt ta' dħul tal-applikazzjoni tiegħek, imma ovvjament, dan huwa tip ta 'annoying li jkollhom. Inti ma tridx li jkollhom index.php jidhru fil URL tiegħek, u pretty ħafna kull qafas web barra mill-kaxxa għandha din il-problema index.php, u għalhekk inti għandek tieħu xi miżuri biex tkun kapaċi tneħħi dan. U hekk f'dan il-każ, dak li aħna qed tmur biex tagħmel hu li aħna qed tmur biex jużaw fajl imsejjaħ. htaccess, u din hija xi ħaġa li speċifika għall-web server Apache, u tista 'tagħmel affarijiet simili jikteb URLs u jagħtu direzzjoni ġdida URLs u hekk u ibqa 'sejjer hekk, u Kohana huwa sbieħ biżżejjed biex tipprovdi mudell. Htaccess fajl li nistgħu nużaw. Kif tistgħu taraw, hemm fajl hemmhekk imsejħa example.htaccess, u aħna qed tmur biex kopja li biex. htaccess. Jien ser tiftaħ dan u tbiddilha, u bażikament dan ma mazz ta 'affarijiet differenti. Il-linja ewlenija inti tista 'tixtieq li tħares lejn huwa dritt hawn. L-idea hija li din tistabbilixxi regola li tgħid, "Okay, tkun xi tkun inti tip, index.php prepend għal dan." Tista 'tara li. Il-. * Stands għal xejn, jaqblu xejn, u mbagħad it-tieni parti hija index.php / $ 0, u $ 0 tirreferi għal dak kollu kien imqabbel qabel. Does li jagħmel sens? Imma l-ħaġa verament importanti I trid tibdel hu li jibdlu din il-bażi jikteb, li huwa l-bażi URL. Huwa tip ta 'tassumi fejn qed jaħdmu minn. Jien ser iżżid CS50 Kohana għal dan, u li mod issa jekk I tneħħi l-index.php, għandha taħdem, u jien ser żid xi numri biex turi li inti li huwa tabilħaqq għamlet xogħol. Ħsejjes tajba. Kwalunkwe mistoqsijiet s'issa? [Student] Kif ma kien jaf li jagħmlu l-123? Huwa li l-argument? Eżattament. Inti tista 'taħseb li biss bħal argument. Imma l-ħaġa stramb, għalkemm, hi li l-mod Kohana tagħmlu hija ma tagħmel dan eżattament bħall argument. Int għandek grab bħal dan. Int għandek grab-talba oġġett u staqsi għall-parametru li jismu ID, u dak l-isem ID ġej minn dan il-fajl bootstrap I wera qabel, u l-isem ID f'dawn parentesi angolu, u li kif inti grab dawk il-parametri. Tal-biża '. Kwalunkwe mistoqsijiet oħra? Like I said, kontrolluri, huma jimmaniġġjaw loġika applikazzjoni, b'tali mod li 1 eżempju fejn tista 'tara that's - huwa bażika ħafna, iżda huwa għadu loġika applikazzjoni, l-idea ta 'ħtif-parametru u l-ħolqien ta' string ġdida li jgħid, "Inti qal blah," u mbagħad jobżoq li lura lilek. U ġeneralment dak li għandek tagħmel huwa inti toħloq kontrolluri differenti. Inti toħloq kontrolluri separati għall-partijiet differenti tal-website tiegħek. Illum aħna qed tmur biex tagħmel websajt sempliċi ħafna, u li għaddej biex tkun blog bażika ħafna. Aħna qed tmur biex tagħmel kontrollur ġdid biss għall-postijiet fil-blog. Imma mbagħad jekk jien kienu li jżidu wkoll il-kummenti fil-blog post, imbagħad I probabbilment tixtieq li tagħmel kontrollur ġdid għal dawk il-kummenti. Jekk I ried iżid utenti, I probabbilment żid kontrollur ġdid għal dawk l-utenti, u b'mod ġenerali, l-idea hija li kull meta inti għandek mudell ġdid, oġġett ġdid data li int jittrattaw, għandek kontrollur wieħed għall-dak l-oġġett data. Illum aħna qed biss sejjer jaħdem ma '1 oġġett data, u li għaddej biex tkun postijiet, u wkoll inti tista 'taħseb oġġetti tad-data bħala korrispondenti għad-tabelli. Ġeneralment kull tabella tikkorrispondi għal 1 tip ta 'oġġett data, hekk il-mejda post iridu mudell posta 1, li ser ikollha 1 kontrollur post li jikkorrispondi għal dan, u l-istess għall-kummenti, l-istess għall-utenti, u hekk u ibqa 'sejjer hekk. U li regola ġenerali ta 'thumb. Hemm ser ikunu każi speċjali fejn inti tista differenti minn dik, iżda 90% tal-ħin dan huwa dak li int ser tkun qiegħda tagħmel, u jien ser nuruk dak hu li aħna qed tmur li tkun qiegħda tagħmel illum. 1 iktar kunċett qabel we adsa lura fil-kodiċi, din l-idea ta 'oġġett mapping relazzjonali. You guys diġà għamlu żvilupp pset web, u inti stajt tidher li inti tagħmel mistoqsija SQL, u kull li jirritorna inti ringieli. Ikollok dawn ringieli, u indiċi inti lilhom minn xi isem, l-isem tal-kolonna u l-mejda, u li kif inti taħdem magħha, u tista 'tkun daqsxejn diffiċli. Iżda barra minn hekk, jekk għandek relazzjonijiet fi ħdan database tiegħek, bħal per eżempju jekk ikolli kummenti u postijiet, allura forsi I tixtieq li grab l-post prinċipali ta 'kumment. Jekk I-użu biss ringieli fil SQL, allura kollha nista 'nikseb huwa l-ID tal-post omm u mhux l-post innifisha. Imma meta aħna qed kodifikazzjoni, dak li aħna verament trid huwa li attwalment grab  -ġenitur post innifsu kultant. What oġġett mapping relazzjonali ma hija li tieħu r-riżultati tal-mistoqsija database u tqiegħdu fis-oġġetti għalik, li huma ħafna nicer li jaħdmu ma ' minn arrays sempliċi u ringieli. Per eżempju, issa meta I jkollhom kumment forsi, u nixtieq li grab post parent tagħha, u jien forsi jikkummentaw vleġġa posta, imbagħad fil-fatt se tagħti me l-oġġett post jikkorrispondi għall-post ġenitur attwali, mhux biss ftit ID, li jiena kieku jkollhom jużaw u jagħmlu query ieħor SQL li grab l-post, li hija ineffiċjenti u mhux meħtieġa. U barra minn hekk, mill-immappjar dawn ringieli tad-dejta fis-oġġetti, inti tista 'wkoll tehmeż funzjonijiet aktar għal oġġetti, hekk per eżempju, I tkellmu dwar kif il-klassijiet huma essenzjalment gruppi ta 'funzjonijiet. Inti tista 'taħseb li bħal dik. Per eżempju, forsi għandi dan l-oġġett postali, u forsi I tixtieq li jkollha xi tip ta 'funzjoni mehmuża miegħu li bażikament jgħidlekx me ma kien reċentement stazzjonati? Ma kien stazzjonati fi ħdan il-aħħar ġimgħa, vera jew falza? U li l-funzjoni I tista 'tehmeż fuq dak l-oġġett, u huwa verament konvenjenti li jkollhom fl-istess post, u hemm għadd ta 'funzjonijiet differenti tista' toħloq għal dawn l-oġġetti, u huwa verament sbieħ li jkunu kapaċi biex iwaħħalha għal klassi, għal oġġett, filwaqt li jekk inti biss kellhom ringieli li ġejjin minn database tiegħek, allura inti ma tistax verament jagħtu kwalunkwe funzjonalità għal dan. Huwa litteralment biss data. Xi mistoqsijiet dwar dan fil-livelli kollha? Orms huma web iżvilupp komuni ħafna, u hemm ħafna ta 'tipi differenti ta' orms, u Kohana għandha ORM tagħha stess. Huwa bażika ħafna, iżda inti ser tikseb togħma ta 'dak li jidher qisu. Ejja toħloq mudell għall-postijiet blog tagħna, u l-ewwel ħaġa li għandna ovvjament bżonn tagħmel huwa li toħloq tabella attwali fi ħdan database tagħna li attwalment jaħżnu data tagħna għal dawk il-postijiet. L-ewwel ħaġa jien ser tagħmel hu li tmur għall phpMyAdmin. Have you guys użat phpMyAdmin qabel? Okay, biża ', hekk inti guys diġà taf dak li hu, u jien ser tinħoloq tabella ġdida msejħa Kohana Posts, u li għaddej biex tkun verament sempliċi. I ser ikollhom log lura pulzieri Kollha aħna qed tmur biex tagħmel illum huwa jkollu awtur u korp, biss iżommu sempliċi. Jien ser joħolqu dik it-tabella, u issa aħna biss għandhom tabella li jirrappreżenta postijiet tagħna ma '2 oqsma għal awtur tagħna u l-korp tagħna. Il-ħaġa oħra I am ser tagħmel issa huwa kkonfigurat applikazzjoni web tiegħi hekk li jaf kif jgħaqqdu l-database, u dan, għal darb'oħra, hija xi ħaġa li inti ser ikollok tagħmel ma 'applikazzjonijiet web. Int għandek tgħid l-isem l-utent u l-password u l-isem tad-database u hekk u ibqa 'sejjer hekk biex insemmu kif fil-fatt jgħaqqdu l database tiegħek. Fl Kohana, aħna għandna xi ħaġa imsejħa modulu database, u fil-folder konfigurazzjoni għandna this folder imsejjaħ Database, u kif tistgħu taraw, hemm mazz ta 'settings għandek stabbiliti hawn għid x'inhu l-isem l-utent u l-password għad-database hekk I jistgħu attwalment tqabbad lilha. U peress li jien ma jridux li inti guys li tassew taf il-user name u password ta 'database tiegħi, I jkollhom fajl fejn I diġà jistabbilixxu kollha up, u jien ser kopja u paste fuq. Tal-biża '. Okay. Naħseb li kollox l-konfigurazzjoni I bżonn tagħmel, imma ejja ara. Aħna ser iżommu xogħol fiha, u jekk xi ħaġa ħbit, allura aħna ser tiffissa lilha. Issa dak li jien ser tagħmel hu li jien ser toħloq kontrollur ġdid. Jew fil-fatt, sorry. Ewwel I għandhom joħolqu mudell ġdid. I ser toħloq mudell ġdid imsejjaħ Post.php, u dak li aħna qed tmur biex tagħmel hu li aħna qed tmur li hija sejħa klassi Model_Post. Get xi sintassi jenfasizzaw fuq, u hekk meta I say, "testendi ORM," li bażikament ftit aktar programmar oġġett orjentati lejn, li sfortunatament inti guys ma tgħallmu fil CS50 għadhom, iżda huwa pjuttost faċli li pick up. Hija tagħti me dan kollu funzjonalità żejda li taqa 'f'dan il-pakkett ORM, u għalhekk niġi mazz ta 'funzjonijiet żejda u whatnot b'xejn, li tkun taf tara daqsxejn ta fit-tieni. Dritt issa attwalment kollha I bżonn tagħmel huwa li toħloq din il-klassi. Jien ma anki bżonn tagħmel xi funzjoni jew xejn, imma stajt ħolqot klassi li tirrappreżenta l-tabella, u għaliex stajt estiża din il-klassi ORM, I jiksbu mazz ta 'affarijiet b'xejn, hekk għal issa inti ma jkollhom jistabbilixxu xejn aktar up. U issa dak li jien ser tagħmel hu li jien ser toħloq kontrollur ġdid, li jien ser insemmu blog.php, u jien ser kopja fuq il-kontrollur Merħba so I ma jkollhom retype xi għalf, u issa għandi li tibdel isem dan. Issa dak li jien ser tagħmel biex tittestja biex tiżgura kollox qed taħdem barra, Jien ser grab-ewwel post minn database tiegħi u tistampa l-korp tal-post fuq l-iskrin. Biex tagħmel dan dak li jien ser tagħmel l-ewwel hu jien ser isalva l-postijiet għal varjabbli hekk dak li aħna qed tmur biex tagħmel hu - fil Kohana dak li għandek tagħmel huwa li grab l-oġġett post huwa tip ta 'diffiċli, iżda inti għandek tagħmel dan ħaġa imsejħa ORM :: fabbrika, u allura inti jgħaddu fl-isem tal-mudell li trid, u dan jirritorna l-oġġett ORM li tirrappreżenta dak il-mudell. U mbagħad, bħal I said, meta aħna jestendu l-oġġett ORM, irridu jiksbu dawn il-metodi kollha b'xejn, allura pereżempju, irridu jiksbu din il-funzjoni ġdida msejħa "ssib kollha," li awtomatikament jirritorna kull post wieħed fid-database, li huwa pjuttost konvenjenti. U issa fil-ġisem jien ser jirritorna l-ewwel post u r-ritorn tal-ġisem tagħha. U ovvjament, I bżonn li jinħoloq post, hekk ejja daħħal kariga ġdida. I ser jgħidu, "Brandon, ħafna ewwel post tiegħi." Tal-biża '. U issa aħna qed tmur biex tmur blogs u jekk kollox jaħdem tajjeb - oh, din hija xi ħaġa oħra permess fajl dumb-ġdid. Żomm fuq 1 sekonda. Huwa tip ta 'assurda. Hemm immorru. Okay. I fiss din il-problema permess. Kien tipprova toħloq xi fajls u xi log, u l-permessi, għal darb'oħra, ma kinux stabbiliti tajjeb, so I għamilha sabiex dawn il-fajls kienu writable u eżekutibbli għalhekk tista 'attwalment log għal affarijiet. Issa huwa jagħti me ieħor qal eċċezzjoni, "klassi ORM ma sabet" u dan għaliex I nesa pass ieħor. Li wisq bad. Fil-fajl folder bootstrap, hemm dawn il-moduli hawn, fejn inti tista 'tagħżel li jippermettu jew iwaqqaf. Dawn huma mazz ta 'karatteristiċi differenti li inti tista' tagħżel li tuża fi ħdan Kohana, li huwa tip ta 'sbieħ. Per eżempju, huma jkollhom modulu awtentikazzjoni li tista 'tuża għall awtentifikati l-utenti. Huma għandhom modulu caching jekk inti tixtieq li timplimenta xi tip ta 'caching back tarf biex jagħmlu x-xogħol għal applikazzjoni iktar rapida u whatnot. Għandna bżonn biex jippermetti lill-database u l-modulu ORM, għaliex bħal I said, aħna qed jużaw id-database, ovvjament, u wkoll għandna bżonn biex il-modulu ORM, għaliex aħna tixtieq li jkollha l-funzjonalità żejda, li huwa sbieħ li jkollhom. All I għandek tagħmel huwa uncomment dawk il-linji 2, u issa jekk I jġedded, tatni żball ieħor. Hija tgħid, "Klassi Model_Post ma nstabx." Issa din hija problema tajjeb li jkollha. Ejja ara. Jagħmlu pubbliku. No Żomm fuq. Oh, għeżież. I do not know għaliex mhuwiex kapaċi jsibu dan. Li tassew stramba. I jkollhom din il-klassi dritt hawn. I raden I jista 'jkollhom biex - oh. I am so dumb. I nesa li żid tag PHP. C'est pourquoi. Issa għandi li jneħħu dik 1-bidla I biss għamlet. Okay. Hemm immorru. Dan kien tassew iblah. I ma kellux tag PHP ftuħ. Imma kif tista 'tara, issa huwa ta' ħidma kif suppost, id-dritt? Għandna 1 post. Aħna qabad l-ewwel post, u issa għandna stampati ġisem tagħha. Great. Fantastic. Kwalunkwe mistoqsijiet s'issa? Nope? Kwalunkwe mistoqsijiet? Okay, hekk aħna biss maħluqa-mudell posta, ħafna bażiku, u aħna qed tmur biex iżżid xi funzjonijiet aktar tard. Nistgħu żid validazzjonijiet u filtrazzjoni. Validazzjonijiet huma waħda mill-affarijiet li l-oqfsa ssolvi għalik tassew, tassew tajjeb, u ma naħsibx inti guys kellha tagħmel dan għall pset CS50 tiegħek, imma jekk inti tagħmel web iżvilupp għall-proġett finali tiegħek, int x'aktarx tmur jridu jagħmlu xi tip ta 'validazzjoni, bħal ma jkollhomx utent ismijiet vojta, forsi jkollhom password b'mill-inqas xi tul, affarijiet bħal dik. U huwa verament diffiċli biex jiġu implementati dawn l-affarijiet mill nfusna, u pretty ħafna kull qafas web wieħed ma għalik u tippermetti li inti tagħmel dan b'mod nadif ħafna. U l-mudell huwa fejn inti ġeneralment tesprimi dawk ir-regoli ta 'validazzjoni, għaliex dan huwa validazzjoni jekk mudell huwa validu jew le. Iżda għal issa, aħna qed tmur biex iqiegħed dak sa aktar tard, u għal issa aħna qed tmur biex jaħdmu fuq parti oħra, u aħna qed tmur biex jippruvaw u jagħmlu ħsieb ġdid li jelenka l-postijiet. Il-passi involuti fit-teħid ta 'azzjoni ġdid għall-elenkar-postijiet kollha huwa li grab lista tal-postijiet kollha u mbagħad jagħmlu l-lista tal-postijiet kollha permezz ta 'ħsieb. Dritt hawn, fortunatament biżżejjed, aħna diġà grabbed-postijiet kollha jużaw din l-ewwel linja, il jsibu funzjoni kollha, u issa dak li aħna qed tmur biex tagħmel hu li s'issa Stajt ġiet jistabbilixxu direttament il-korp tar-rispons billi tgħaddi l-sekwenza, imma issa nixtieq li jużaw ħsieb, u d-differenza bejn ħsieb u biss tagħmel dan huwa ħsieb I jista 'jkollhom sympathique, template HTML big, u dak I tista 'tagħmel huwa tgħaddiha ċerti varjabbli u mbagħad ikollhom l-opinjoni awtomatikament timla template tagħha jużaw dawk il-varjabbli. What I ser tagħmel hu li jien ser toħloq fehma ġdida, u jien ser insemmu l-ħaġa fehma bħal "blog / indiċi," u jien ser bażikament torbot dan - oh, dak li jien miktub? Moħħ tiegħi hija x'imkien ieħor. Jien ser jorbtu lill-postijiet varjabbli għall-opinjoni, sabiex mod il-fehma għandu aċċess għal din il-varjabbli post. U hekk issa I bżonn biex joħolqu din il-fehma, hekk hawn għandna this folder imsejjaħ "Views," u l-ewwel, jien ser toħloq folder ġdid taħt dik imsejħa "Blog." Dan huwa sbieħ. B'dak il-mod li jista 'jkollna ġerarkija sbieħ għall-opinjonijiet tagħna. U allura jien ser toħloq fajl ieħor fil hemm imsejħa "index.php." Tal-biża '. Attwalment, ejja jkollhom magħhom kemm hawn. Nagħmlu fajl fehma hija probabbilment l-parti sempliċi ta 'dan kollu, u dawn huma probabbilment affarijiet int diġà familjari magħhom. Aħna qed tmur biex tagħmel xi ħaġa verament sempliċi, tibda qal, "lista tiegħi ta 'postijiet blog." Imbagħad nistgħu jgħaddu, u nistgħu jtenni permezz tal-firxa postijiet, grab kull post wieħed u ngħid xi ħaġa simili - forsi żid linja u mbagħad jistampa l-awtur u l-korp. Li jagħmel sens s'issa? U ejja ara jekk taħdem. Ġara xejn. I wonder għaliex. Oh, I qbiżt 1 pass. Ħafna iblah lili. I ħolqot ħsieb, imma jien ma jistabbilixxu l-fehma bħala r-rispons, sabiex inti għandek tagħmel 1 aktar ħaġa. Inti għandek tagħmel "dan il-korp reazzjoni" u stabbilit li jkun il-fehma. Hemm immorru. Għandna intestatura tagħna, u allura għandna post, u biss għall kicks, ejja daħħal post ieħor hekk nistgħu naraw lista. U daħħal dawn il-postijiet 2, u issa jekk I jġedded il-paġna, naraw dawn il-postijiet kollha hawn. Does li jagħmel sens s'issa? Yeah, kwistjoni? Oh, okay. Kif tistgħu taraw, aħna kont qed kapaċi li tissepara dawn il-kodiċijiet kollha barra f'sezzjonijiet differenti, u allura inti tista 'tara l-aktar ċara mal-kodiċi fehma. Dan il-fajl hawn li tirrappreżenta l-opinjoni, jimpurtaha biss madwar jirrappreżenta data, wiri data. Jiġrilha għadda xi tip ta 'data, u kull ma tagħmel huwa biss turi li int. Fil-partijiet oħra tal-kodiċi tiegħek, inti mhux ser ikollhom għalfejn tinkwieta dwar xi li, u l-istess, tiegħek kodiċi fehma ma jkollhom għalfejn tinkwieta xejn dwar kif ikollhok aċċess għal database u hekk u ibqa 'sejjer hekk, li hija verament tajba u jagħmel kodiċi tiegħek ħafna aktar maintainable. Like I said, fehmiet, dawn qed dinamika li huwa 1 file, iżda jiġġenera fehmiet differenti ibbażata fuq il-varjabbli li attwalment jgħaddu fi, u barra minn hekk, hemm ħafna ta 'funzjonijiet differenti helper li tista 'tuża biex jgħinuk tikteb kodiċi tiegħek aktar mgħaġġel, li jiena ser jurik ftit tieni. Yeah. [Student] Mela $ 0 huwa kontrollur, right? Din it-tieni ħaġa. Il-kwistjoni hija hija $ 0 kontrollur? $ 0 hija varjabbli I maħluqa dritt hawn. I ħolqot ħsieb ewwel. I assenjati lill xi varjabbli. Imbagħad I mgħoddija fis din il-funzjoni, huwa stabbilit bħala l-korp tar-rispons. Does li jagħmel sens? [Student] Hekk fehma :: fabbrika, hija l-fehma bħal klassi jew librerija [inaudible] funzjoni fabbrika? Il-kwistjoni hija dwar il-funzjoni fehma :: fabbrika, u bażikament dan huwa ftit aktar programmar oġġett orjentati lejn essenzjalment. View hija l-klassi fehma, u għandu metodu msejjaħ "Factory," u li l-mod li grab l-oġġett li jismu "blog / indiċi." U li ftit aktar oġġett orjentati lejn Jittieħed programmazzjoni li jien mhux se jmorru fil hawn wisq. Issa ovvjament, irridu noħolqu postijiet ġodda, iżda ma rridux li tagħmel dan permezz ta 'database, hekk aħna qed tmur biex toħloq azzjoni ġdida għall-ħolqien kariga ġdida, u hemm ħafna ta 'għalf għandna nagħmlu. L-ewwel ħaġa aħna qed tmur biex tagħmel - ejja tindirizza dawn l-affarijiet wieħed wieħed. L-ewwel ħaġa aħna ser nagħmlu huwa konna ltqajna li joħloq forma biex ikunu inseriti kariga ġdida, imma jien wkoll ser iżid azzjoni ġdida ewwel, hekk żżid azzjoni ġdida huwa daqstant faċli bħala żżid funzjoni ġdida bil-kontrollur tiegħek, u għal issa jien se jagħmlu xi ħaġa bażika ħafna, biss grab din il-fehma u jimpustah, biss juru dan għalik. U allura issa jien se toħloq fajl ħsieb ġdid, u jien ser tibda tikteb xi għalf. X'hemm sbieħ dwar Kohana huwa li dawn jipprovdu ħafna ta 'funzjonijiet differenti helper għalik biex jikteb il-kodiċi fehma aktar faċilment, u l-1 ta 'dawk il-funzjonijiet helper jew moduli helper huwa madwar miktub forom. Għall-kitba forom, I ma verament jkollhom jiktbu direttament kwalunkwe HTML myself. Inti guys kitbu forom HTML. Inti taf kif jista 'jkun verament, verament uġigħ u ineffiċjenti li tikteb forom. Mhuwiex gost, hekk fortunatament, aħna bażikament tista 'tikteb forma użu tal Kohana jiffurmaw funzjonijiet helper biex tagħmel dan għalina. Aħna ser bażikament għandhom l-oqsma għal kull ħaġa waħda għandna, hekk wieħed għall-awturi u wieħed għall-korpi. Aħna ser ikollhom tikketta, u aħna qed tmur biex ikollhom input. U mbagħad finalment, aħna qed tmur biex ikollhom sottomissjoni. U kif tista 'tara, dan huwa ħafna cleaner li tikteb minn dak kollu li HTML messy, li huwa tip ta 'sbieħ. Mogħtija, hemm oqfsa web oħra li għandhom anki cleaner minn dak, iżda mill-inqas dan huwa aħjar milli bil-miktub l-HTML yourself. Tal-biża ', għalhekk dan huwa dak li tara. Dak it-tip ta 'messy, hekk jien ser iżżid pawża linja hemm biex jagħmlu dak tfittex ftit nicer. Well, naturalment, huwa għadu jistenna tassew, tassew ħżiena, imma aħna qed biss iffukat fuq il-funzjonalità għal issa u mhux fuq l-estetika. Ebda ħin biex jagħmlu dak kollu. U kif tista 'tara, issa għandna forma super bażiku, li huwa tip ta 'sbieħ. Dan il-kodiċi Jien ngħid huwa cleaner milli jippruvaw tikteb HTML jiffurmaw yourself, hekk li sbieħ. Xi jmiss? Issa għandna bżonn li tagħmel affarijiet ma 'l-azzjoni. Normalment meta tikteb forom HTML, għandek tgħid fejn hi għaddej biex jissottomettu l-formola li. Permezz ta 'default fil-oqfsa aktar web, huwa jsostni li l-istess URL eżatt, sabiex il-ħaġa hija, jekk inti tibgħat talba get għal / blog / ġodda, għandu juri inti l-forma, imma jekk inti tibgħat talba post għal / blog / ġodda mad-dejta, għandu fil-fatt tipprova tiffranka din il-kariga u tagħmel xi ħaġa magħha. Dak li aħna qed tmur biex tagħmel hu bażikament kollha għandna nagħmlu biex jiċċekkjaw jekk huwa talba post jew talba get huwa li jiċċekkjaw liema huma l-varjabbli post inti tista 'tistabbilixxi. U jekk il-varjabbli post huwa stabbilit, allura aħna qed tmur biex jippruvaw u joħolqu kariga ġdida. Għal darb'oħra, aħna biss tagħmel dan, u li toħloq kariga ġdida, u aħna qed litteralment tmur biex jistabbilixxu oqsma bħal dan, u allura aħna qed tmur biex isalvawh. U allura jien ser idawwru għall-paġna indiċi sabiex ikunu jistgħu ara l-lista tagħna ta 'postijiet mill-ġdid. Ejja nippruvaw dan. I ser jgħidu, "Brandon," u mbagħad tissottometti l-post, u jekk kollox imur sew, kif tistgħu taraw, hija dirottati me lill-paġna indiċi, u jekk I iscroll sal-qiegħ, għandna post mdaħħal. Yay! Yeah, kwistjoni. [Student] X'jiġri jekk inti kienu daħlu l-istess ħaġa eżatt inti daħal qabel? Ma jivverifika sabiex ikun żgur li m'humiex iddupplikati l-istess sottomissjoni? Kun default, no, minħabba kontumaċja - sorry, il-kwistjoni hija jekk inti tidħol fl-istess data eżatta fil-forma u jsostnu li, ser jippermetti li inti daħħal oġġett duplikat, a duplikat dħul, essenzjalment? Dritt issa, iva, dan se jippermetti li inti tagħmel dan, għaliex databases huwa perfettament valida biex ikollhom ringieli kompletament duplikat, imma jekk dan huwa ta 'tħassib, allura inti tista' żżid validazzjonijiet, per eżempju, tagħmel ċert li jekk dan huwa eżattament l-istess bħal xi ħaġa li diġà teżisti, allura jgħidu li huwa oġġett invalidu, u allura inti tista 'anki tispeċifika messaġġ ta' żball tiegħek u jgħidu, "Invalid għax dan diġà teżisti" jew xi ħaġa bħal dik. Iżda f'dan il-każ, I jistgħu biss joħolqu xi ħaġa duplikat. Issa ejja jippruvaw u żid xi validazzjonijiet. Il-problema ma 'dan id-dritt issa huwa li I jistgħu litteralment tissottometti post kompletament vojta. I tista 'tikklikkja din il-buttuna dritt issa, u hemm immorru. Inti ma tistax verament tara dan, iżda din il-linja żejda hawn jindika li I litteralment jkollhom kariga ġdida. Hija biss għandha awtur blank u korp vojta, u ma rridux li jippermettu lin-nies biex tagħmel dan. Dan huwa fejn il-validazzjoni taqa pulzieri I tista 'tmur għall-mudell oġġett tiegħi, u issa I tista 'żżid funzjoni ġdida li tispeċifika liema regoli validazzjoni I għandhom iżidu dan il-mudell tagħmel ċert li huwa validu jew li jispeċifikaw dak ma jfisser li tkun post validu? U nixtieq ngħid huwa biss post validu jekk kemm-awtur u l-korp mhumiex vojta, u dan huwa kif inti tagħmel dan fil Kohana. Inti toħloq funzjoni ġdida msejħa "Regoli," u allura inti bażikament jirritornaw firxa assoċjattiva li jiddefinixxi r-regoli ta 'validazzjoni għal dan l-oġġett. Aħna ser jirritorna l-array, u allura dak li aħna qed tmur biex tagħmel hu jgħidu "awtur," tmur għal firxa, li tmur lil firxa oħra msejħa "mhux vojta." U allura jien se ngħid "korp." Okay, u s-sintassi għal dan u l-istruttura għal din tista 'tfittex ineffiċjenti u ftit kumplikata. Jekk taqra d-dokumentazzjoni, huwa pjuttost sempliċi biex insemmu, Iżda essenzjalment dan huwa dak li għandek bżonn tagħmel biex tispeċifika xi regoli ta 'validazzjoni, u hemm ħafna ta' regoli differenti li Kohana se jtik b'xejn, bħal inti tista 'żżid ir-regoli li jgħidu għandu jkun mill-inqas dan it-tul. Forsi għandu jkun numeriku. Forsi għandu jkun numerika alpha. Forsi għandu jkun l-aktar dan it-tul, hekk u ibqa 'sejjer hekk. Hemm ħafna ta 'regoli differenti li Kohana jipprovdi għalik, u inti tista 'tmur fil-websajt tagħhom, tħares lejn id-dokumentazzjoni, u tista 'tara l-affarijiet differenti li inti tista' tagħmel. Iżda din hija kollha I għandek tagħmel, u issa ejja naraw x'jiġri jekk I tissottometti post vojt. X'qed jiġri? Oh, no, I nikseb żball. I jiksbu eċċezzjoni validazzjoni. Ukoll, dan huwa tajjeb. Hija told me li l-mudell tiegħi huwa invalidu, imma jien ma jridux juru eċċezzjoni għall-utenti tiegħi meta jippruvaw jissottomettu xi ħaġa invalidu, right? Irrid li jagħtuhom xi tip ta 'messaġġ ta' żball familjari meta xi ħaġa tmur ħażin. Dak li aħna qed tmur biex tagħmel hu li aħna qed tmur biex wrap kollox fil-linja qabda jipprova. Fil-fatt, jiena naħseb li din hija wkoll xi ħaġa li inti ma tgħallmu għadhom fil CS50, għaliex C, il-lingwa ta 'programmar C, ma jkollux eċċezzjonijiet, iżda kważi kull lingwa oħra waħda għandha eċċezzjonijiet, sabiex verament, verament fil-qosor, eċċezzjoni hija xi ħaġa li biċċa tal-kodiċi jista ' tarmi eċċezzjoni meta xi ħaġa tmur ħażin, iżda mbagħad forsi xi biċċa oħra ta 'kodiċi ogħla sa jistgħu jaqbdu din l-eċċezzjoni u tagħmel xi ħaġa magħha. Per eżempju, f'dan il-każ, il-biċċa tal-kodiċi thats jippruvaw isalvaw mudell, jivvalida l-mudell, u jekk din tgħid, "Okay, dan il-mudell huwa invalidu," li għaddej biex tarmi eċċezzjoni, u dan huwa tip ta 'ekwivalenti għal fl C inti tista 'tirritorna -1 jew xi ħaġa bħal dik. U mbagħad għalija, din il-funzjoni, il-kodiċi tiegħi f'livell ogħla, I tista 'tipprova u l-qabda din l-eċċezzjoni u bażikament jgħidu, "Okay, jekk I jaqbdu l-eċċezzjoni, dak am I se jagħmlu?" Jew I jistgħu jagħżlu li ma qabda din l-eċċezzjoni u let xi ħadd ogħla sa jaqbdu l-eċċezzjoni, jew jekk ħadd qabdiet dan, allura l-programm kollu crashes u jgħid, "Xi ħaġa marret ħażin, u I ma setax opera." Imma dak li nagħmlu huwa inti wrap biċċa tal-kodiċi fi blokk jipprova, u allura inti wkoll żżid xi ħaġa imsejħa blokk qabda, li huwa t-tip ta 'kodiċi li se jippruvaw jaqbdu eċċezzjonijiet li jistgħu jseħħu. U hekk jekk I qabda din l-eċċezzjoni partikolari jew eċċezzjoni invalidazzjoni, allura dak li jien ser tagħmel hu li Jien ser tiffissa l-iżbalji - Naħseb li kif nagħmel dan - u jien ser jistabbilixxu l-iżbalji li xi oġġett. U allura dak li jien ser tagħmel hu li jekk hits din l-eċċezzjoni, mhuwiex ser biex idawwru, u jekk ma idawwru, li għaddej biex joħorġu mill-jekk blog u hit dan il-blog / l-ġdida, li hija tixtieq li nixtieq do. Jekk ikun hemm xi żball, imbagħad Irrid immur lura għall-forma u juru dawk l-iżbalji. Issa dak li nixtieq tagħmel hu li nixtieq li jgħaddu dawn l-iżbalji għall-opinjoni. Okay, I think I jkollhom l-fehma dritt hawn, u bażikament I jridu juru dawk l-iżbalji jekk jeżistu. Qabel I jiktbu l-HTML għal dan, jien ser verament malajr nuruk dak li l-istruttura ta 'dan l-iżbalji jistenna varjabbli simili, u din hija prattika tajba b'mod ġenerali. A ħafna drabi ikollok xi ħaġa lura minn xi metodu, xi funzjoni fil-qafas web, u inti ma tafx x'inhu l-varjabbli Dehra, sabiex inti ma taf kif jaħdmu magħha. Jien ser jużaw metodu print r bażikament ipprintjaha. U kif tistgħu taraw, hija me dice huwa firxa assoċjat, u inti għandek ewlenin, awtur, punti li din is-sekwenza, awtur m'għandhomx ikunu vojta, u ewlenin oħra, korp, jindika string oħra, korp m'għandhomx ikunu vojta. Jien simili, okay, berred. Imbagħad I tista 'jtenni permezz tal-firxa u jistampa kull messaġġ wieħed. Huwa bażikament simili firxa assoċjattiva bil-mazz ta 'messaġġi. Dak li jien ser tagħmel hu li "jekk l-iżbalji," u jien ser tinħoloq lista unordered, u jien ser jtenni permezz l-iżbalji. U dan, u issa jien ser tipprova tippreżenta dan mill-ġdid, u ejja ara dak li nagħmlu. Issa irridu jiksbu din il-lista sbieħ ta 'żbalji, u dan għadu pjuttost ikrah, imma dan ovvjament jistgħu jiġu arranġati sabiex tfittex sbieħ, imma l-idea bażika hi biss fi ftit linji tal-kodiċi, konna kapaċi li jivvalida mudell tagħna, kun żgur li ċerti oqsma ma kinux vojta, u jekk xi ħaġa li marret ħażin, mbagħad jirritornaw xi tip ta 'messaġġ ta' żball I jistgħu mbagħad jippreżenta lura lill-utent. Tista 'wkoll customize validazzjoni tiegħek sabiex inti tista 'attwalment ikollhom messaġġ ta' żball li hija aktar speċifika għall-applikazzjoni tiegħek jew xi ħaġa bħal dik. Dak kollu li hu ġeneralment customizable. Sfortunatament, aħna qed taħdem barra ta 'żmien, hekk jien ser ikollhom biex jinqata '-sessjoni kodifikazzjoni live hawn. Hemm mazz ta 'fatturi oħra li nixtieq li juru għalik f'dan l-eżempju. Per eżempju, inti tista 'żżid templates tiegħek sit, hekk forsi hemm xi tip ta 'HTML code li inti tixtieq li tapplika għal kull paġna waħda fis-sit tiegħek, u minflok ta 'pasta li f'kull fajl fehma waħda għandek, li ovvjament tkun prattika ħażina, inti tista 'bażikament jiddefinixxu dawn templates, u mbagħad fil-kontrollur tiegħek jgħidu, "Okay, jien jużaw dan il-mudell." "Have fehmiet kollha tiegħi jużaw dan il-mudell." U l-aħħar ħaġa waħda nixtieq li juru lilek ukoll li aħna ma jkollhom il-ħin għall huwa scripting cross-site, u bażikament I think inti guys għandek probabbilment jidhru fl CS50 - Naħseb David Malan probabilment tkellmu dwar kif inti tista 'normalment tinjetta JavaScript kodiċi fis - usted tkellem dwar dan? Forsi? Forsi le? Iżda ħafna drabi tista 'tinjetta kodiċi JavaScript malizzjużi fis database ta 'xi ħadd, u jekk dawn ma jaħarbux li suppost, allura meta huma jippreżentaw li d-data lura lill-utent, allura tista 'tmexxi xi tip ta' kodiċi JavaScript każwali inti ma tridx li jiġri, u I kienet se turi kif youd tagħmel dan fi Kohana. Huwa fil-fatt tassew, tassew faċli. I tista 'tagħmel dan id-dritt issa fil-2 sekondi litteralment. Kulma għandek tagħmel huwa bażikament nagħlaq dawn l-affarijiet f'dan il-ħaġa imsejħa entitajiet HTML. U li awtomatikament se jaħarbu l-karattri kif suppost u aċċerta ruħek li ma jsibux din il-problema. [Student] Inti spelt l-ewwel test żbaljat. [Brandon Liu] Oh, oops. Okay, li kollox kelli biex jaqsmu miegħek għal-lum. Dawn slides ser ikunu stazzjonati, iżda dawn huma ġeneralment l-uniċi riżorsi inti għandek verament bżonn biex tibda ma Kohana. Inti tista 'tmur għall-websajt. Huma għandhom gwida għall-utent, u huma wkoll ikollhom API Explorer. Nistgħu tesplora l-funzjonijiet differenti u l-funzjonijiet helper li jkunu għalik. Huma ġeneralment ikollhom biżżejjed informazzjoni fuq il-websajt li tista 'tuża biex tibda u jiksbu jmorru ma Kohana. M'hemmx li ħafna tutorials, I think, għall Kohana, barra dak li jkunu fuq il-websajt hawn, għalhekk dan huwa probabbilment aħjar bet tiegħek. Iżda jekk inti tixtieq li tmur mal-qafas web u inti ma tridx li jkollhom jittellgħu lingwa ġdida, u inti tixtieq xi ħaġa li hija relattivament ħfief u għandha kurva tat-tagħlim faċli, Nixtieq definittivament jissuġġerixxu Kohana. Li probabbilment l-aħjar offerta għal dan. Il-ħaġa umoristiċi, għalkemm, hi jekk aħna kienu jużaw Ruby fuq binarji, stajna replikat dak li aħna biss għamlet u probabbilment aktar taħt 3 minuti. Mhix ċajta, iżda Ruby tagħlim fuq binarji tieħu ħafna itwal milli hija kienet ser tieħu biex jitgħallmu Kohana. Huwa bażikament l-għażla tiegħek fuq dak li inti tixtieq li jagħżlu li jitgħallmu, imma jekk inti tixtieq li tikseb jibda jaħdem malajr, Kohana huwa definittivament għażla tajba ħafna. Kwalunkwe mistoqsijiet aħħar qabel aħna jispiċċaw? Iva. [Student] Kif aħna jintegraw li f'qafas CSS simili inti kienu qed jużaw meta inti kienu istruzzjoni? Il-kwistjoni hija kif se aħna jintegraw li b'qafas CSS? Dak li aħna se probabbilment jagħmlu hija aħna probabbilment jinkludu folder ġdid fejn aħna se dump fajls kollha CSS tagħna, u allura aħna d wkoll żżid template ġdida. Fil-template aħna'd jinkludu dawn il-fajls CSS sabiex jiġi żgurat li qed referenza fuq kull paġna waħda, u mbagħad meta inti attwalment qed tikteb HTML, inti biss żid klassijiet u whatnot xierqa, u per eżempju, meta inti qed tuża xi ħaġa bħal l-formola funzjoni helper, inti tista 'żżid parametri aktar wara li tispeċifika liema klassijiet li trid titwaħħal affarijiet varji sabiex ikunu jistgħu stil kif suppost, u li bażikament kif inti tmur. Kwalunkwe mistoqsijiet oħra? Tal-biża '. Grazzi għall-ħin tiegħek, u nirringrazzjak għall ġejjin. I ma kienx se żżid ħafna inkella, iżda 1 ħaġa verament malajr hija li aħna ma jkollhomx rabta għall-forma. Really dumb. Ejja żid a - fil-fatt fil-fehma, blog, indiċi, ejja verament malajr żid link li tmur għall-paġna ġdida, il-paġna fejn nistgħu daħħal kariga ġdida. Aħna qed tmur biex tagħmel dan. X'hemm sbieħ hija hemm dan il-grupp kollu ta 'funzjonijiet helper HTML li tagħmel affarijiet differenti għalik, sabiex inti diġà raw l-entitajiet jiffunzjonaw hawn, imma għandhom ukoll funzjoni msejħa "ankra," li inti tista tip fil-blog / ġodda u jgħidu, "Post blog ġdid." U li toħloq din ir-rabta għalik, u dan jidher verament trivjali li tagħmel, imma dan huwa sabiħ, għaliex jissoponi li inti tiċċaqlaq website tiegħek mill-1 ta 'dominju għall-ieħor. U jekk inti biss kiteb l-URLs yourself, allura inti għandek tibdel l-URLs. Jew forsi inti mort minn 1 subfolder li subfolder ieħor. Int tkun trid tibdel dawk URLs kollha yourself, u li l-ebda gost. Tista 'tuża din ankra dritt hawn, u tista 'tbiddel l-dominju jew il-prefiss subfolder fil-fajl konfigurazzjoni darba, u mbagħad se tapplika dan kullimkien, u dan huwa, għal darb'oħra, eżempju kbir ta 'ma jirrepetu lilek innifsek, tnixxif kodiċi tiegħek out. Kull fejn int tirrepeti lilek innifsek, ipprova u estratt f'xi tip tal-fajl konfigurazzjoni jew għal xi funzjoni differenti u li hija jimmaniġġaw dan għalik. U l-ħafna aħħar ħaġa li xtaqt li nuruk kien jissoponi aħna qed lura fuq din il-kariga, u kelli komposta xi essay verament twila, iżda I nesa li jinkludu awtur tiegħi. Issa meta I ikklikkja "Submit Post," I biss tilfu kollox. Nru! Really diqa. Allura kif taħseb li jittrattaw ma 'dak? Dan huwa dak li nagħmlu. Dak li nagħmlu huwa hawn għal dawn il-funzjonijiet input u taż-żona ta 'test, jekk aħna jinkludu it-tieni parametru, allura l-valur ta 'dan it-tieni parametru se tkun dak il-qasam se jkun inizjalment popolati. Dak li nistgħu nagħmlu huwa fil-kontrollur blog tagħna, nistgħu jorbtu varjabbli ieħor. Sejħa hija "valuri" forsi. U jgħaddu fil-firxa posta, litteralment. Dan ifisser li jekk il-validazzjoni naqset, jgħaddu lili l-array post li I sottomessi mill-aħħar talba, u li mod I tista 'tuża l-valuri mill-aħħar sottomissjoni tiegħi biex repopulate l-oqsma. Issa I tista 'tagħmel xi ħaġa simili valuri awtur u l-valuri tal-ġisem, u li mod issa jekk I do xi għalf każwali u ikklikkja "Submit Post," allura li jibqa hemmhekk. Iżda aħna qed tmur jiddekorri fil-problema oħra. Li taħdem, imma jekk jien tmur fil-paġna l-ewwel darba, li għaddej biex crash, u dan għaliex l-ewwel darba aħna tmur fil-paġna, dan il-varjabbli post ma ġiex definit s'issa. Huwa null. Dan ma jeżistix. U dak li rridu ngħidu huwa jekk teżisti din ewlenin, mbagħad jirritornaw il-valur ta 'dan array, imma jekk iċ-ċavetta ma jeżistix, mbagħad jirritornaw string vojt. Dik hija l-funzjonalità rridu hawn. Aħna rridu li jiċċekkjaw jekk teżisti l-muftieħ qabel tipprova aċċess għall-firxa, u fortunatament biżżejjed, Kohana tagħtina wkoll funzjoni helper għal dan. Huma għandhom dan suite sħiħa ta 'funzjonijiet taħt l-isem ARR, qosra għall array, u jkollhom 1-funzjoni msejħa "tikseb," u inti tista 'tgħaddi fil-array, u inti tista 'tgħaddi fl-isem taċ-ċavetta. Imbagħad bażikament dak li se tagħmel hu se nipprova nikseb dak ewlieni, imma jekk dan ċavetta ma jeżistix fil-array, allura huwa ser jerġa vojt, jew nistgħu wkoll tispeċifika default, nemmen, li huwa sabiħ. Issa jekk nagħmlu l-istess ħaġa mill-ġdid, allura inti tara issa taħdem l-ewwel darba madwar, u għal darb'oħra, jekk aħna tip fil xi għalf każwali u jippruvaw u jissottomettu, allura jibqa hemmhekk. And I raden I jistgħu wkoll juru kif żid template verament malajr inti. Dak li nistgħu nagħmlu ewwel jiġifieri nistgħu żid għan ġdid imsejjaħ "template.php" fi ħdan il-folder Views, u dak li jien ser tagħmel hu li jien ser jistampa xi ħaġa imsejħa "kontenut" li se jkun kontenut prinċipali tiegħi. U forsi fil-qiegħ nett jien ser iżidu, ngħidu aħna, copyright. [Inaudible kwistjoni student] [Brandon Liu] Forsi dan huwa mudell super bażiku I jridu jużaw. Irrid li jkollhom folder ma copyright tiegħi fuq kull paġna waħda, u issa dak li jien ser tagħmel fi żmien kontrollur tiegħi issa minflok qal, "jestendi Kontrollur" Jien se ngħid, "testendi Controller_Template," u issa minflok ta 'tgħid, "korp rispons tiegħu huwa daqs din il-fehma," Jien se ngħid, "dan il-kontenut template hu -" u naħseb - npoġġi sinjal ugwali? I tinsa. Yeah, ħsibt hekk. U issa I stabbilit li l-kontenut varjabbli daqs il-fehma. I jistgħu jagħmlu l-istess hawn. U issa jekk I jġedded, tista 'tara issa din awtur huwa miżjud hemmhekk, u biss tagħmel xi post każwali, u mbagħad, għal darb'oħra, inti għandek tara li l-awtur huwa fil-qiegħ nett tal-paġna. Great. Li kollox jien ridt li nuruk guys. [Applause] Kwalunkwe mistoqsijiet? [CS50.TV]