[Seminè] [Kohana: A lejè PHP chapant] [Brandon Liu] [Harvard University] [Sa a se CS50.] [CS50.TV] Hi tout moun. Non mwen se Brandon. Mwen se yon jinyò isit la nan kolèj fè syans konpitè a, ak jodi a nou pral pale sou Kohana, ki se yon fondasyon devlopman web PHP. Jodi a se pral fè yon seminè ap viv kodaj, se konsa mwen fondamantalman pral depanse 5-10 minit esplike ou kisa ki Kohana se, ak Lè sa a, mwen literalman ale nan bati yon blog super senp pou ou isit la literalman nan grate. Nou pral download kòd la soti nan sit entènèt la Kohana, e nou pral kòmanse bati yon blog, ak èspere ke li pral trè édikatif, paske ou pral wè petèt petèt mwen pral fè kèk erè, epi ou ap wè m 'refè nan men yo, oswa ou pral wè pwosesis te panse mwen jan mwen bati nan blog sa a, ak pandan se tan, ou pral jwenn ki abitye avèk fondasyon nan tèt li tou. Nou swete ke li pral yon fè egzèsis trè édikatif. Premyèman, ki sa egzakteman se yon ankadreman? Si ou ve yo te pran CS50 twò lwen, ou pa t 'reyèlman te travay ak nenpòt ki cadres ankò, ak bagay la se sa a. Ou te pwobableman fè 1 devlopman web pset deja, epi kite pou nou di ou kontinye bati sou sit entènèt epi kenbe sou sit entènèt bilding nan. Ou ap kòmanse a yon avi yon bagay kèk. Premye bagay ou ap remake se ke ou ap pwobableman ap fè menm bagay yo sou yo ak sou ankò tout tan tout tan an, bagay sa yo tankou netwaye done opinyon itilizatè, bagay sa yo tankou òganize dosye ou nan yon sèten fason. Lòt bagay ou pral tou pwobableman remake se ke Kòd ou kapab kòmanse yo vin trè, trè sal, epi ou ka kite li sal ak jis gen yon tan trè difisil kenbe li, oswa ou kapab kòmanse estrikti Kòd ou ak fè li modilè a nan sèten fason fè li plis soutnabl. Sa a se kote cadres entènèt fondamantalman te vin pous Moun sa yo ki te fin bati yon anpil nan sit entènèt, yo di: "Nou pa bezwen refè sa a chak fwa yon sèl nou bati yon sit entènèt." "Poukisa nou pa nou jis fè yon pake ki fè tout bagay sa yo pou ou chak fwa yon sèl ou vle bati yon sit entènèt? " Se konsa, ki lè ou fè yon nouvo sit wèb, ou jis konsantre sou ki sa egzakteman sou sit wèb sa a an patikilye se sou yo. Ou pa bezwen repete tout configuration la, te divès kalite ak separasyon kòd ak reekri Kòd ke ou souvan gen w dwe fè lè ou ap fè sit entènèt. Lide a se ke yon fondasyon pèmèt ou ekri yon kòd pi wo-nivo san yo pa gen enkyete sou detay pi ba-nivo. Yon detay pi ba-nivo ta kapab yon bagay tankou fè fas ak netwaye done opinyon itilizatè. Sa se yon bagay ke ou pa ta dwe reyèlman bezwen enkyete sou. Ou ta dwe konsantre sou sa alokasyon entènèt ou an se aktyèlman sou yo. Li elimine yon anpil nan Kòd boilerplate. Li se yon achitekti pou pwojè ou. Youn nan ki pi popilè ta dwe ki gen konpòtman egzanplè-View-Kontwolè, ki mwen pral pale sou yo nan yon dezyèm fwa. Ak yon anpil nan fwa cadres sa yo enkòpore yon seri pwosedi, règ yo, ak pi bon pratik pou ou pou w sèvi ak se konsa ke lè ou adopte kad wèb la ou gen yo ekri kòd ou a nan yon sèten fason, epi li jeneralman yon dakò sou seri prensip nan kominote a ki se jeneralman aksepte yo dwe yon bon fason nan kòd ekri. Li fè kòd ou plis soutnabl, plis ka itilize, Se konsa, sou ak pou fè. E finalman, bagay la mwen vle mete aksan sou sou cadres kont bibliyotèk se lide sa a sou entèrvèrsyon nan kontwòl, ak bagay la se sa a. Diferans ki genyen ant yon bibliyotèk ak yon fondasyon se ke ak yon bibliyotèk ou toujou ekri pwogram nan prensipal yo, , epi ou ap sòt de envoke bibliyotèk la ak lè w rele sou bibliyotèk la fè yon bagay pou ou. Diferans ki genyen ant yon bibliyotèk ak yon fondasyon se ke fondasyon an kòmanse soti ak kontwòl la, epi li susit Kòd ou, Se konsa, ou ka panse a li kòm - sa a se poukisa sa yo rele li yon fondasyon - fondasyon an bay ankadreman sa a ak estrikti pou kòd ou a, epi ou ranpli nan twou yo, ak sa a ap vin pi aparan nan yon dezyèm lè ou wè m 'kòmanse ekri kòd ki nan kontèks la nan fondasyon an. Ou pral wè ke mwen ranpli nan twou vid ki genyen yo, ak fondasyon an ki kalite kontwole tout moso yo k ap deplase, ak mwen gen yo mete moso yo nan tout tanp zidòl yo dwat. Jodi a nou pwal pale osijè Kohana, ki se youn nan anpil cadres PHP. Gen cadres entènèt, e gen moun nan pwatikman chak lang yon sèl, ak mwen davwa Kohana paske Kohana se joui epi jeneralman rekonèt kòm fondasyon an PHP pi fasil yo ranmase. Li nan pi lejè a. Gen lòt moun yo deyò ki vini ak anpil, anpil plis karakteristik, men yo gen tandans yo dwe pi difisil nan ranmase. E finalman, Kohana sèvi ak achitekti a mv. Li nan ki lejè ase pou nou ka literalman bati yon pwojè dwa isit la dwat devan je ou, epi ou ka bèl anpil swiv ansanm trè fasil. Ki sa ki se achitekti nan mv? Li vle di pou ki gen konpòtman egzanplè-View-Kontwolè, e petèt si ou panse sou kòd la ou ve yo te ekri byen lwen tèlman pou kèk nan psets devlopman entènèt ou an ou kapab wè kèk nan sa a, men anjeneral lè ou kòmanse ekri yon aplikasyon sou entènèt pi konplèks, divizyon ki genyen ant 3 segments sa yo vin pi plis ak plis evidan. Mwen mete deyò mv a isit la sòt de kòm yon pil, epi byen souvan yo ou pral tande moun pale sou pil nan devlopman entènèt, ak sa a se ilistre lide ki fè konnen chak kouch, chak eleman reyèlman ap eseye sèlman kominike ant 2 lòt konpozan. Yon moun jwenn aksè sit entènèt ou a tankou yon kliyan oswa yon navigatè. Yo kominike avèk pwogram ou nan kòd la vi. Kòd la View reyaji ak kontwolè a. Kontwolè a reyaji ak modèl la, ak modèl la reyaji ak baz done a SQL. Li pa gen okenn soteur nan ant si ou ekri kòd ou a byen. Ki sa ki tout bagay sa yo fè? Modèl la esansyèlman se moso nan nan kòd ki boule ak done ou. Nenpòt bagay ki boule ak baz done ou a, avèk objè yo ke ou sere, oswa retwouve moun ki objè nan baz done a, Sa a tout pa lantremiz modèl an. Petèt ou gen objè ki nan baz done ou. Nou pral kreye yon modèl ki gen fè ak posts, Se konsa, yon pòs kapab gen kèk atribi nan li. Ou ka gen fonksyon alantou estoke moun ki posts oswa retwouve posts oswa filtraj poto yo ak sou sa ak pou fè, e ke sa a tout kòd la ki nan okipe pa modèl la. Kontwolè a se sòt de lojik aplikasyon an, ak yon anpil nan bagay diferan ka ale nan lojik aplikasyon an. Si w ap pale ak yon API diferan, ki ka kote w ap fè fas ak lojik aplikasyon an. Si ou ap eseye gen pote nan done ki sòti nan plizyè modèl diferan epi yo gen nan konbine yo nan kèk fason, ki souvan yo ka lantremiz kontwolè la. Pou egzanp, sou Facebook, si ou zanmi yon moun, Lè sa a, petèt ke zak etabli ke relasyon Yo ka fè pa kontwolè la. E finalman, gade nan se kòd la ki nan génération sa ou aktyèlman wè. Yon anpil fwa mwen panse ke nan psets yo CS50 yo pa vrèman ankouraje w mesye yo separe 3 bagay sa yo. Ou ap pwobableman gen sa a gwo, dosye lontan kote nan tèt la ou fè kèk rechèch SQL e petèt fè kèk pwosesis sou done la ou Retrieved soti nan baz done a, ak Lè sa a, ou gen tout HTML ou nan pati anba a. Apre sa, ou pouvwa jwenn ke menm jan ou kreye pi plis ak plis paj ke w ap ale nan gen kèk repetisyon Kòd, epi tou li, bagay la se dosye ou vin vrèman gwo ak long ak vin maladwa jere. Rezon an pou kisa mv se konsa byen konsidere se pou yon kantite rezon. Premye bagay la se yon bagay yo rele separasyon enkyetid ki se lide ki fè konnen lè ou gen - depreferans 1 moso nan Kòd ta dwe fè 1 bagay ak fè li vrèman byen, ak ou pa ta dwe konbine moso nan kòd ki fè bagay sa yo disparate. Pou egzanp, wè kòd ak kòd modèl, yo pa vrèman gen yo dwe ki gen rapò. Yo pa gen yo dwe nan dosye yo menm, Se konsa, lè w kapab, separe yo soti Se konsa, li fasil yo kenbe. Bagay la lòt se kòd ankò. Ou kapab jwenn tèt ou ekri rechèch la SQL menm oubyen w ap fè demann menm jan an ki te kapab distrè nan 1 fonksyon, e ke sa a lide a dèyè modèl ak contrôleur, gen l 'nan yon fonksyon apa ke ou ka jam itilize nan diferan kote nan pwojè ou. E finalman, ki nan mare nan seche Kòd ou, oswa ou pa repete tèt ou, pa repete tèt ou. Sa a se trè konpreyansib nan devlopman. Chak fwa ou kapab, ou pa vle repete tèt ou, paske si ou repete tèt ou,  li nan pi plis ki koute chè yo kenbe. Si ou vle chanje 1 bagay, ou gen mande chanje li tout kote, ak nan ki kondwi a pinèz, epi li efreyan ankò. Tout dwa. Nenpòt kesyon byen lwen tèlman sou Kohana nan tout? Great. Koulye a, nou ap ale nan plonje nan sesyon-an ap viv kodaj, ak èspere ke tout bagay ale byen. Mwen pral fondamantalman bati sit entènèt sa a sou youn nan serveurs aleka mwen an, epi fason sa ou nèg ka tou gade sou sit entènèt la ak jwenn aksè nan sit wèb la, epi tou li anviwònman an se pi bon konfigirasyon pase machin aleka m 'yo, paske li te kouri Linux olye pou yo OS X. Nou ap literalman pral kòmanse. KohanaFramework.org. Mwen pral download kòd la soti nan sit entènèt la. Mwen pral kopye adrès la lyen, ale nan sèvè m 'yo, desann li, ak Mwen pral ekstrè li. [Elèv] Ki sa ki nan pi gwo a ou ka fè tèks la? [Brandon Liu] Eske se sa ke pi byen? [Elèv] Eske se sa ke pratik? [Brandon Liu] Yeah, sa a, se amann. Mwen telechaje yon dosye postal ak dekonprese ki nan yon anyè yo rele Kohana, epi nou ap ale nan chanje non ki CS50-Kohana, Epi ann ale pous Pè. Isit la ou wè yon pakèt moun sou dosye diferan. Pifò nan nou ka inyore - we're pa pral yo ale nan chak dosye yon sèl sa a, se nan isit la paske yo te kontrent tan nou an, men jeneralman lè ou enstale Kohana, premye bagay la ou fè se ou ale nan anyè a, epi ou pral fondamantalman fè kèk tès anviwònman ak etajèr asire w se anviwònman ou byen mete nan kouri Kohana ak asire w ke tout bagay se tout dwa. Ou ka wè ki pi bagay sa yo fin pase, men anjeneral ou toujou kouri antre nan pwoblèm sa a 1 kote li plenyen ke gen kèk anyè se pa écritures, e ke sa a paske nan kèk otorizasyon. Mwen pa konnen konbyen lajan ou nèg te aprann sou autorisations dosye ki nan CS50, Men, si ou fè devlopman entènèt, w ap ale nan kouri antre nan pwoblèm sa a anpil. Mwen pral fè l 'écritures e mwen panse mwen menm mwen te gen - gen nou ale. Oke, kidonk kounye a ou ka wè tout bagay te pase, epi kounye a li ap di ou chanje non dosye a install.php. Mwen pral pou avanse pou pi dosye a install.php installed.php, e kounye a, si mwen rafrechi, li ban m 'kèk erè, e sa se kote debogaj la vini pous Sa a se kote ou ka wè sa ki aktyèlman pral rive. Bagay la se, pa default, Kohana sipoze ke pwojè ou a se nan anyè a rasin nan domèn ou, Se konsa, li la ap tann ou yo dwe nan demo.brandonkliu.com. Nou dwe di li ke li la aktyèlman nan yon subfolder. Li nan nan yon subfolder rele CS50 Kohana. Bagay la se, li la misinterpreting CS50-Kohana kòm yon lòt bagay, ki mwen pral eksplike jwenn ou nan yon dezyèm fwa. Men, mwen ta dwe di ou ke se yon bagay ki nan yo dwe atann. Ki sa nou ap ale nan fè se nou pral antre nan sa a folder rele bootstrap.php, ki se dosye a konfigirasyon ki kote yo yon bann bagay sa diferan fè fè a. Mwen louvri ki yo. Lè sa a, petèt youn nan bagay ki premye mwen pral fè se chanje zòn nan tan. Lè sa a, se pou yo wè. Wi! Dwa isit la. Gen yon pakèt moun sou diferan pawòl konfigirasyon nan isit la, men se yon sèl la m 'ap chache se bagay sa yo rele baz URL, ak pa default mwen jwenn li mete nan Kohana, Men, mwen pral chanje ke yo CS50-Kohana, e mwen panse ke yo ta dwe fikse li. Wi, gwo. Pa default, yo wè ke li nan travay, li di: "Alo Mondyal." Ki kote te fè ki soti? Ki jan nou t 'jwenn Alo Mondyal? Ki kote egzakteman se kòd la ki aktyèlman te ekri sa? Pou konprann sa, mwen pral prezante konsèp sa a yo rele wout lan. Bèl anpil tout cadres entènèt gen konsèp la yo rele tras, ki se moso nan nan lojisyèl an ki pral kat jeyografik yon URL sèten nan yon moso sèten nan kòd nan kad ou. Pou egzanp, si ou gen kèk URL, epi ou ale nan kèk URL tankou foo.com / blog / tout Lè sa a, sa ki fondasyon an ki pral fè - oswa omwen sa ki Kohana ki pral fè - se li pral jwenn yon klas yo rele kontwolè blog, epi li pral kouri fonksyon yo te rele aksyon an tout. Mwen konnen mwen ap pale de klas-la ak fonksyon, e mwen konnen ou nèg pa t 'kouvri klas ak fonksyon nan CS50 ankò, men pou kounye a, ou ka panse a kou kòm jis yon gwoup de fonksyon, yon fason pou gwoupman fonksyon yo ansanm. Sa ki nan vrèman tout sa ou bezwen konnen. Koulye a, si nou gade nan estrikti katab nou an, andedan folder nan aplikasyon gen yon lòt katab rele klas, ak lòt dosye yo yo rele yo Kontwolè ak ki gen konpòtman egzanplè. Si ou gade andedan folder nan kontwolè, nou wè ke gen yon dosye rele Byenveni, epi ou ka wè isit la se yon klas yo rele Kontwolè Byenveni, epi gen yon fonksyon rele Aksyon Index, ak ki sa li fè a se li kouche kò a nan repons ou a Bonjou Mondyal la. Sa a kote se kòd la ke yo te ekri. Kesyon an lòt la, byen, mwen pa t 'ale nan bla, bla, bla, / akeyi / Konpayi paran yo. Ki jan mwen te fini isit la? Oke, sa a, se tou senpleman paske isit la nan pati anba a nan dosye demaraj nou kote nou mete wout nou ou ka wè yo ke yo mete kèk défaut pou ou. Kontwolè a default se Byenveni. Aksyon an default se Index. Se poutèt sa lè nou mete anyen nan gen li otomatikman te ale nan kontwolè a Byenveni ak Aksyon nan endèks. Tout fè sans byen lwen tèlman? Koulye a, ou ka fè pi plis pase jis ale nan contrôleur ak yon aksyon espesifik. Ou kapab tou pase nan paramèt kontwolè la. Menm jan yon egzanp, Mwen pral ajoute yon lòt aksyon yo kontwolè sa a yo montre ou. Se pou yo rele aksyon sa a repete apre lòt fin, paske li pral di ou tou sa ou bay peyi a, Se poutèt sa mwen ap fondamantalman ale nan gen tan pwan yon paramèt ki nan yo pral voye nan m 'nan pwogram nan tras, ak jan ou ka wè isit la, liy sa a dwa isit la, ou ka wè ke sa a fondamantalman vle di ou gen kontwolè, epi ou gen yon /, epi ou gen aksyon, epi ou gen yon lòt /, Epi sa a, pral fè paramèt, ak paske nou gen sa a ID Non nan parantèz ang, sa vle di ke nou ap nonmen sa a ID paramèt. Pita nan Kòd kontwolè m 'si mwen vle gen tan pwan yon kenbe nan ki paramèt, Mwen kapab itilize kòd la mwen te ekri, jwenn paramèt nan yo te rele ID. Sa a ki sa m 'te fè isit la, ak mwen pral retounen ak di, "Ou te di" sa a. Se konsa, kounye a si mwen ale nan sit entènèt nou an, M 'ale nan cs50-kohana/welcome/echo/Helloooo-- oh, sa a, se dwa. Gen 1 etap mwen te kite deyò. Sa a se yon pati nan lide nan ap viv kodaj. Isit la nan 1 bagay. Ann wè. Se konsa, nòmalman pa default avèk yon anpil nan aplikasyon pou entènèt sa yo ou gen yo mete bagay sa a index.php nan URL ou a, paske lide a se index.php se sòt de pwen nan antre nan aplikasyon w lan, men nan kou, sa a, se sòt de anmèdan genyen. Ou pa vle gen index.php parèt nan URL ou a, ak bèl anpil chak fondasyon entènèt soti nan bwat la gen pwoblèm sa a index.php, yo ak pou ou dwe pran kèk mezi pou kapab retire sa a. Se konsa, nan ka sa a, ki sa nou pwal fè se nou pral sèvi ak yon dosye rele. takses, ak sa a se yon bagay ki espesifik nan sèvè wèb la Apache, epi li ka fè bagay sa yo tankou reyekri URL ak redireksyon URL yo ak sou sa ak pou fè, ak Kohana se bèl ase bay yon dosye takses template. ke nou ka itilize. Kòm ou ka wè, gen yon dosye gen rele example.htaccess, e nou pral a kapab bay kopi ke yo. takses. Mwen pral louvri sa a epi modifye li, ak fondamantalman li fè sa yon pakèt moun sou bagay diferan. Liy kle a ou ka vle gade nan ki dwat isit la. Lide a se ke sa a kouche moute yon règ ki di, "Oke, tou sa ou tape nan, prepan index.php ak sa yo ki." Ou ka wè sa. . * A kanpe pou anyen, matche ak anyen, ak Lè sa a, dezyèm pati a se index.php / $ 0, ak $ 0 refere a tou sa te matche deja. ki fè sans? Men, bagay la reyèlman kle mwen ta vle chanje a se chanje sa a baz reyekri, ki se baz la URL. Li sòt de pansé ké kote w ap travay nan. Mwen pral ajoute CS50 Kohana ak sa yo ki, ak fason sa a kounye a si mwen retire index.php a, li ta dwe travay, epi mwen pral ajoute kèk nimewo montre w ke li t 'fè travay la. Son bon. Nenpòt kesyon byen lwen tèlman? [Elèv] Ki jan li t 'konnen yo fè 123 a? Eske se sa ke yon diskisyon? Egzakteman. Ou ka panse a li jis tankou yon diskisyon. Men, bagay la etranj, menm si, se ke wout la Kohana fè li se yo pa fè l 'egzakteman menm jan ak yon diskisyon. Ou gen gen tan pwan li tankou sa a. Ou gen gen tan pwan objè a demann epi mande pou paramèt nan ki nan yo te rele ID, e ke ID Non soti nan ke dosye demaraj ke mwen te montre pi bonè, ak ID la te rele nan sa yo parantèz ang, e ke sa a ki jan ou gen tan pwan paramèt sa yo. Pè. Nenpòt lòt kesyon? Tankou mwen te di, contrôleur yo, yo okipe aplikasyon lojik, Se konsa, sa a, se 1 egzanp kote ou ka wè that's - li trè debaz yo, men li la toujou aplikasyon lojik, lide a nan arachman paramèt la ak kreye yon nouvo fil ki di, "Ou te di bla," ak Lè sa a, voye krache ki tounen ba ou. Epi jeneralman ki sa ou fè se ou kreye contrôleur diferan. Ou kreye contrôleur apa pou diferan pati nan sit entènèt ou. Jodi a nou pwal fè yon sit entènèt trè senp, epi li pral fè yon blog anpil debaz. Nou pwal fè yon nouvo kontwolè jis pou poto yo nan yon blog. Men, Lè sa a, si m 'te tou ajoute kòmantè nan post la blog, Lè sa a, mwen ta pwobableman vle fè yon nouvo kontwolè pou moun kòmantè. Si mwen te vle ajoute itilizatè, mwen ta pwobableman ajoute yon nouvo kontwolè pou moun ki itilizatè yo, epi an jeneral, lide a se ke chak fwa ou gen yon nouvo modèl, yon done nouvo objè ke w ap fè fas ak, ou gen yon kontwolè sèl pou ke objè done. Jodi a nou ap sèlman ale nan travay ak 1 done objè, Epi sa a, pral fè pòs, epi tou ou ka panse a done objè tankou ki koresponn ak tab. Anjeneral chak tab koresponn ak 1 di ki kalite done objè, Se konsa, tab la pòs ap gen 1 pòs modèl, ki pral gen 1 pòs kontwolè ki koresponn a sa, ak menm pou kòmantè, menm bagay la pou itilizatè yo, ak sou sa ak pou fè. la Epi sa a, yon règ jeneral nan gwo pous. Gen pral fè ka espesyal kote ou ka diferan de sa, Men, 90% nan moman an se sa ki w ap ale nan dwe ap fè, epi mwen pral montre w sa a, se sa nou ap ale nan dwe ap fè jodi a. 1 plis konsèp anvan nou plonje tounen antre nan kòd la, ide sa a nan objè relasyon kat. Ou mesye te deja fè yon pset devlopman entènèt, epi ou te wè ke ou fè yon rechèch SQL, ak tou sa li retounen nan ou se ranje. Ou jwenn liy sa yo, epi ou endèks yo pa kèk non, non an nan kolòn nan epi tab la, e ke sa a ki jan ou ap travay ak li, epi li ka yon ti jan ankonbran. Men, ankò, si ou gen relasyon ki nan baz done ou a, tankou pou egzanp si mwen gen kòmantè ak posts, Lè sa a, petèt mwen vle gen tan pwan post la paran an yon kòmantè. Si mwen itilize jis ranje nan SQL, lè sa a tout mwen ka jwenn se ID a nan post la paran epi yo pa pòs aktyèl la tèt li. Men, lè nou ap kodaj, ki sa nou aktyèlman vle se aktyèlman gen tan pwan  paran an afiche tèt li pafwa. Ki sa ki objè kat relasyon fè se li pran rezilta yo nan rechèch la baz done ak mete l 'nan objè pou ou yo, ki se anpil joli yo travay avèk pase ranje klè ak ranje. Pou egzanp, kounye a lè mwen gen yon kòmantè petèt, e mwen vle gen tan pwan pòs paran li yo, ak mwen petèt kòmantè pòs flèch, Lè sa a, li pral aktyèlman ban m 'pòs objè a ki koresponn a post la paran aktyèl, pa sèlman kèk ID, nan Tanp kote mwen ta gen yo sèvi ak, epi fè yon lòt rechèch SQL gen tan pwan post la, ki se ankonbran ak nesesè. Apre sa, Anplis de sa, pa gewografik tout bagay sa yo ranje done nan objè, ou ka tou kole plis fonksyon nan objè, Se konsa, pou egzanp, mwen te pale osijè de ki jan kou yo se esansyèlman gwoupman nan fonksyon. Ou ka panse a li tankou sa. Pou egzanp, petèt mwen gen pòs sa a objè, e petèt mwen ta renmen gen kèk sòt de fonksyon marye ak li ki fondamantalman di m 'li te resamman te poste? Li te afiche nan semèn ki sot pase a, vre oubyen fo? Epi sa a, yon fonksyon mwen ka tache sou ki objè, ak li vrèman pratik yo genyen li an plas an menm, e gen yon lame nan fonksyon diferan ou kapab kreye pou bagay sa yo, ak li vrèman bèl pou kapab mete li ak yon klas, nan yon objè, Lè nou konsidere ke si ou jis te gen ranje ki sòti nan baz done ou a, Lè sa a, ou pa ka vrèman tache nenpòt fonksyonalite nan sa. Li nan literalman jis done. Nenpòt kesyon sou ki nan tout? ORMs yo se devlopman web trè komen, e gen yon anpil nan diferan kalite ORMs, ak Kohana gen pwòp ORM li yo. Li trè debaz, men ou pral jwenn yon gou nan sa li sanble. Se pou yo kreye yon modèl pou posts blog nou an, ak premye bagay nou evidamman bezwen fè se yo kreye yon tab aktyèl nan baz done nou an ki aktyèlman magazen done nou an pou moun ki posts. Premye bagay mwen pral fè se ale nan fpmyadmen. Èske w mesye yo itilize fpmyadmen ye anvan an? Oke, pè, kidonk, ou nèg deja konnen sa se sa ki, ak mwen pral yo kreye yon tab nouvo rele Kohana Posts, epi li pral fè vrèman senp. Mwen pral oblije ale tounen pous Tout sa nou ap ale nan fè jodi a se gen yon otè ak yon kò, jis kenbe li senp. Mwen pral kreye ki tab, epi kounye a nou jis gen yon tab reprezante posts nou ak 2 jaden pou otè nou yo ak kò nou yo. Lòt bagay la, mwen pral fè kounye a se configured aplikasyon entènèt mwen se konsa li konnen ki jan pou konekte avèk baz done a, ak sa a, ankò, se yon bagay ki ou pral gen fè ak tout aplikasyon sou entènèt. Ou dwe pale li non an itilizatè ak modpas la ak non an nan baz done a ak sou sa ak pou fè figi konnen kouman ou aktyèlman konekte nan baz done ou. Nan Kohana, nou gen yon bagay yo rele yon modil baz done, ak nan folder nan konfigirasyon nou gen sa a folder rele baz done, ak jan ou ka wè, gen yon pakèt moun sou anviwònman ou gen yo mete isit la di li sa ki nan non an itilizatè ak modpas la pou baz done a pou m ka aktyèlman konekte nan li. E depi mwen pa vle ou nèg ki aktyèlman konnen non an itilizatè ak modpas nan baz done m 'yo, Mwen gen yon dosye kote mwen deja mete l 'tout leve, ak mwen pral fè kopi epi kole li sou. Pè. Oke. Mwen panse ke nan tout configuration la, te mwen bezwen fè, men kite a wè. Nou pwal kenbe k ap travay nan li, e si gen yon bagay aksidan, Lè sa a, nou pral fikse li. Kounye a ki sa mwen pral fè se mwen pral kreye yon nouvo kontwolè. Oswa aktyèlman, regrèt. Premye fwa mwen gen yo kreye yon nouvo modèl. Mwen pral kreye yon nouvo modèl yo rele Post.php, ak sa nou ap ale nan fè se nou pral rele li klas Model_Post. Jwenn kèk sentaks en sou li a, yo ak pou lè m 'di, "fin ORM," sa a, se fondamantalman kèk plis objè-oryante pwogram, ki malerezman ou nèg pa te aprann nan CS50 ankò, men li la trè fasil ranmase. Li bay m 'tout fonctionnalités anplis sa a ki vini nan pake ORM sa a, Se poutèt sa mwen jwenn yon pakèt moun sou fonksyon siplemantè ak etajèr pou gratis, ki ou pral wè yon ti jan nan nan yon dezyèm fwa. Dwa koulye a aktyèlman tout mwen bezwen fè se kreye klas sa a. Mwen pa menm bezwen fè nenpòt oswa nenpòt bagay, men mwen te kreye yon klas ki reprezante tab la, epi paske mwen te pwolonje sa a klas ORM, Mwen jwenn yon pakèt moun sou bagay sa yo pou gratis, se konsa pou kounye a ou pa bezwen mete anyen pi plis yo. Koulye a, kisa mwen pral fè se mwen pral kreye yon nouvo kontwolè, ki mwen pral nan non blog.php, ak mwen pral fè kopi sou kontwolè a Byenveni Se konsa, mwen pa bezwen tape kèk bagay, e kounye a, mwen gen chanje non sa a. Kounye a ki sa mwen pral fè pou teste a asire w tout bagay ap travay soti, Mwen pral gen tan pwan pòs premye a soti nan baz done m ' epi enprime kò a nan post la sou ekran an. Pou fè sa sa m ap pral fè premye se mwen pral pou konsève pou poto yo nan yon varyab Se konsa, sa nou pral fè se - nan Kohana sa ou fè se gen tan pwan pòs objè a li nan kalite ankonbran, men sa ou dwe fè bagay sa yo rele ORM :: faktori, ak Lè sa a, ou pase nan non an nan modèl la ou vle, epi li retounen objè a ORM ki reprezante ki modèl. Lè sa a,, tankou mwen te di, lè nou pwolonje objè a ORM, nou jwenn tout metòd sa yo pou gratis, se konsa pou egzanp, nou jwenn fonksyon sa a nouvo rele "jwenn tout," ki otomatikman retounen chak pòs yon sèl nan baz done a, ki se trè pratik. Epi, koulye a nan kò a mwen pral retounen pòs premye a epi retounen kò li yo. Ak nan kou, mwen bezwen yo kreye yon pòs, Se konsa, kite a insert yon pòs nouvo. Mwen pral di, "Brandon, pòs trè premye mwen an." Pè. Epi, koulye a nou pral pou yo ale nan blogs epi si tout travay byen - o, sa a se kèk lòt bagay bèbè dosye pèmisyon ankò. Kenbe sou 1 dezyèm fwa. Li nan kalite absid. Gen nou ale. Oke. Mwen fiks ke pwoblèm pèmisyon pou sa. Li te ap eseye kreye kèk dosye ak kèk boutèy demi lit, ak autorisations yo, ankò, yo te pa byen mete, se konsa mwen te fè li Se konsa, moun ki dosye yo te écritures ak ègzèkutabl Se konsa, li te kapab aktyèlman ale nan bagay yo. Kounye a li nan bay m 'yon lòt pawòl eksepsyon, "ORM klas pa jwenn," e ke sa a paske mwen bliye yon lòt etap. Sa a twò move. Nan dosye a folder demaraj, gen modil sa yo isit la, kote ou ka chwazi yo ki ap pèmèt oswa enfim. Sa yo se yon pakèt moun sou karakteristik diferan ke ou ka chwazi yo itilize nan Kohana, ki se sòt de bèl. Pou egzanp, yo gen yon modil otantifikasyon ki ou ka itilize pou otantifye itilizatè. Yo te gen yon modil caching si ou vle aplike kèk sòt de caching tounen fen nan fè travay aplikasyon an pi vit ak pi etajèr. Nou bezwen yo ki ap pèmèt baz done a ak modil la ORM, paske tankou mwen te di, n ap lè l sèvi avèk baz done a, evidamman, e nou bezwen tou yo ki ap pèmèt modil la ORM, paske nou ta renmen gen fonctionnalités siplemantè a, ki se bon gen. Tout sa mwen te fè se de moun ki 2 liy, e kounye a, si mwen rafrechi, li te ban m 'yon lòt erè. Li di: "Gwoup Model_Post pa jwenn." Koulye a, sa a se yon bon pwoblèm ki gen. Ann wè. Fè li piblik. No Kenbe sou. Oh, mwen renmen anpil. Mwen pa konnen poukisa li pa kapab jwenn sa a. Sa ki nan vrèman etranj. Mwen gen klas sa a isit la menm. Mwen devine mwen ka gen yo - oh. Se mwen menm se konsa bèbè. Mwen te bliye ajoute yon tag PHP. Se poutèt sa. Koulye a, mwen gen defèt ke 1 chanjman mwen jis te fè. Okay. Gen nou ale. Sa te vrèman dwòl. Mwen pa t 'gen yon tag PHP ouvèti. Men, jan ou ka wè, kounye a li nan travay byen, dwa? Nou gen 1 pòs. Nou te pwan pòs premye a, epi kounye a nou enprime soti kò li yo. Great. Kokenn. Nenpòt kesyon byen lwen tèlman? Nope? Nenpòt kesyon? Oke, kidonk nou jis kreye modèl la pòs, trè debaz yo, e nou pral ajoute kèk fonksyon pita sou. Nou kapab ajoute validation ak filtraj. Validation yo se youn nan bagay ki ki cadres fè solisyon an pou ou reyèlman, reyèlman byen, epi mwen pa panse ke ou nèg te fè sa a pou pset CS50 ou a, Men, si ou fè devlopman web pou pwojè final ou a, w ap gen anpil chans ale nan vle fè kèk sòt de validation, tankou pa gen non itilizatè vid, petèt li te gen yon modpas ki gen omwen kèk longè, bagay sa yo tankou sa a. Epitou, se vrèman ankonbran aplike bagay sa yo pa tèt nou, ak bèl anpil chak fondasyon entènèt yon sèl fè li pou ou ak pèmèt ou fè l 'nan yon fason trè pwòp. Apre sa, modèl la se kote ou jeneralman eksprime sa yo règ validation, paske li te validation si wi ou non yon modèl sa a valab oswa ou pa. Men, pou kounye a, nou ap ale nan mete sa jouk lè pita, ak pou kounye a nou ap ale nan travay sou yon lòt pati, e nou pral eseye, epi fè yon View nouvo Li bay yon lis tout poto yo. Etap sa yo ki patisipe nan fè yon nouvo aksyon pou non tout posts yo se gen tan pwan yon lis tout posts yo ak Lè sa a rann lis la nan tout poto yo nan yon vi. Dwa isit la, erezman ase, nou deja te pwan tout posts yo lè l sèvi avèk liy sa a an premye, jwenn nan tout fonksyon, e kounye a, ki sa nou pwal fè se byen lwen tèlman Mwen te dirèkteman mete kò a nan repons lan pa pase fisèl la, men kounye a mwen vle sèvi ak yon vi, ak diferans ki genyen ant yon View ak jis ap fè sa se ak yon View mwen ka gen yon bèl, gwo modèl HTML, ak ki sa mwen kapab fè se pase l sèten varyab ak Lè sa a, yo te wè a otomatikman peple modèl li yo lè l sèvi avèk sa yo varyab. Ki sa mwen pral fè se mwen pral kreye yon View nouvo, epi mwen pral non wè yon bagay a tankou "blog / endèks," ak Mwen pral fondamantalman mare sa a - oh, ki sa mwen ekri? Nan sèvo mwen an se yon lòt kote. Mwen pral mare poto yo varyab gade nan, Se konsa, nan fason sa a gade nan gen aksè a sa a varyab post. Se konsa, koulye a, mwen bezwen yo kreye sa a wè, se konsa isit la nou gen sa a folder yo rele "Vizitè," ak premye, mwen pral kreye yon nouvo dosye anba ki rele "Blog." Sa a se bèl. Nan fason sa a nou ka gen yon yerachi bèl pou opinyon nou an. Lè sa a, mwen pral kreye yon lòt dosye ki nan gen yo rele "index.php." Pè. Aktyèlman, se pou yo fè yo tou de isit la. Fè yon dosye View se pwobableman pati nan ki pi senp lan nan tout sa a, ak sa yo se pwobableman bagay sa yo w ap deja abitye avèk yo. Nou pwal fè yon bagay vrèman senp, kòmanse li di yo: "lis mwen an nan posts blog." Lè sa a, nou ka ale nan, epi nou ka repňte nan etalaj la posts, gen tan pwan chak pòs yon sèl ak di yon bagay tankou - petèt ajoute yon liy ak Lè sa a, enprime soti otè a ak kò a. Sa fè sans byen lwen tèlman? Li kite yo wè si li fonksyone. Pa gen anyen ki te pase. Mwen mande pou ki rezon. Oh, mwen rate 1 etap. Trè komik sou mwen. Mwen te kreye yon View, men mwen pa t 'mete gade nan kòm repons lan, Se konsa, sa ou dwe fè 1 plis bagay. Sa ou dwe fè "kò repons sa a" li mete l 'yo dwe gade nan. Gen nou ale. Nou gen tit nou yo, epi Lè sa a, nou gen yon pòs, ak jis pou anvwaye, se pou yo insert yon lòt pòs pou nou ka wè yon lis. Apre sa, insert 2 pòs sa yo, e kounye a, si mwen rafrechi paj la, nou wè tout posts sa yo isit la. Ki fè sans byen lwen tèlman? Yeah, yon kesyon? Oh, oke. Kòm ou ka wè, nou te te kapab separe tout kòd sa yo soti nan seksyon diferan, ak Lè sa a, ou ka wè li nan pi klè ak kòd la vi. Dosye sa a isit la ki reprezante gade nan, li sèlman gen sousi pou reprezante done, ap montre done. Li vin pase kèk sòt de done, ansanm ak tout sa li fè se jis montre li nan ou. Nan tout lòt pati nan Kòd ou, ou pa pral gen enkyete sou nenpòt nan sa, ak Menm jan an tou, kòd gade ou pa gen enkyete anyen sou ki jan yo jwenn aksè nan baz done a ak sou sa ak pou fè, ki se reyèlman bon ak fè kòd ou yon anpil plis soutnabl. Tankou mwen te di, gade, yo ap dinamik nan ki li nan 1 dosye, men li ta jenere opinyon diferan ki baze sou varyab yo ou aktyèlman pase nan, ak Anplis de sa, gen yon anpil nan fonksyon k'ap vin ede diferan ki ou ka itilize yo ede w ekri kòd ou a pi vit, ki mwen pral montre w nan jis yon dezyèm fwa. Yeah. [Elèv] Se konsa, $ 0 a se yon kontwolè, dwa? Sa dezyèm bagay. Kesyon an se ki $ 0 yon kontwolè? $ 0 a se yon varyab mwen te kreye isit la menm. Mwen te kreye yon View premye. Mwen plase li nan kèk varyab. Apre sa, mwen te pase l 'nan fonksyon sa a, mete l' kòm kò a nan repons lan. ki fè sans? [Elèv] Se konsa, se wè :: faktori, se wè tankou yon klas oswa yon bibliyotèk [fèbl] fonksyon faktori? Kesyon an se sou fonksyon an vi :: faktori, ak fondamantalman sa a se kèk plis objè-oryante pwogram esansyèlman. View la se klas la vi, epi li gen yon metòd ki rele "faktori," e ke sa a yon fason yo gen tan pwan objè a ki nan te nonmen li "blog / Konpayi paran yo." Epi sa a, kèk plis objè-oryante bagay pwogram ke mwen pa ale nan ale nan isit la twòp. Koulye a, evidamman, nou vle kreye nouvo pòs, men nou pa vle gen fè li nan yon baz done, se konsa nou ap ale nan kreye yon nouvo aksyon pou kreye yon pòs nouvo, epi gen yon anpil nan bagay nou dwe fè. Premye bagay nou pral fè - kite la atake tout bagay sa yo youn pa youn. Premye bagay nou pral fè se nou te gen yo kreye yon fòm pou yo mete yon pòs nouvo, men mwen tou ale nan ajoute yon nouvo aksyon an premye, Se konsa, pandan l ajoute ke yon nouvo aksyon se jis kòm fasil tankou ajoute yon fonksyon nouvo ak kontwolè ou a, ak pou kounye a mwen pral fè yon bagay trè debaz yo, jis gen tan pwan sa a wè epi nap mete li, jis montre li pou ou. Lè sa a, kounye a mwen pral kreye yon nouvo dosye vi, ak mwen pral kòmanse ekri kèk bagay. Ki sa ki nan bèl sou Kohana se yo ke yo bay yon anpil nan fonksyon k'ap vin ede diferan pou ou pou w ekri kòd wè pi fasil, ak 1 moun ki fonksyon k'ap vin ede oswa modil k'ap vin ede se alantou ekri fòm. Pou ekri fòm, mwen pa reyèlman gen dirèkteman ekri nenpòt HTML tèt mwen. Ou mesye yo te ekri fòm HTML. Ou konnen jan li kapab reyèlman, reyèlman douloure ak ankonbran yo ekri fòm. Li pa plezi, se konsa erezman, nou ka fondamantalman ekri yon fòm lè l sèvi avèk Kohana a fòme fonksyon k'ap vin ede fè li pou nou. Nou pral fondamantalman gen jaden pou chak bagay yon sèl nou genyen, Se konsa, yonn pou otè ak yonn pou kò yo nan. Nou pral gen yon etikèt sou yo, epi nou ap ale nan gen yon opinyon. Lè sa a, finalman, nou pral gen yon soumèt. Apre sa, kòm ou ka wè, sa a se pi cleaner yo ekri pase tout sa ki HTML sal, ki se kalite bèl. Akòde, gen lòt cadres wèb ki genyen li menm cleaner pase sa, men omwen sa a se pi bon pase ekri HTML nan tèt ou. Awesome, se konsa sa a se sa ou wè. Sa a kalite sal, Se konsa, mwen pral ajoute yon ti repo liy gen fè ki gade yon ti kras joli. Oke, nan kou, li toujou sanble reyèlman, reyèlman move, men nou ap jis konsantre sou fonksyonalite a pou kounye a epi yo pa sou estetik yo. Pa gen tan fè tout bagay. Apre sa, kòm ou ka wè, kounye a nou gen yon fòm super debaz yo, ki se kalite bèl. Kòd sa a mwen ta ka di se pi pwòp pase ap eseye ekri yon HTML fòme tèt ou, Se konsa, sa a, se bèl. Ki sa ki nan pwochen? Koulye a, nou bezwen fè bagay sa yo ak aksyon an. Nòmalman lè ou ekri fòm HTML, ou gen lè sa a kote li ale nan soumèt fòm nan. Pa default nan pi fò cadres entènèt, li soumèt ba egzak URL la menm, se konsa bagay la ye, se si ou voye yon demann ale nan / blog / nouvo, li ta dwe montre ou fòm nan, men si ou voye yon demann poste nan / blog / nouvo ak done yo, li ta dwe aktyèlman eseye sove pòs sa a ak fè yon bagay ak li. Ki sa nou ap ale nan fè se fondamantalman tout sa nou gen pou fè pou tcheke si li nan yon demann pòs oswa yon demann Pran se tcheke ki sa yo varyab yo pòs ou ka mete. Men, si se varyab la pòs mete, lè sa a nou pral eseye ak kreye yon pòs nouvo. Yon fwa ankò, nou jis fè sa, ak ki ka kreye yon pòs nouvo, epi nou ap literalman ale nan mete jaden li yo tankou sa a, ak Lè sa a, nou pral sove li. Lè sa a, mwen pral redireksyon nan paj an endèks pou yo ka wè lis nou an nan posts ankò. Ann eseye sa a. Mwen pral di, "Brandon," ak Lè sa a, soumèt post la, epi si tout bagay ale byen, jan ou ka wè, li reyorante resous m 'nan paj la endèks, Si m 'woulo liv nan fon an, nou gen yon pòs ki fèk antre. Ye! Yeah, kesyon. [Elèv] E si ou te antre nan menm bagay la egzak ou te antre ye anvan an? li tcheke asire w ke ou pa te double soumèt a menm? Fè default, pa gen okenn, paske pa default - regrèt sa, kesyon an se si w antre nan nan done yo egzak menm nan fòm lan epi soumèt sa a, li pral pèmèt ou mete yon objè kopi, yon kopi antre, esansyèlman? Dwa koulye a, repons lan se wi, li pral pèmèt ou fè sa, paske nan baz done li nan parfe ki valab yo gen ranje konplètman kopi, Men, si ke se yon pwoblèm, Lè sa a, ou ka ajoute validation, pou egzanp, a asire w ke si sa a se egzakteman menm jan yon bagay ki deja egziste, Lè sa a, di ke li nan yon objè valab, ak Lè sa a, ou ka menm presize mesaj erè ou ak di, "Envalid paske sa a deja egziste" oswa yon bagay tankou sa. Men, nan ka sa a, mwen te kapab jis kreye yon bagay kopi. Koulye a, kite nan eseye epi ajoute kèk validation. Pwoblèm nan ak sa a kounye a se ke Mwen te kapab literalman soumèt yon post konplètman vid. Mwen ka klike sou bouton sa a kounye a, epi gen nou ale. Ou pa ka vrèman wè l ', men sa a liy siplemantè isit la endike ke mwen literalman gen yon pòs nouvo. Li jis gen yon otè vid ak yon kò vid, epi nou pa vle pèmèt moun yo fè sa. Sa a se kote validation vini pous Mwen ka ale nan modèl mwen an objè, e kounye a, mwen ka ajoute yon fonksyon nouvo ki espesifye sa ki règ validation mwen ta dwe ajoute nan modèl sa a asire w ke li se ki valab oswa ou presize ki sa sa vle di gen yon pòs valid? Apre sa, mwen vle di li a sèlman yon pòs ki valab si toude otè a ansanm ak tout kò yo pa vid, e sa se ki jan ou fè l 'nan Kohana. Ou kreye yon fonksyon nouvo rele "Règ," ak Lè sa a, ou fondamantalman retounen yon etalaj asosyatif ki defini règleman yo Validasyon pou sa a objè. Nou pral retounen etalaj la, ak Lè sa a, ki sa nou pwal fè se di "otè," li ale nan yon etalaj, ki ale nan yon lòt pozisyon yo rele "pa vid." Lè sa a, mwen pral di "kò a." Oke, ak sentaks la pou sa a ak estrikti pou sa a ka sanble yon ti ankonbran ak yon ti kras konplike. Si w li dokiman an, li a trè senp figi konnen, Men, esansyèlman sa a se sa ou bezwen fè ou presize kèk règleman validation, e gen yon anpil nan règleman diferan yo ki Kohana pral ba ou pou gratis, tankou ou ka ajoute règleman yo di li dwe gen omwen sa a longè. Petèt li gen yo dwe nimerik. Petèt li gen yo dwe Alpha nimerik. Petèt li gen yo dwe nan pifò sa a longè, sou sa ak pou fè. Gen yon anpil nan règleman diferan ki Kohana bay pou ou, epi ou ka ale sou sit entènèt yo, gade nan dokiman an, epi ou ka wè tout bagay sa yo diferan ke ou ka fè. Men, sa a se tout mwen oblije fè sa, e kounye a, se pou yo wè sa ki rive , si mwen voye yon pòs vid. Ki sa ki pral rive? Oh, pa gen okenn, mwen jwenn yon erè. Mwen jwenn yon eksepsyon validation. Oke, li la bon. Li te di m 'ke modèl mwen an se valab, Men, mwen pa vle montre yon eksepsyon itilizatè mwen an lè yo eseye soumèt yon bagay valab, dwa? Mwen vle ba yo kèk sòt de favorable mesaj erè lè yon bagay ale mal. Ki sa nou ap ale nan fè se nou pral vlope tout bagay nan yon bouk eseye trape. Aktyèlman, mwen panse ke sa a se tou yon bagay ou pa te aprann ankò nan CS50, paske C, lang programmation C a, pa gen eksepsyon, men prèske chak yon sèl lòt lang gen eksepsyon, se konsa reyèlman, reyèlman yon ti tan, yon eksepsyon se yon bagay ki yon moso nan Kòd kapab voye jete yon eksepsyon lè yon bagay ale mal, Men, Lè sa a, petèt kèk lòt moso nan Kòd moute pi wo ka trape ki eksepsyon ak fè yon bagay ak li. Pou egzanp, nan ka sa a, moso nan nan kòd ki nan ap eseye sove yon modèl, li validation modèl la, epi si li di, "Oke, modèl sa a se valab," li pral voye jete yon eksepsyon, e sa se kalite ekivalan a nan C ou ta ka retounen yon -1 oswa yon bagay tankou sa. Lè sa a, pou m ', fonksyon sa a, Kòd mwen nan yon nivo ki pi wo, mwen ka eseye ak trape ki eksepsyon ak fondamantalman di, "Oke, si mwen trape eksepsyon nan, ki sa ki mwen pral fè?" Oswa mwen te kapab chwazi pou pa trape ki eksepsyon epi kite yon moun moute pi wo trape eksepsyon nan, oswa si pa gen moun atrap li, Lè sa a, pwogram nan tout antye aksidan e li di, "Yon bagay ale mal, epi mwen pa t 'kapab manyen li." Men, sa nou fè se ou vlope yon moso nan Kòd nan yon blòk eseye, ak Lè sa a, nou menm tou nou ajoute yon bagay yo rele yon blòk trape, ki se sòt nan kòd ki pral eseye ak trape eksepsyon ki kapab rive. Se konsa, si mwen trape eksepsyon sa a an patikilye oswa eksepsyon anile, lè sa a sa m ap pral fè se Mwen pral mete erè yo ki - Mwen panse ke sa a, se ki jan mwen fè li - ak mwen pral yo mete erè yo ki nan kèk objè. Lè sa a, sa m ap pral fè se si li frape eksepsyon sa a, li nan pa ale nan redireksyon, epi si li pa redireksyon, li k ap pase vin soti nan si blog la ak frape sa a blog / nouvo, ki se vle mwen vle fè. Si gen yon erè, Lè sa a, mwen vle ale tounen nan fòm nan epi montre sa yo erè. Koulye a, sa m 'vle fè se mwen vle pase nan sa yo erè gade nan. Oke, mwen panse ke mwen gen gade nan dwa isit la, ak fondamantalman mwen vle montre sa yo erè si yo egziste. Anvan m 'ekri HTML la pou sa, mwen pral vrèman byen vit montre w sa estrikti a nan sa a erè sanble varyab renmen, ak sa a se yon bon pratik an jeneral. Yon anpil fwa ou jwenn yon bagay tounen nan kèk metòd, kèk fonksyon nan kad wèb la, epi ou pa konnen ki sa varyab la sanble, pou w pa konnen ki jan yo travay avèk li. Mwen pral sèvi ak yon metòd ekri ak lèt ​​detache R rive fondamantalman ekri ak lèt ​​detache li soti. Apre sa, jan ou ka wè, li di m 'li nan yon etalaj asosye, epi ou gen yon kle, otè, pwen nan fisèl sa a, otè pa dwe vid, ak yon lòt kle, kò, pwen nan yon lòt fil, kò pa dwe rete vid. Mwen se tankou, oke, fre. Lè sa a, mwen ka repňte nan etalaj la epi enprime soti chak mesaj sèl. Li nan fondamantalman tankou yon etalaj asosyatif ak yon pakèt moun sou mesaj. Ki sa ki mwen pral fè se "si erè," ak mwen pral yo kreye yon lis unordered, ak Mwen pral repňte nan tout erè yo ki. Lè sa a, e kounye a, mwen pral eseye soumèt sa a ankò, e kite yo wè sa ki nou jwenn. Koulye a, nou jwenn sa a lis bèl nan erè, ak sa a se toujou trè lèd, men sa a evidamman kapab fòma yo gade bèl, Men, lide nan debaz la se jis nan yon liy kèk nan kòd, nou te kapab valide modèl nou an, asire w ke jaden sèten yo pa t 'vid, ak si gen yon bagay ale mal, Lè sa a, retounen kèk sòt de mesaj erè Mwen te kapab Lè sa a, prezante tounen nan itilizatè a. Ou kapab tou Customize validation ou pou ke ou ka gen aktyèlman yon mesaj erè ki pi plis espesifik nan aplikasyon w lan oswa yon bagay tankou sa. Tout sa ki se jeneralman customizable. Malerezman, nou ap kouri soti nan tan, se konsa mwen pral fè yo koupe sesyon-an ap viv kod isit la. Gen yon pakèt moun sou lòt karakteristik ki mwen vle demontre pou ou nan egzanp sa a. Pou egzanp, ou ka ajoute modèl nan sit ou a, Se konsa, petèt gen kèk sòt de kòd HTML ke ou vle pou aplike pou nan chak paj yon sèl nan sit ou a, ak olye pou yo kole ki nan chak dosye View Single ou gen, ki evidamman ta dwe yon pratik move, ou ka fondamantalman defini sa yo modèl, ak Lè sa a, nan kontwolè ou di, "Oke, mwen lè l sèvi avèk modèl sa a." "Èske tout pwen de vi mwen an sèvi ak modèl sa a." Apre sa, yon sèl bagay ki sot pase a mwen vle demontre nou la a kòm byen ke nou pa gen tan pou se kwa-sit scripting, ak fondamantalman Mwen panse ke ou nèg te pwobableman gen wè nan CS50 - Mwen panse ke David Malan pwobableman te pale osijè de ki jan ou ka anjeneral enjekte Kòd JavaScript nan - ou te pale osijè de sa a? Petèt? Petèt ou pa? Men, yon anpil nan fwa ou ka enjekte move JavaScript Kòd nan baz done yon moun nan, epi si yo pa chape anba ki byen, Lè sa a, lè yo prezante ke done tounen nan itilizatè a, Lè sa a, li ka kouri kèk sòt de o aza JavaScript Kòd ou pa ta vle rive, epi mwen te ale nan montre ki jan ou ta fè sa nan lespas Kohana. Li nan aktyèlman reyèlman, reyèlman fasil. Mwen te kapab fè li kounye a nan 2 segonn literalman. Tout sa ou dwe fè se fondamantalman vlope bagay sa yo nan bagay sa yo rele antite HTML. Apre sa, ki pral otomatikman chape anba tout karaktè yo byen ak asire w ke ou pa jwenn pwoblèm sa a. [Elèv] Ou eple premye tès la mal. [Brandon Liu] Oh, Wouch. Okay, sa a, se tout mwen te pataje avèk ou pou jodi an. Glisad sa yo yo ale nan ap afiche, men sa yo yo jeneralman resous yo sèlman ou ta dwe reyèlman bezwen jwenn te kòmanse avèk Kohana. Ou ka ale nan sit entènèt la. Yo te gen yon Gid pou Itilizatè, epi yo menm tou yo gen yon eksploratè API. Nou ka eksplore tout fonksyon yo diferan ak fonksyon k'ap vin ede yo gen pou ou. Yo jeneralman gen ase enfòmasyon sou sit entènèt la ke ou ka itilize jwenn te kòmanse epi pou yo jwenn ale ak Kohana. Pa gen ke anpil leson patikilye, mwen panse, pou Kohana, deyò nan sa yo genyen sou sit entènèt la isit la, se konsa sa a se pwobableman parye pi bon ou. Men, si ou vle ale ak fondasyon an sit entènèt epi ou pa vle gen nan ranmase yon nouvo lang, epi ou vle yon bagay ki se relativman ki lejè e li gen yon koub aprantisaj fasil, Mwen ta definitivman sijere Kohana. Sa a pwobableman ofrann a pi bon pou sa. Bagay la komik, menm si, se si nou te lè l sèvi avèk Ruby sou ray, nou ta gen repwodwi sa nou jis te fè ak pwobableman pi plis nan anba 3 minit. Pa gen blag, men aprann Ruby sou ray pran yon anpil pi long pase sa li ta pran yo aprann Kohana. Li nan fondamantalman chwa ou sou sa ou vle yo chwazi yo aprann, Men, si ou ta vle jwenn leve, li kouri byen vit, Kohana se definitivman yon trè bon chwa. Nenpòt kesyon dènye anvan nou fini? Wi. [Elèv] Ki jan nou ta entegre ki nan yon fondasyon CSS tankou ou te lè l sèvi avèk lè ou te enstwi? Kesyon an se ki jan nou ta entegre ke ak yon fondasyon CSS? Ki sa nou ta pwobableman fè se nou ta pwobableman gen ladan yon nouvo folder kote nou ta pil fatra tout dosye CSS nou an, ak Lè sa a, nou ta ajoute tou yon modèl nouvo. Nan modèl la nou ta gen ladan sa yo ki dosye CSS asire w yo ap referans sou chak paj yon sèl, ak Lè sa a, lè ou aktyèlman ap ekri HTML, ou jis ajoute klas ki apwopriye ak etajèr, ak pou egzanp, lè w ap itilize yon bagay tankou fòm nan fonksyon k'ap vin ede, ou ka ajoute plis paramèt apre sa ou presize ki sa klas ou vle yo dwe tache ak divès kalite bagay sa yo pou yo te ka style li byen, epi ki nan fondamantalman ki jan ou ta ale. Nenpòt lòt kesyon? Pè. Mèsi pou tan ou, ak di ou mèsi pou vini yo. Mwen pa te ale nan ajoute anpil lòt moun, men 1 bagay vrèman rapid se nou pa gen yon lyen nan fòm la. Vrèman bèbè. Se pou yo ajoute yon - aktyèlman nan gade la, blog, endèks, kite a vrèman byen vit ajoute yon lyen ki ale nan paj an nouvo, paj la kote nou ka mete yon pòs nouvo. Nou pral fè sa. Ki sa ki nan bèl ki gen sa a pou tout gwoup la nan HTML k'ap vin ede fonksyon ki fè bagay sa yo diferan pou ou, kidonk, ou deja wè òganizasyon ki fonksyone isit la, men yo menm tou yo gen yon fonksyon ki rele "jete lank," kote ou ka tape nan blog / nouvo ak di, "Post yon nouvo blog." Epi li ta kreye ki genyen lyen pou ou, ak sa a sanble vrèman trivial fè, men sa a se bèl, paske ta kwè ke ou yo ap deplase sit entènèt ou a soti nan 1 domèn nan yon lòt. Ak si ou jis te ekri soti URL yo tèt ou, Lè sa a, ou ta dwe chanje tout URL yo. Oswa petèt ou te deplase li soti nan 1 subfolder nan yon lòt subfolder. Ou ta oblije chanje tout moun sa yo URL tèt ou, e ke sa a pa gen okenn plezi. Ou kapab sèvi ak jete lank sa a dwa isit la, epi ou ka chanje domèn nan oswa prefiks la subfolder nan dosye a konfigirasyon yon fwa, ak Lè sa a, li pral aplike ke tout kote, epi sa a se, ankò, yon gwo egzanp sou pa repete tèt ou, siye Kòd nou yo soti kite. Kèlkeswa kote w ap repete tèt ou, eseye ak ekstrè nan kèk sòt de dosye konfigirasyon oswa nan yon fonksyon diferan ak te li manyen ke pou ou. Epi bagay la trè pase ke mwen te vle montre ou te ta kwè nou ap tounen nan pòs sa a, epi mwen te konpoze kèk redaksyon reyèlman long, men mwen bliye gen ladan otè m 'yo. Koulye a, lè m 'klike sou "Soumèt Post," Mwen jis pèdi tout bagay. Non! Vrèman tris. Se konsa, kouman ou fè fas avèk sa? Sa a se sa nou fè. Ki sa nou fè se isit la pou opinyon yo ak nan zòn tèks fonksyon sa yo, si nou genyen ladan yo yon dezyèm paramèt, lè sa a valè a nan ki dezyèm paramèt a pwal sa jaden an se yo pral okòmansman peple avèk yo. Ki sa nou ta ka fè se nan kontwolè blog nou an, nou te ka mare yon lòt varyab. Rele li "valè" petèt. Epi pase nan etalaj la pòs, literalman. Sa vle di ke si validation la echwe, pase m 'pòs etalaj la ke mwen soumèt soti nan sot pase a demann lan, ak fason sa a mwen ka itilize valè yo soti nan soumèt sot pase a mwen rpeple jaden yo. Koulye a, mwen kapab fè yon bagay tankou valè otè epi yo gen valè kò, ak fason sa a kounye a si m 'fè kèk bagay o aza epi klike sou "Soumèt Post," Lè sa a, li rete la. Men, nou ap ale nan kouri antre nan yon lòt pwoblèm. Ki travay, men si mwen ale nan paj an trè premye fwa a, li nan ale nan aksidan, epi ki nan paske tan an trè premye nou ale nan paj la, sa a varyab pòs pa te defini ankò. Li nan nil. Li pa egziste. Apre sa, ki sa nou vle di se si kle sa a ki egziste, Lè sa a, retounen valè a nan etalaj sa a, Men, si kle a pa egziste, Lè sa a, retounen yon kòd vid. Sa a fonctionnalités a nou vle isit la. Nou vle tcheke si kle a egziste anvan ou eseye gen aksè etalaj la, ak erezman ase, Kohana tou ba nou yon fonksyon k'ap vin ede pou sa. Yo gen sa a Suite antye nan fonksyon anba ARR an non, kout pou etalaj, epi yo gen 1 fonksyon yo rele "jwenn," epi ou ka pase nan etalaj la, epi ou ka pase nan non kle a. Lè sa a, fondamantalman ki sa li pral fè se li pral eseye jwenn ke kle yo, Men, si ke kle pa egziste nan etalaj la, Lè sa a, benediksyon an va tounen vid, oubyen nou ka tou presize yon default, mwen kwè, ki se bèl. Koulye a, si nou fè menm bagay la ankò, Lè sa a, ou wè kounye a li ap travay premye fwa a alantou li, epi ankò, si nou tape nan kèk bagay o aza epi eseye epi soumèt, lè sa a li rete la. Apre sa, mwen devine mwen kapab tou montre w kouman yo ajoute yon modèl vrèman byen vit. Kisa nou ka fè premye se nou kapab ajoute yon View nouvo rele "template.php" nan folder nan Views, ak sa mwen pral fè se mwen pral enprime soti yon bagay yo rele "kontni," ki se pral fè kontni prensipal m 'yo. E petèt nan pati anba a trè mwen pral ajoute, di, copyright. [Kesyon elèv fèbl] [Brandon Liu] Petèt sa a se yon modèl super baz mwen vle itilize. Mwen vle gen yon katab ki gen copyright mwen an sou chak paj yon sèl, e kounye a, sa m ap pral fè nan kontwolè m ' se kounye a olye pou yo di, "fin Kontwolè" Mwen pral di, "fin Controller_Template," e kounye a, olye pou yo di, "kò repons ki egal a sa a wè," Mwen pral di, "sa a kontni modèl se -" e mwen panse - Mwen mete yon siy egal? Mwen bliye. Yeah, mwen te panse sa. Koulye a, mwen mete varyab sa a kontni a egal a gade nan. Mwen kapab fè menm bagay la tou isit la. Epi, koulye a si mwen rafrechi, ou ka wè koulye a, se te ajoute copyright sa a la, ak jis fè kèk pòs o aza, ak Lè sa a, ankò, ou ta dwe wè ke copyright an se nan pati anba a anpil nan paj la. Great. Sa a tout mwen te vle montre ou guys. [Aplodisman] Nenpòt kesyon? [CS50.TV]