[Seminar] [Kohana: A Léttur PHP Framework] [Brandon Liu] [Harvard University] [Þetta er CS50.] [CS50.TV] Hæ allir. Mitt nafn er Brandon. Ég er yngri hér á framhaldsskóla gera tölvunarfræði, og í dag við erum að fara að tala um Kohana, sem er PHP vefur þróun burðargrind. Í dag er að fara að vera lifandi erfðaskrá málstofa, þannig að ég ætla í rauninni að fara að eyða 5-10 mínútur að útskýra hvað Kohana er, og þá er ég bókstaflega að fara að byggja upp frábær einfalt blog fyrir þig hérna bókstaflega frá grunni. Við erum að fara að sækja kóðann frá Kohana website, og við erum að fara að byrja að byggja upp blogg, og vonandi að það verður mjög lærdómsríkt, því þú munt sjá kannski kannski ég ætla að gera nokkur mistök, og þú munt sjá mig batna frá þeim, eða þú munt sjá hugsun aðferð mína og ég byggja í gegnum þetta blogg, og á meðan, munt þú einnig fá kunnuglegur með ramma sig. Vonandi það verður að vera mjög lærdómsríkt æfing. Fyrst, hvað nákvæmlega er ramma? Ef þú hefur verið að taka CS50 svo langt, hefur þú í raun ekki unnið með hvaða ramma enn, og málið er þetta. Þú hefur sennilega gert 1 vefur þróun pset nú þegar, og segjum að þú heldur áfram að byggja upp vefsíður og halda að byggja upp vefsíður. Þú munt byrja að taka eftir nokkrum hlutum. The fyrstur hlutur þú munt taka eftir er að þú ert líklega að gera sömu hlutina aftur og aftur allan tímann, hluti eins og þrífa notandi inntak gögn, hluti eins og að skipuleggja þinn skrá á vissan hátt. The annar hlutur sem þú munt líka sennilega taka eftir er að númerið þitt getur byrjað að verða mjög, mjög sóðalegur, og þú getur skilið það sóðalegur og bara mjög erfitt með að viðhalda því, eða þú getur byrjað að skipuleggja númerið þitt og gera það mát á vissan hátt til að gera það maintainable fleira. Þetta er þar sem vefur ramma kom grundvallaratriðum inn Þetta fólk sem hafði byggt upp einhver fjöldi af websites, sögðu þeir, "Við þurfum ekki að endurtaka þetta í hvert einasta skipti sem við byggja upp vefsíðu." "Eigum við ekki að gera bara pakka sem gerir allt þetta fyrir þig hvert einasta skipti sem þú vilt að byggja upp vefsíðu? " Og svo að þegar þú gera nýja heimasíðu, þú einblína bara á hvað nákvæmlega þetta tiltekna vefsíðu er um. Þú þarft ekki að endurtaka allar hinar ýmsu stillingar og aðskilnaður númerum og endurskrifa kóða að þú þarft oft að gera þegar þú ert að gera vefsíður. Hugmyndin er að ramma leyfir þér að skrifa í aðal-númer án þess að þurfa að hafa áhyggjur af minni-láréttur flötur upplýsingar. A lægra stigi smáatriði gæti verið eitthvað eins og takast á við þrif notandi inntak gögn. Það er eitthvað sem þú ættir ekki raunverulega þörf til hafa áhyggjur óður í. Þú ættir að leggja áherslu á hvaða vefur úthlutun þín er í raun um. Það útilokar fullt af boilerplate kóða. Það er arkitektúr fyrir verkefnið þitt. Vinsælasta einn yrði Model-View-Controller, sem ég ætla að tala um í öðrum. Og mikið af sinnum þessum ramma staðfest þær aðferðir, reglur og bestu leiðirnar til að þú notir þannig að þegar þú samþykkja vefur ramma þú þarft að skrifa númerið þitt á vissan hátt, og það er yfirleitt samið setja af meginreglum af samfélagi sem er almennt viðurkennt að vera góð leið til að skrifa kóðann. Það gerir númerið þitt meira maintainable, fleiri nothæfa, svo framvegis og svo framvegis. Og að lokum, sem ég vil leggja áherslu á um ramma móti bókasöfnum er þessi hugmynd um að hvolfa stjórn, og málið er þetta. Munurinn á milli bókasafn og ramma er að með bókasafni þú ert enn að skrifa the aðalæð program, og þú ert svona skírskota bókasafn og kallar á bókasafn til að gera eitthvað fyrir þig. Munurinn á milli bókasafn og ramma er að ramma byrjar með stjórn, og það vekur kóðann þinn, svo þú getur hugsað það eins og - þetta er hvers vegna það er kallað ramma - ramma veitir þessa ramma og uppbyggingu fyrir kóðann þinn, og þú fylla í holur, og þetta mun verða meira áberandi í annað þegar þú sérð mig byrja að skrifa kóðann í tengslum við ramma. Þú munt sjá að ég er að fylla í eyður, og umgjörð er eins konar stjórna öllum hreyfanlega stykki, og ég verð að setja stykki í réttum stöðum. Í dag erum við að fara að tala um Kohana, sem er eitt af mörgum PHP ramma. Það eru vefur ramma, og það eru þær í nánast hvert einasta tungumál, og ég er að tína Kohana því Kohana er að öllum líkindum og almennt viðurkennt sem auðveldast PHP ramma til að taka upp. Það er mest léttur. There ert annar sjálfur út there þessi koma með mörgum, mörgum fleiri möguleikum, en þeir hafa tilhneigingu til að vera erfiðara að ná sér. Og að lokum, Kohana notar MVC arkitektúr. Það er léttur nóg að við getum bókstaflega að byggja upp verkefni hérna rétt fyrir framan augun, og þú getur nokkurn veginn fylgja eftir nokkuð auðveldlega. Hvað er MVC arkitektúr? Það stendur fyrir Model-View-Controller, og kannski ef þú hugsa um númerið sem þú hefur verið að skrifa svo langt fyrir sumir af vefur þróun psets þínum þú getur verið fær um að sjá eitthvað af þessu, en yfirleitt þegar þú byrjar að skrifa flóknari vefur umsókn, Skilin milli þessara 3 hluta verður meira og meira áberandi. Ég lagði út MVC hér svoleiðis sem stafla, og oft þú munt heyra fólk tala um stöflum í þróun á vefnum, og þetta er að varpa ljósi á þeirri hugmynd að hvert lag, hvor hluti reynir virkilega að aðeins samskipti milli 2 aðra hluti. Einhver notar vefsvæðið þitt sem viðskiptavinur eða vafra. Þeir hafa samskipti við forrit í gegnum the útsýni kóðann. Útsýnið númer samskipti við ábyrgðaraðila. The stjórnandi samskipti við fyrirmynd, og líkanið samskipti við SQL gagnagrunn. Og það er engin hoppaði á milli ef þú skrifar kóðann þinn almennilega. Hvað gera þessir hlutir gera? Líkanið er í meginatriðum stykki af kóða sem fæst við gögnunum. Nokkuð sem fæst við gagnagrunninn, með hlutum sem þú geyma, eða sækja þá hluti í gagnagrunninum, það er allt stjórnað af líkaninu. Kannski þú hafa hluti í gagnagrunninn. Við erum að fara að búa til líkan sem hefur að gera með innlegg, svo staða kann að hafa ýmis einkenni á henni. Þú gætir hafa aðgerðir í kring geyma þau innlegg eða sækja innlegg eða sía innlegg og svo framvegis og svo framvegis, og það er allur kóðinn sem er stjórnað af líkaninu. The stjórnandi er tegund af umsókn rökfræði, og mikið af mismunandi hlutum getur farið í umsókn rökfræði. Ef þú ert að tala við aðra API, sem kunna að vera þar sem þú ert að takast á við umsókn rökfræði. Ef þú ert að reyna að verða að koma í gögn frá mörgum mismunandi gerðum og verða að sameina þær á einhvern hátt, sem oft kunna að vera meðhöndlaðir af ábyrgðaraðila. Til dæmis, á Facebook, ef þú vinur einhver, þá kannski að athöfn koma þessi tengsl má gera með því að stjórnandi. Og að lokum, útsýnið er kóðinn sem er að búa það sem þú sérð í raun. A einhver fjöldi af sinnum ég held að í CS50 psets þeir í raun ekki að hvetja ykkur til að aðgreina þessa 3 hluti. Þú munt sennilega hafa þetta stóra, langa skrá þar efst þú gera sumir SQL fyrirspurn og kannski gera sumir vinnslu á gögn sem þú sækja úr gagnagrunninum, og þá hafa öll HTML neðst. Og þú getur fundið það sem þú býrð til fleiri og fleiri síður að þú ert að fara að hafa nokkur númer endurtekningar, og einnig, málið er skráin fær virkilega stór og langur og verður ómeðfærilegur að stjórna. Ástæðan MVC er svo vel litið er fyrir a tala af ástæða. The fyrstur hlutur er eitthvað sem kallast aðskilnaður áhyggjum sem er sú hugmynd að þegar þú ert - helst 1 stykki af kóða ætti að gera 1 hlut og gera það mjög vel, og þú ættir ekki að sameina stykki af kóða sem gera ólíkum hlutum. Til dæmis skoðað kóðann og líkan númer, þeir gera ekki raunverulega verða að vera tengdar. Þeir þurfa ekki að vera í sömu skrá, þannig að þegar þú getur skaltu aðskilja þau út svo það er auðvelt að viðhalda. The annar hlutur er kóða endurnýta. Þú getur fundið þér að yrkja sömu SQL fyrirspurn eða gera svipaðar fyrirspurnir sem hægt væri að abstracted í 1 virka, og það er hugmyndin á bak við gerðum og stýringar, hafa það í sérstakri aðgerð sem þú getur endurnýta á mismunandi stöðum í verkefninu. Og að lokum, það er bundin við þurrkun númerið þitt, eða ekki að endurtaka þig, ekki endurtaka ekki sjálfur. Þetta er mjög skiljanlegur í þróun. Alltaf þegar þú getur, vilt þú ekki að endurtaka sjálfan þig, því ef þú endurtaka sjálfan þig,  það er miklu dýrari að halda. Ef þú vilt breyta 1 hlutur, þú þarft að breyta því alls staðar, og sem leiðir til galla, og það er hræðilegt. Allt í lagi. Einhverjar spurningar svo langt um Kohana yfirleitt? Great. Nú erum við að fara að kafa í lifandi erfðaskrá fundur, og vonandi gengur allt vel. Ég er að fara að í grundvallaratriðum að byggja þessa vefsíðu á einn af fjarlægur framreiðslumaður minn, og þannig að þú krakkar geta einnig sjá heimasíðu og aðgang að vefsíðunni, og einnig umhverfið er betra stillt en fjarlægur vél mína, því það er í gangi Linux í stað OS X. Við erum bókstaflega að fara að byrja. KohanaFramework.org. Ég ætla að sækja kóðann frá the website. Ég ætla að afrita á tengilinn heimilisfang, fara til minn framreiðslumaður, sækja það, og ég ætla að draga það. [Nemandi] Hvað er stærsta sem þú getur gert textann? [Brandon Liu] Er það betra? [Nemandi] Er það mögulegt? [Brandon Liu] Já, það er allt í lagi. Ég niður á ZIP skrá og unzipped að í möppu sem heitir Kohana, og við erum að fara að endurnefna þær CS50-Kohana, og við skulum fara inn Ógnvekjandi. Hér sérðu helling af mismunandi skrár. Flest af þú getur hunsa - förum ekki að fara í gegnum hvert einasta skrá sem er í hér vegna takmarkana tíma okkar, en yfirleitt þegar þú setur Kohana, það fyrsta sem þú gerir er þú ferð í möppuna, og þú munt í raun gera sumir umhverfi próf og whatnot að ganga úr skugga um umhverfi þitt sé rétt stillt til að keyra Kohana og ganga úr skugga um að allt sé í lagi. Þú getur séð flesta hluti liðið, en almennt þú keyrir alltaf inn í þetta 1 vandamál þar sem það kvartar að sumir skrá er ekki skrifanleg, og það er vegna þess að sum leyfi. Ég veit ekki hversu mikið þið hafið lært um skrá heimildir í CS50, en ef þú gerir vefur þróun, ætlar þú að fara að keyra inn í þetta mál mikið. Ég ætla að gera það skrifanleg og ég held að ég hafi líka til - það sem við förum. Lagi, svo nú er hægt að sjá allt liðið, og nú mun segja þér að endurnefna install.php skrá. Ég ætla að færa install.php skrá til installed.php, og nú ef ég hressa, það gefur mér villu, og þetta er þar sem kembiforrit koma inn Þetta er þar sem þú getur séð hvað er í raun að fara að gerast. Málið er, við vanræksla, Kohana gert ráð fyrir að verkefnið er á the rót skrá af ríki þínu, svo það er von á þér að vera á demo.brandonkliu.com. Við verðum að segja það að það er í raun í undirmöppu. Það er í undirmöppu sem heitir CS50 Kohana. Málið er, það er að rangtúlka CS50-Kohana eins og eitthvað annað sem ég skal útskýra fyrir þér í annað. En ég ætti að segja þér það er eitthvað sem er að vænta. Það sem við erum að fara að gera er að við erum að fara að fara inn í þessa möppu sem heitir bootstrap.php, sem er stelling mappa þar sem mikið af mismunandi hlutum eru sett upp. Ég opna það upp. Þá kannski einn af the fyrstur hlutur ég mun gera er að breyta tímabelti. Og þá skulum sjá. Aha! Hérna. Það eru fullt af mismunandi orð stillingar hér, en það sem ég er að leita að er þetta kallað stöð URL, og við vanræksla ég fá það sett á Kohana, en ég ætla að breyta því til CS50-Kohana, og ég held að ætti að laga það. Já, frábært. Sjálfgefið, að sjá að það er að vinna, það segir, "Halló heimur." Hvaðan kom þessi koma frá? Hvernig fengum við til Hello World? Hvar nákvæmlega er kóðinn sem í raun skrifaði það? Til að skilja það, ég kynna þetta hugtak sem kallast venja. Nánast allur vefur ramma hafa hugtakið kallast venja, sem er stykki af hugbúnaður þessi vilja kortleggja ákveðna vefslóð til ákveðna stykki af kóða innan ramma þinn. Til dæmis, ef þú hafa sumir slóðina og þú fara að sumir URL eins foo.com / blog / allt þá hvað umgjörð er að fara að gera - eða að minnsta kosti hvað Kohana er að fara að gera - er það er að fara að finna flokk sem heitir stjórnandi blogg, og það er að fara að keyra virka heitir aðgerð alla. Ég veit að ég er að tala um flokk og aðgerðir, og ég veit að þú krakkar hafa ekki fjallað bekkjum og aðgerðir í CS50 enn, en nú, þú getur hugsa um flokka sem bara hópur af störfum, leið hópar virka saman. Það er í raun allt sem þú þarft að vita. Nú ef við skoðum uppbyggingu mappa okkar, inni umsókn mappa er annar mappa sem heitir flokkar, og aðrar möppur eru kallaðir Controller og Model. Ef þú lítur inn í Controller möppu, sjáum við að það er skrá sem heitir Welcome, og þú getur séð hér er flokkur sem kallast Controller Velkomin, og það er fall sem kallast Action Index, og hvað það gerir er að það setur líkama svörun þinni við Hello World. Það er þar sem númer er skrifuð. Hin spurningin er, vel, ég vissi ekki að fara til bla, bla, bla, / velkomin / index. Hvernig gerði ég á endanum hér? Jæja, það er einfaldlega vegna þess að hér neðst á ræsi skrá okkar þar sem við setja okkar leiðum þú getur séð að þeir setja nokkur vanskil fyrir þig. Sjálfgefið stjórnandi velkomnir. Sjálfgefin aðgerð er Index. Þess vegna þegar við setjum ekkert í það og það gekk sjálfkrafa til the Velkominn stjórnandi og vísitalan Action. Allt skynsamleg svo langt? Nú getur þú gert meira en bara að fara að Controller og ákveðna aðgerð. Þú getur einnig borist í breytum við stjórnandi. Rétt eins og dæmi, Ég ætla að bæta við öðru aðgerða til þessa stjórnandi til að sýna þér. Við skulum kalla þessa aðgerð Echo, því það er að fara að segja þér hvað þú gefur henni, og svo ég er í rauninni að fara að grípa breytu sem er að fara að senda í gegnum mig til að venja program, og eins og þú sérð hér, Þessi lína hérna, getur þú séð að Þetta þýðir í rauninni að þú ert stjórnandi, og þú hafa a /, og þú hefur til aðgerða, og þú hefur aðra /, og það er að fara að vera breytur, og vegna þess að við höfum þetta nafn ID innan sviga horn, sem þýðir að við erum að nefna þessa breytu ID. Síðar í stjórnandi númerið mitt ef ég vil grípa til að halda því viðfang, Ég get notað kóðann sem ég skrifaði, að finna breytu sem heitir ID. Það er það sem ég gerði hér, og ég ætla að fara aftur og segja, "Þú sagðir" það. Og svo núna ef ég fer á heimasíðu okkar, Ég fer til cs50-kohana/welcome/echo/Helloooo-- ó, það er rétt. Það er 1 skref ég fór út. Þetta er hluti af lifandi erfðaskrá hugmynd. Hér er 1 hlutur. Við skulum sjá. Svo yfirleitt sjálfgefið með mikið af þessum forritum vefur þú þarft að fela þennan index.php hlutur í slóð þína, vegna þess að hugmyndin er index.php er tegund af innganga benda á umsókn þinni, en auðvitað, það er tegund af pirrandi að hafa. Þú vilt ekki að hafa index.php birtast í slóð þína, og laglegur mikill sérhver vefur ramma út af the kassi hefur þetta index.php vandamál, og svo þú þarft að taka nokkrar ráðstafanir til að vera fær um að fjarlægja það. Og þannig að í þessu tilviki, hvað við erum að fara að gera er að við erum að fara að nota til skrá sem kallast. Htaccess, og þetta er eitthvað sem er sérstaklega við Apache vefþjónsins, og það getur gert hlutina eins umrita vefslóðir og endurvísunarslóðum og svo framvegis og svo framvegis, og Kohana er ágætur nógur til afla sniðmát. Htaccess skrá sem við getum notað. Eins og þú geta sjá, there er a skrá þar sem heitir example.htaccess, og við erum að fara að afrita það til. Htaccess. Ég ætla að opna þetta og breyta henni, og í rauninni er það fullt af mismunandi hlutum. Lykillinn lína getur þú vilt líta á er hérna. Hugmyndin er að þetta setur upp reglu sem segir, "Allt í lagi, hvað sem þú skrifar í, prepend index.php að því." Þú getur séð það. The. * Stendur fyrir neitt, passa neitt, og þá er seinni hluti index.php / $ 0, og $ 0 vísar til hvað var samþykkt áður. Er að skynsamleg? En raunverulega lykillinn hlutur sem ég vil breyta er breyta þessum umskrifa stöð, sem er URL stöð. Það er gert ráð konar þar sem þú ert að vinna úr. Ég ætla að bæta CS50 Kohana að því, og þessi leið nú ef ég fjarlægja index.php, það ætti að virka, og ég ætla að bæta nokkrum númerum til að sýna þér að það gerði örugglega vinna. Hljómar vel. Einhverjar spurningar svo langt? [Nemandi] Hvernig var það vita til að gera 123? Er að rifrildi? Nákvæmlega. Þú getur hugsað það eins rifrildi. En furðulegur hlutur, þó, er að leiðin Kohana gerir það er þeir gera það ekki nákvæmlega eins og rifrildi. Þú þarft að grípa það svona. Þú þarft að grípa hlut beiðni og biðja um breytu sem er heitir ID, og nafn ID kemur frá þeirri ræsi skrá sem ég sýndi áðan, og nafn ID var í þeim sviga horn, og það er hvernig þú grípa þeim breytum. Ógnvekjandi. Aðrar spurningar? Eins og ég sagði, stýringar, höndla þeir umsókn rökfræði, svo það er 1 dæmi þar sem þú getur séð That - það er mjög einfalt, en það er samt umsókn rökfræði, Hugmyndin um grabbing breytu og búa til nýja band sem segir: "Þú sagðir bla," og þá spúandi það aftur til þín. Og almennt hvað þú gerir er að þú búa til mismunandi stýringar. Þú búið til sérstakar stýringar fyrir mismunandi hluta vefsvæðisins. Í dag erum við að fara að gera mjög einföld vefsíða, og það er að fara til vera a mjög undirstöðu blogg. Við erum að fara að gera nýja stjórnandi bara fyrir innlegg í bloggið. En þá ef ég væri að einnig bætt við athugasemdum við blogg, þá myndi ég sennilega vilja til að gera nýja stjórnandi fyrir þeim athugasemdum. Ef ég vildi bæta við notendum, myndi ég líklega bæta við nýjum stjórnandi fyrir þá notendur, og almennt, hugmyndin er að þegar þú ert með nýja gerð, ný gögn hlut sem þú ert að takast á við, þú hafa a einn stjórnandi fyrir að gögn mótmæla. Í dag erum við bara að fara að vinna með 1 gögnum hlut, og það er að fara að vera innlegg, og einnig er hægt að hugsa af hlutum gögn sem samsvara töflum. Almennt samsvarar hvert borð til 1 tegund af gögnum hlut, svo sem staða borð vilja hafa 1 post líkan, sem mun hafa 1 post stjórnandi samsvarar því, og sama fyrir athugasemdir, það sama fyrir notendur, og svo framvegis og svo framvegis. Og það er almenn þumalputtaregla. Það eru að fara að vera sérstakt tilfelli þar sem þú gæti verið annað að, en 90% af þeim tíma sem er það sem þú ert að fara að vera að gera, og ég skal sýna þér það er það sem við erum að fara að vera að gera í dag. 1 meira hugtak en við kafa aftur í kóða, þessi hugmynd mótmæla Vensla kortlagning. Þið hafið þegar gert vefur þróun pset, og þú hefur séð að þú gerir SQL fyrirspurn, og hvað sem það skilar til þín eru raðir. Þú færð þessi raðir, og þú vísitölu þá með sumir nafn, nafn í dálkinn og borðið, og það er hvernig þú vinnur með það, og það geta vera a hluti fyrirferðarmikill. En fremur, ef þú hefur sambönd innan gagnagrunninn þinn, eins og til dæmis ef ég hef athugasemdir og innlegg, þá kannski vil ég að grípa foreldri innleggi í comment. Ef ég nota bara raðir í SQL, þá er allt sem ég get fengið auðkenni af upprunalega staða og ekki í raun eftir sig. En þegar við erum forritun, hvað við viljum í raun og veru er að í raun grípa  foreldri eftir sig stundum. Hvaða hlut Vensla kortlagning gerir er það tekur niðurstöður gagnasafn fyrirspurn og setur það í hlutum fyrir þig, sem eru miklu betur að vinna með en látlaus fylki og raðir. Til dæmis, nú þegar ég hef athugasemd kannski, og ég vil grípa foreldri staða þess, og ég comment kannski arrow færslu, þá mun það raunverulega gefa mér Póst hlut samsvarar raunverulegu foreldri staða, ekki bara sumir ID, sem ég myndi annars hafa til að nota og gera annað SQL fyrirspurn til að grípa færslu, sem er fyrirferðarmikill og óþarfa. Og ennfremur, því að kortleggja Allar þessar upplýsingar raðir í hlutum, Þú getur einnig hengja fleiri aðgerðum hlutum, Svo til dæmis, ég talaði um hvernig flokkar eru í meginatriðum söfn virka. Þú getur hugsað það eins og þessi. Til dæmis, ef til vill hef ég þessa færslu hlut, og kannski langar mig að hafa einhverskonar virkni fylgir því sem í grundvallaratriðum segir mér var það staða nýlega? Var það staða innan síðustu viku, satt eða ósatt? Og það er fall Ég get hengja á hlutnum, og það er mjög þægilegt að hafa það á sama stað, og það eru fjölmargar mismunandi aðgerðir sem þú getur búið fyrir þessum hlutum, og það er mjög gaman að vera fær um að hengja það á bekknum, til að mótmæla, en ef þú hefðir bara raðir koma úr gagnasafninu, þá getur þú í raun ekki hengja allir virkni við það. Það er bókstaflega bara gögn. Einhverjar spurningar um það yfirleitt? ORMs eru mjög algeng vefur þróun, og það eru fullt af mismunandi tegundir af ORMs, og Kohana hefur eigin Ormur sína. Það er mjög einföld, en þú munt fá a finna bragð af því sem það lítur út. Við skulum búa til líkan fyrir bloggfærslur okkar, og það fyrsta sem við þurfum augljóslega að gera er að búa til raunverulega borð innan þess gagnasafn okkar til raunverulega geyma gögn okkar fyrir þau innlegg. Það fyrsta sem ég ætla að gera er að fara til phpMyAdmin. Hefur þú krakkar nota phpMyAdmin áður? Jæja, ógnvekjandi, svo þú krakkar þegar vita hvað það er, og ég ætla að búa til nýja töflu sem heitir Kohana Posts, og það er að fara að vera mjög einfalt. Ég ætla að skrá þig aftur inn Allt sem við erum að fara að gera í dag er að hafa höfund og líkama, bara að halda það einfalt. Ég ætla að búa til þessi borð, og nú höfum við bara töflu hönd innlegg okkar með 2 reiti fyrir höfundi okkar og líkama okkar. The annar hlutur sem ég er að fara að gera núna er stilla vefur umsókn mína svo það veit hvernig á að tengja við gagnagrunn, og þetta, aftur, er eitthvað sem þú verður að gera við allar vefur umsókn. Þú verður að segja það eins og notandanafn og lykilorð og nafn gagnagrunnsins og svo framvegis og svo framvegis að reikna út hvernig til raunverulega tengja til þinn gagnasafn. Í Kohana, höfum við eitthvað sem kallast gagnasafn mát, og í uppsetningu möppu við höfum þessa möppu sem heitir Database, og eins og þú geta sjá, there ert a búnt af stillingum sem þú þarft að setja hér að segja það hvað er notandanafn og lykilorð í gagnagrunninn þannig að ég get í raun tengja við það. Og þar sem ég vil ekki að þú krakkar í raun að vita notandanafn og lykilorð gagnagrunninum mínum, ÉG hafa a skrá þar sem ég setti nú þegar það allt upp, og ég ætla að afrita og líma það yfir. Ógnvekjandi. Allt í lagi. Ég held að það er allt stillingar sem ég þarf að gera, en við skulum sjá. Við höldum áfram að vinna í henni, og ef eitthvað hrun, þá munum við laga það. Nú er það sem ég ætla að gera ég ætla að búa til nýja stjórnandi. Eða í raun, því miður. Fyrst verð ég að búa til nýja fyrirmynd. Ég að búa til nýja gerð sem heitir Post.php, og hvað við erum að fara að gera er að við erum að fara að kalla það Class Model_Post. Fá sumir setningafræði auðkenning á, og svo þegar ég segi, "nær Ormur," það er í grundvallaratriðum sumir meira hlutbundin forritun, sem því miður þið hafið ekki lært í CS50 enn, en það er frekar auðvelt að ná sér. Það gefur mér allt þetta auka virkni sem kemur í þessum Ormur pakka, og svo fæ ég fullt af auka virka og whatnot fyrir frjáls, sem þú munt sjá smá í annað. Núna reyndar er allt sem ég þarf að gera að búa í þessum flokki. Ég er ekki einu sinni að gera hvaða aðgerð eða neitt, en ég hef búið til klasa sem sýnir í töflunni, og vegna þess að ég hef framlengt þessa Ormur bekknum, Ég fæ fullt af hlutum fyrir frjáls, þannig að nú er þú þarft ekki að setja neitt meira upp. Og nú er það sem ég ætla að gera ég ætla að búa til nýja stjórnandi, sem ég ætla að nefna blog.php, og ég ætla að afrita yfir Velkomin stjórnandi svo ég þurfi ekki að retype smá dót, og nú þarf ég að endurnefna þetta. Hvað ég ætla að gera að prófa að ganga úr skugga um að allt virki út núna, Ég ætla að grípa í fyrsta innleggi frá gagnagrunninum mínum og prenta í meginmál staða á skjánum. Til að gera það sem ég ætla að gera fyrst er að ég ætla að vista innlegg til a breyta þannig það sem við erum að fara að gera er - í Kohana hvað þú gerir er að grípa staða mótmæla það er góður af fyrirferðarmikill, en þú þarft að gera þetta kallast Ormur :: verksmiðjunni, og þá fara í nafni fyrirmynd sem þú vilt, og það skilar Ormur hlut sem táknar að fyrirmynd. Og þá, eins og ég sagði, þegar við lengja Ormur hlut, við fá allar þessar aðferðir fyrir frjáls, svo til dæmis, fáum við þetta nýja hlutverk sem kallast "finna allt," sem sjálfkrafa skilar hvert einasta staða í gagnagrunninum, sem er ansi þægilegt. Og nú í líkamanum sem ég ætla að fara aftur fyrsta færslan og aftur líkama hans. Og auðvitað, ég þarf að búa til færslu þannig að við skulum setja inn nýja færslu. Ég segi, "Brandon, fyrstu færslu mína." Ógnvekjandi. Og nú erum við að fara að fara að blogga og ef allt virkar vel - ó, þetta er einhver önnur heimsk skrá leyfi hlutur aftur. Bíddu 1 sekúndu. Það er góður af fáránlegt. Svona. Allt í lagi. Ég var að laga það leyfi vandamál. Það var að reyna að búa til nokkrar skrár og sumir skrá þig inn, og heimildir, aftur, voru ekki rétt stillt, þannig að ég gerði það svo þær skrár voru skrifanleg og executable svo það gæti í raun skráð þig í ýmislegt. Nú það er að gefa mér annað undantekning orðatiltæki, "Class Ormur fannst ekki," og það er vegna þess að ég gleymdi eitt skref. Það er slæmt. Í ræsi mappa, eru þessar einingar hér, sem þú getur valið um að kveikja eða slökkva. Þetta eru fullt af mismunandi lögun sem þú getur valið að nota innan Kohana, sem er tegund af gaman. Til dæmis, þeir hafa staðfesting mát sem þú getur notað til að staðreyna notendum. Þeir hafa búrhvalur mát ef þú vilt að framkvæma einhverskonar flýtiminni aftur enda gera forritið vinna hraðar og whatnot. Við þurfum að gera gagnagrunn og Ormur mát, því eins og ég sagði, við erum að nota gagnagrunninn, augljóslega, og við þurfum líka að gera Ormur mát, vegna viljum við hafa auka virkni, sem er gott að hafa. Allt sem ég þarf að gera er uncomment þessir 2 línur, og nú ef ég hressa, gaf það mér annan villa. Það segir, "Class Model_Post fannst ekki." Nú er þetta góð vandamál að hafa. Við skulum sjá. Gera það opinberlega. Nei Bíddu. Ó, kæri. Ég veit ekki hvers vegna það er ekki hægt að komast að því. Það er mjög undarlegt. Ég hef þennan flokk hérna. Ég held ég gæti þurft að - ó. Ég er svo heimsk. Ég gleymdi að bæta við PHP merkinu. Það er ástæðan. Nú þarf ég að losa það 1 breyting sem ég gerði bara. Lagi. Svona. Sem var mjög kjánalegt. Ég vissi ekki að hafa opnun PHP tag. En eins og þú geta sjá, nú það er að vinna almennilega, ekki satt? Við höfum 1 staða. Við grípa fyrsta færslan, og nú erum við prentuð út líkama hennar. Great. Frábær. Einhverjar spurningar svo langt? Nei? Einhverjar spurningar? Allt í lagi, þannig að við bjuggum bara Póst líkan, mjög undirstöðu, og við erum að fara að bæta við sumar aðgerðir síðar. Getum við bætt við fullgildingu og sía. Staðfestingar ert einn af þeim hlutum að ramma leysa fyrir þig virkilega, virkilega vel, og ég held ekki að þú krakkar þurfti að gera þetta fyrir CS50 pset þinn, en ef þú gerir vefur þróun fyrir lokaverkefnið þitt, þú ert líklega að fara til að vilja gera einhvers konar mat, eins og að hafa ekki auða notendanöfn, kannski hafa lykilorð með að minnsta kosti sumir lengd, hlutur eins og þessi. Og það er mjög fyrirferðarmikill til að innleiða þetta með okkur, og nánast hver einn vefur ramma gerir það fyrir þig og leyfa þér að gera það í mjög hreinum hátt. Og líkanið er þar sem þú tjá almennt þá löggilding reglum, því það er að staðfesta hvort líkanið er gild eða ekki. En nú erum við að fara að setja það fyrr en síðar, og nú erum við að fara að vinna á annan hluta, og við erum að fara að reyna að gera nýja sýn sem birtir öll innlegg. The stíga flókinn í að gera nýja aðgerð fyrir skráningu allra innlegg er að grípa til lista yfir öll innlegg og þá láta lista yfir öll innlegg í gegnum skoðun. Hérna, sem betur fer nóg, greip við nú þegar öll innlegg nota þessa fyrstu línu, sem finna allt virka, og nú er það sem við erum að fara að gera svo langt Ég hef verið beint að setja líkamann á svörun við brottför band, en nú vil ég að nota mynd, og munurinn á milli í huga og bara að gera þetta er með það í huga sem ég get hafa a ágætur, stór HTML sniðmát, og hvað ég get gert er að gefa það ákveðnar breytur og þá hafa útsýnið sjálfkrafa byggja sniðmát sína nota þessar breytur. Það sem ég geri er ég að búa til nýja sýn, og ég ætla að nefna þá skoðun eitthvað eins og "blog / vísitölu," og ég ætla að grundvallaratriðum binda þetta - ó, hvað er ég að skrifa? Heilinn minn er einhvers staðar annars. Ég ætla að binda innlegg breytu til að skoða, þannig að leiðin útsýnið hefur aðgang að þessum eftir breytu. Og svo nú þarf ég að búa til þessa mynd, Svo hér höfum við þessa möppu sem heitir "Sýn", og fyrst ég er að fara að búa til nýja möppu undir því heitir "blogg." Þetta er gott. Þannig að við getum haft gott stigveldi fyrir sjónarmiðum okkar. Og þá ætla ég að búa til aðra skrá í það sem kallast "index.php." Ógnvekjandi. Reyndar skulum við hafa þá báða hér. Making A View skrá er líklega einfaldasta hluti af öllu þessu, og þetta eru sennilega hlutir sem þú ert þegar kunnuglegur með. Við erum að fara að gera eitthvað mjög einfalt, byrja að segja, "listanum mínum bloggfærslum." Þá getum við farið í gegnum, og við getum iterate gegnum the staða fylkisins, grípa hvert einasta staða og segja eitthvað eins og - kannski bæta við línu og síðan prentað út höfundar og líkama. Að skynsamleg svo langt? Og við skulum sjá hvort það virkar. Ekkert gerðist. Ég velti því hvers vegna. Ó, ungfrú ég 1 skref. Mjög kjánalegt af mér. Ég bjó til mynd, en ég hafði ekki sett þá skoðun sem svari, svo þú þarft að gera 1 í viðbót. Þú þarft að gera "þetta svar líkama" og setja það til að vera að skoða. Svona. Við höfum fyrirsögn okkar, og þá höfum við færslu, og bara fyrir ánægja, við skulum setja aðra færslu svo við getum séð lista. Og settu þessar 2 innlegg, og nú ef ég endurnýja síðuna sjáum við allar þessar færslur hér. Er að skynsamleg svo langt? Já, spurning? Ó, allt í lagi. Eins og þú geta sjá, við höfum getað til að aðgreina öll þessi númer út í mismunandi hlutum, og þá getur þú séð að það er mest ljóst með útsýni kóðann. Þessi skrá hér sem sýnir útsýnið, það er ekki sama aðeins um hönd gögn, birta gögn. Það verður samþykkt einhvers konar gagna, og allt það gerir er bara að sýna ykkur hana. Í öllum öðrum hlutum kóðanum þínum, verður þú ekki að hafa áhyggjur óður í allir af því, og álíka, skoða kóðann þinn þarf ekki að hafa áhyggjur neitt um hvernig á að fá aðgang að gagnagrunninum og svo framvegis og svo framvegis, sem er mjög gott og gerir kóðann þinn mikið meira maintainable. Eins og ég sagði, skoðanir, þeir dynamic í að það er 1 skrá, en það myndi búa til mismunandi skoðanir byggt á breytum sem þú standast í raun í, og ennfremur, there ert a einhver fjöldi af mismunandi valkosti hjálpar sem þú getur notað til að hjálpa þér að skrifa kóðann hraðar, sem ég mun sýna þér á aðeins sekúndu. Já. [Nemandi] Svo 0 $ er stjórnandi, ekki satt? Sem annað mál. Spurningin er er $ 0 stjórnandi? 0 $ er breyta sem ég skapa hér. Ég bjó til mynd fyrst. Ég úthlutað það að einhverju breyta. Þá er ég fór það í þessa aðgerð, setja það sem meginmáli svar. Er að skynsamleg? [Nemandi] Svo er útsýni :: verksmiðju, er útsýni eins og a tegund eða bókasafn [inaudible] verksmiðju virka? Spurningin er um sýn :: verksmiðju virka, og í rauninni er þetta meira hlutbundin forritun í meginatriðum. Útsýni er útsýnið bekknum, og það hefur aðferð sem kallast "Factory" og það er leið til að grípa hlut sem er heitir "blogg / index." Og það er meira hlutbundin forritun efni að ég ætla ekki að fara inn hér of mikið. Nú augljóslega viljum við að búa til nýjar færslur, en við viljum ekki að þurfa að gera það í gegnum gagnagrunn, þannig að við erum að fara að búa til nýja aðgerð til að búa til nýja færslu, og það er mikið af efni sem við þurfum að gera. The fyrstur hlutur sem við erum að fara að gera - við skulum takast þetta eitt af öðru. The fyrstur hlutur sem við munum gera er að við verðum að búa til mynd til að setja nýja færslu, en ég ætla líka að fara að bæta við nýja aðgerð fyrst, svo er alveg jafn auðvelt og að bæta við nýja aðgerð bæta við nýjum virka með stjórnandi þinn, og nú ég ætla að gera eitthvað mjög einfalt, bara grípa þetta sjónarmið og eftir það á bara að sýna það fyrir þig. Og þá nú ætla ég að búa til nýja sjá skrána, og ég ætla að byrja að skrifa smá dót. Hvað er gott um Kohana er að þeir veita mikið af mismunandi aðgerðir hjálpar fyrir þig að skrifa skoða kóðann fleiri auðveldlega, og 1 af þeim hjálpar virka eða hjálpar mát er um að skrifa form. Til að skrifa form, ég í raun ekki að beint skrifa allir HTML sjálfur. Þú krakkar hafa skrifað HTML formum. Þú veist hvernig það getur verið virkilega, virkilega sársaukafullt og fyrirferðarmikill til að skrifa form. Það er ekki gaman, svo sem betur fer, við getum í rauninni skrifa mynd með Kohana er mynda hjálparstarfsemi sem að gera það fyrir okkur. Við erum að fara að í grundvallaratriðum hafa reiti fyrir hvert einasta hlut sem við höfum, svo einn fyrir höfunda og einn fyrir þá aðila. Við ætlum að hafa merki, og við erum að fara að hafa inntak. Og svo að lokum, við erum að fara að hafa uppgjöf. Og eins og þú geta sjá, þetta er miklu hreinna að skrifa en öll þessi sóðalegur HTML, sem er bara gott. Leyfishafi, það eru önnur umgjörð vefnum sem hafa það jafnvel hreinni en það, en að minnsta kosti þetta er betra en að skrifa í HTML-sjálfur. Ógnvekjandi, svo er þetta það sem þú sérð. Það er góður af sóðalegur, þannig að ég ætla að bæta við línu brot þar til að gera það líta svolítið betur. Jæja, auðvitað, það lítur samt mjög, mjög slæmt, en við erum bara áherslu á virkni fyrir nú og ekki á fagurfræði. Enginn tími til að gera allt. Og eins og þú geta sjá, nú erum við með frábær undirstöðu form, sem er bara gott. Þetta númer sem ég vildi segja er hreinni en að reyna að skrifa HTML formi sjálfur, svo er það gott. Hvað er næst? Nú þurfum við að gera hlutina með aðgerð. Venjulega þegar þú skrifar HTML formum, þú þarft að segja það þar sem það er að fara að senda inn mynd til. Sjálfgefið í flestum vefur ramma, það leggur á nákvæmlega sama URL, þannig að málið er, ef þú sendir fá beiðni um að / blog / ný, það ætti að sýna þér mynd, en ef þú sendir a staða beiðni til / blog / nýr með gögnum, það ætti í raun að reyna að spara þessi staða og gera eitthvað með það. Það sem við erum að fara að gera er að grundvallaratriðum allt sem við þurfum að gera til að athuga hvort það er staða beiðni eða FÁ beiðni er að athuga hvað er post breytur sem þú getur sett. Og ef staða breyta er sett, þá erum við að fara að reyna að búa til nýja færslu. Aftur, gera við bara þetta, og það skapar nýja færslu, og við erum bókstaflega að fara að setja viðfangsefnum hennar eins og þetta, og þá erum við að fara að vista það. Og þá ætla ég að beina að upphafsíðu svo þeir geta séð lista yfir innlegg aftur. Við skulum reyna það. Ég segi, "Brandon," og síðan senda færslu, og ef allt gengur vel, eins og þú geta sjá, vísað það mig til að upphafsíðu, og ef ég fletta til the botn, við höfum nýlega sett færslu. Yay! Já, spurning. [Nemandi] Hvað ef þú hefðir slegið nákvæmlega það sama þú slegið áður? Er það stöðva til tryggja þú hafa ekki afrit sama uppgjöf? Vera sjálfgefið, nei, vegna þess að með því að vanræksla - Því miður, spurningin er ef þú slærð inn í nákvæmlega sömu gögn í formi og leggja það mun leyfa þér að setja inn afrit hlut, A afrit færslu, fyrst og fremst? Núna, já, það mun leyfa þér að gera það, vegna þess að í gagnagrunnum það er fullkomlega réttmætt að hafa alveg afrit raðir, en ef það er áhyggjuefni, þá er hægt að bæta við fullgildingu, til dæmis, að ganga úr skugga um að ef þetta er nákvæmlega það sama og eitthvað sem er þegar til, þá segja að það er ógilt hlut, og þá er jafnvel hægt að tilgreina villa skilaboð og segja, "Ógilt því þetta er þegar til" eða eitthvað svoleiðis. En í þessu tilfelli, ég gæti bara búið eitthvað til afrit. Nú skulum reyna og bæta nokkrum fullgildingu. Vandinn við þetta er núna að Ég gat bókstaflega skila alveg autt færslu. Ég get smellt á þennan hnapp núna, og þar sem við förum. Þú getur í raun ekki séð það, en þetta auka lína hér bendir til þess að ég hef bókstaflega nýja færslu. Það hefur bara tóman höfund og tóman líkama, og við viljum ekki að leyfa fólki að gera það. Þetta er þar sem löggilding kemur inn Ég get farið á líkan hlut minn, og nú get ég bætt við nýjum virka sem skilgreinir hvað löggilding reglum Ég ætti að bæta við að þetta líkan að ganga úr skugga um að það er í gildi eða að tilgreina hvað þýðir það að vera gilt álit? Og ég vil segja að það er aðeins gilt eftir á ef bæði höfundur og líkama eru ekki autt, og þetta er hvernig þú gerir það í Kohana. Þú býrð til nýtt fall sem kallast "reglum" og þá aftur í grundvallaratriðum tengin array sem skilgreinir á fullgildingu reglur fyrir þennan hlut. Við erum að fara að skila array, og þá er það sem við erum að fara að gera segja "Höfundur", það fer til fjölda, sem fer á aðra fylking kallast "ekki tómt." Og þá ætla ég að segja "líkama." Allt í lagi, og setningafræði fyrir þessu og uppbygging fyrir þetta getur að líta smá fyrirferðarmikill og svolítið flókið. Ef þú lest skjöl, það er frekar einfalt að reikna út, En í raun er þetta það sem þú þarft að gera til að tilgreina sumir löggilding reglum, og það eru fullt af öðrum reglum að Kohana mun gefa þér fyrir frjáls, eins og þú geta bæta við reglum til að segja það verður að vera að minnsta kosti þessari lengd. Kannski hefur það að vera tölugildi. Kannski hefur það að vera alfa tölustafir. Kannski hefur það að vera í mesta lengd, svo á og svo framvegis. There ert a einhver fjöldi af mismunandi reglum sem Kohana veitir fyrir þig, og þú getur farið á heimasíðu þeirra, líta á gögnum, og þú getur séð allar mismunandi hluti sem þú getur gert. En þetta er allt sem ég þarf að gera, og nú skulum sjá hvað gerist ef ég skila inn tómt færslu. Hvað er að fara að gerast? Ó, nei, ég fæ villu. Ég fæ löggilding undantekning. Jæja, það er gott. Það sagði mér að fyrirmynd mín er öryrki, en ég vil ekki að birta undantekningu notendum mína þegar þeir reyna að senda eitthvað öryrki, ekki satt? Ég vil gefa þeim einhverskonar vingjarnleiki villuboð þegar eitthvað fer úrskeiðis. Það sem við erum að fara að gera er að við erum að fara að vefja allt í að reyna grípa lykkju. Reyndar held ég að þetta er líka eitthvað sem þú hefur ekki lært ennþá í CS50, vegna C, forritunarmál C, hefur ekki undantekningar, en næstum hvert einasta öðru tungumáli hefur undantekningar, svo virkilega, virkilega stuttlega, undantekning er eitthvað sem a stykki af kóða geta kasta undantekning þegar eitthvað fer úrskeiðis, en þá kannski einhver önnur stykki af kóða ofar getur skilið þessi undantekning og gera eitthvað með það. Til dæmis, í þessu tilfelli, stykki af kóða sem er að reyna að vista líkan, það setja í gildi the líkan, og ef það segir, "Jæja, þetta líkan er ógilt," það er að fara að kasta undantekning, og þetta er eins konar jafngild í C sem þú gætir aftur á -1 eða eitthvað svoleiðis. Og þá fyrir mig, þessi aðgerð, númerið mitt á hærra stigi, ég get reynt og ná að undantekning og í rauninni segja, "Allt í lagi, ef ég skilið undantekning, hvað er ég að fara að gera?" Eða ég gat valið ekki að ná að undantekningu og láta einhvern ofar skilið undantekning, eða ef enginn grípur hann, þá hrynur allt kerfið og segir, "Eitthvað fór úrskeiðis, og ég gat ekki séð það." En hvað sem við gerum er að þú sett stykki af kóða í try blokk, og þá þú bæta einnig eitthvað sem kallast a grípa blokk, sem er tegund af kóða sem vilja reyna að ná undantekningar sem geta komið. Og svo ef ég grípa þetta tiltekna undantekningu eða ógildingu undantekning, þá er það sem ég ætla að gera Ég ætla að setja villur - ég held það er hvernig ég get það - og ég ætla að láta villa að sumir mótmæla. Og þá er það sem ég ætla að gera ef það lendir þetta undantekning, það er ekki að fara að beina, og ef það virkar ekki beina, það er að fara að koma út úr ef bloggið og högg þetta blogg / nýr, sem er vil ég vil gera. Ef það er villa, þá vil ég að fara aftur til form og sýna þær villur. Er nú það sem ég vil gera mig langar til að fara í þeim villur við þá skoðun. Jæja, ég held að ég hef þá skoðun hérna, og í rauninni vil ég sýna þeim villur ef þeir eru fyrir hendi. Áður en ég skrifa HTML kóðann fyrir það, ég ætla að virkilega hratt sýna þér hvað uppbygging þessarar villur breytilegum lítur út, og þetta er gott starf almennt. A einhver fjöldi af sinnum þú fá eitthvað til baka frá einhverri aðferð, sumir virka í the vefur ramma, og þú veist ekki hvað breytan lítur út, svo þú veist ekki hvernig á að vinna með það. Ég ætla að nota prenta r ​​aðferð til að grundvallaratriðum prenta það út. Og eins og þú geta sjá, það segir mér að það er félagi fylki, og þú hafa lykil, rithöfundur, stig að þessum streng, Höfundur má ekki vera autt, og annar lykill, líkami, benda til annars band, líkama má ekki vera tómt. Ég er eins, allt í lagi, svalt. Þá get ég iterate gegnum array og prenta út hvert einasta skilaboð. Það er í grundvallaratriðum eins og tengin array með fullt af skilaboðum. Hvað ég ætla að gera er að "ef villur," og ég ætla að búa óraðaðan lista, og ég ætla að iterate gegnum allar villurnar. Og þetta, og nú ætla ég að reyna að senda þetta aftur, og við skulum sjá hvað við fáum. Nú fáum við þetta ágætur listi af villum, og þetta er samt ansi ljót, en þetta augljóslega hægt að vera sniðin að líta ágætur, en Grunnhugmyndin er bara í nokkrum línum af kóða, við gátum til að sannreyna fyrirmynd okkar, ganga úr skugga um að tilteknar sviðum var ekki tóm, og ef eitthvað fór úrskeiðis, þá aftur einhverskonar villuboð Ég gæti þá kynna til baka til notandans. Þú getur einnig sérsniðið löggilding þinn þannig að þú getur raunverulega hafa villu sem er nákvæmari umsókn þína eða eitthvað svoleiðis. Allt sem er almennt customizable. Miður erum við að verða uppiskroppa með tíma, þannig að ég ætla að hafa til að skera burt lifandi kóðun fundur hér. Það eru fullt af öðrum eiginleikum sem ég vil sýna þér í þessu dæmi. Til dæmis er hægt að bæta við sniðmát á síðuna þína, svo kannski er það einhvers konar HTML kóða sem þú vilt sækja á alla einni síðu á vefsvæðinu þínu, og í stað þess að líma sem í hvert einasta sjá skrána sem þú hefur, sem augljóslega væri slæmt starf, þú getur í rauninni skilgreina þessar sniðmát, og síðan í stjórnandi þinn að segja, "Allt í lagi, ég er að nota þetta sniðmát." "Hafa allir skoðanir mínar nota þetta sniðmát." Og eitt síðasta sem ég vil sýna þér eins vel að við höfum ekki tíma fyrir er kross-staður forskriftarþarfir, og í rauninni held ég að þú krakkar hafa sennilega séð í CS50 - Ég held að David Malan líklega talað um hvernig þú getur venjulega sprauta JavaScript kóða inn - hefur þú talað um þetta? Kannski? Kannski ekki? En mikið af sinnum þú getur sprautað illgjarn JavaScript kóða inn í gagnagrunn einhvers, og ef þeir gera flýja ekki almennilega, þá þegar þeir kynna þessi gögn til baka til notandans, þá getur það keyrt einhverskonar handahófi JavaScript kóða sem þú vilt ekki að gerast, og ég var að fara að sýna fram á hvernig þú vilt gera það innan Kohana. Það er reyndar mjög, mjög auðvelt. Ég gæti gert það núna í 2 sekúndur bókstaflega. Allt sem þú þarft að gera er í grundvallaratriðum sett þessa hluti í þetta kallast HTML aðila. Og það mun sjálfkrafa flýja alla stafina rétt og ganga úr skugga um að þú færð ekki þetta vandamál. [Nemandi] Þú stafsett fyrsta próf rangt. [Brandon Liu] Ó, oops. Jæja, það er allt sem ég þurfti að deila með þér í dag. Þessar glærur eru að fara að vera staða, en þetta eru yfirleitt aðeins úrræði sem þú ættir virkilega þarft til að byrja með Kohana. Þú getur farið til the website. Þeir hafa handbók, og þeir hafa einnig API Explorer. Við getum kannað allar mismunandi aðgerðir og hjálparstarfsemi sem þeir hafa fyrir þig. Þeir hafa yfirleitt nægar upplýsingar á vefsíðunni sem þú getur notað til að byrja og fá að fara með Kohana. Það eru ekki margir námskeið, held ég, fyrir Kohana, utan það sem þeir hafa á heimasíðu hér, þannig að þetta er sennilega bestur veðmál. En ef þú vilt fara með vefnum ramma og þú vilt ekki að þurfa að taka upp nýtt tungumál, og þú vilt eitthvað sem er tiltölulega léttur og hefur þægilegur læra, Ég myndi örugglega benda Kohana. Það er líklega besta tilboð fyrir það. Það fyndna, þó, er að ef við værum að nota Ruby á Teinn, við getað endurtaka það sem við gerðum bara og sennilega fleiri á undir 3 mínútur. Ekki brandari, en að læra Ruby á Teinn tekur mikið lengur en það myndi taka að læra Kohana. Það er í rauninni val þitt á hvað þú vilt velja til að læra, en ef þú vilt fá upp og keyra hratt, Kohana er örugglega mjög góður kostur. Einhverjar Síðustu spurningarnar áður en við enda? Já. [Nemandi] Hvernig myndum við samþætta að í CSS ramma eins og þú værir að nota þegar þú varst að leiðbeina? Spurningin er hvernig við viljum að samþætta það með CSS ramma? Hvað við myndi sennilega gera er að við myndi líklega fela í nýja möppu þar sem við myndum að afrita öll okkar CSS skrár, og þá við myndum einnig bætt við nýju sniðmáti. Í sniðmát við myndum koma fram þau CSS skrá að tryggja að þeir eru sem vísað er á hverjum einni síðu, og svo þegar þú í raun ert að skrifa HTML, þú bæta bara viðeigandi flokka og whatnot, og til dæmis, þegar þú ert að nota eitthvað eins og the mynd hjálpar virka, getur þú bætt við fleiri breytur eftirá að tilgreina hvaða flokkar þú vilt vera tengdur ýmsum hlutum svo þeir gætu stíl það rétt, og það er í grundvallaratriðum um hvernig þú myndir fara. Fleiri spurningar? Ógnvekjandi. Þakka þér fyrir tíma þinn, og þakka þér fyrir að koma. Ég var ekki að fara að bæta við mjög margt annað, en 1 mjög fljótur hlutur er að við höfum ekki með tengil um form. Virkilega heimsk. Skulum bæta við - reyndar í augum, blog, vísitölu, skulum virkilega hratt bæta tengil sem fer á nýja síðu, síða þar sem við getum sett inn nýja færslu. Við erum að fara að gera þetta. Hvað er gott er það er þetta allt hópur HTML hjálparstarfsemi sem sem gera mismunandi hluti fyrir þig, svo þú sást nú þegar aðila virka hér, en þeir hafa einnig fall sem kallast "akkeri" sem þú getur slegið á blogg / ný og segja, "Post nýtt blogg." Og það myndi skapa sem tengil fyrir þig, og þetta virðist mjög léttvæg að gera, en þetta er ágætur, því gera ráð fyrir að þú ert að flytja vefsíðuna þína frá 1. ríki til annars. Og ef þú skrifar bara út vefslóðir sjálfur, þá þyrfti að breyta öllum vefslóðum. Eða kannski þú færð það frá 1 undirmöppu til annars undirmöppu. Þú þyrftir að breyta öllum þeim slóðum sjálfur, og það er ekki gaman. Þú getur notað þetta akkeri hérna, og þú getur breytt lén eða undirmöppu forskeyti í uppsetningu skrá einu sinni, og þá mun það eiga að alls staðar, og þetta er, aftur, gott dæmi um endurtaka ekki sjálfur, Þurrkun kóðann þinn út. Hvar sem þú ert að endurtaka þig, reyna að draga í einhvers konar stelling skrá eða á aðra virka og hafa það höndla það fyrir þig. Og mjög síðastur hlutur sem ég vildi sýna ykkur var Segjum að við erum aftur á þessum þræði, og ég hafði samið nokkur raunverulega langur ritgerð, en ég gleymdi að fela Höfundur míns. Nú þegar ég smelli á "Senda Post," Ég missti bara allt. Nei! Virkilega leiðinlegt. Svo hvernig gera þú takast á við það? Þetta er það sem við gerum. Það sem við gerum er hér fyrir þessar inntak og texta svæði virka, ef við fela í sér annað viðfang, þá gildi þess annarri breytu er að fara að vera það sem svæðið er að fara til að byrja með byggð með. Hvað við gætum gert er í blogginu stjórnandi okkar, við gátum binda aðra breytu. Kalla það "gildi" kannski. Og fara í kjölfar fylking, bókstaflega. Það þýðir að ef sannvottun mistókst fara mér Póst fylking sem ég fram úr síðustu beiðni, og þannig ég get notað gildin frá síðasta uppgjöf mína að endumema akra. Nú get ég gert eitthvað eins gildum höfundi og gildi líkama og þannig En ef ég gjöri sumir af handahófi efni og smella á "Senda Post," þá helst það þar. En við erum að fara að keyra inn í annað vandamál. Það virkar, en ef ég fer á síðuna í fyrsta skipti, það er að fara að hrun, og það er vegna þess í fyrsta sinn við förum á síðu, this staða breytu hefur ekki verið skilgreint enn. Það er null. Það er ekki til. Og það sem við viljum að segja er hvort þetta sé lykill, þá aftur gildi þessu fylki, en ef lykillinn er ekki til, þá aftur tóman streng. Það er virkni sem við viljum hér. Við viljum athuga hvort til sé lykill áður en þú reynir að fá aðgang að fylki, og sem betur fer nóg, Kohana gefur okkur einnig hjálpar virka fyrir það. Þeir hafa þetta allt föruneyti af störfum undir nafninu Arr, stutt fyrir fylking, og þeir hafa 1 fall sem kallast "fá" og þú geta fara framhjá í array, og þú geta fara framhjá í nafni takkann. Hvað það mun gera þá er í grundvallaratriðum það mun reyna að fá þessi lykill, en ef þessi lykill er ekki til í fylkinu, þá mun það skila auður, eða við getum líka tilgreina sjálfgefið, ég tel, sem er ágætur. Nú ef við gerum það sama aftur, þá þú sérð nú það virkar í fyrsta skipti í kring, og aftur, ef við tegund í some random dót og reyna að leggja fram, þá helst það þar. Og ég held ég get líka sýnt þér hvernig á að búa til sniðmát mjög fljótt. Hvað við getum gert fyrst er að við getum bætt nýja sýn sem kallast "template.php" innan Views möppu, og hvað ég ætla að gera er að ég er að fara að prenta út eitthvað sem kallast "efni," sem er að fara að vera aðal innihald mín. Og kannski á mjög botn Ég ætla að bæta við, segja, höfundarréttur. [Inaudible nemandi spurning] [Brandon Liu] Kannski er þetta frábær undirstöðu sniðmát sem ég vil nota. Ég vil hafa möppu með höfundarrétti mínum á hverjum einni síðu, og nú ætla ég að gera innan stjórnandi minn er nú í stað þess að segja, "nær Controller" Ég ætla að segja, "nær Controller_Template," og nú í stað þess að segja, "svar líkami er jafn þessari skoðun," Ég ætla að segja, "þetta sniðmát efni er -" og ég held - ég setti jafnaðarmerki? Ég gleymi. Já, ég hélt það. Og nú er ég að setja að efnið breytu til að jafna útsýni. Ég get gert það sama hérna. Og nú ef ég hressa, getur þú nú sjá þetta höfundarrétti er bætt þar, og bara gera sumir af handahófi færslu, og þá aftur, þú ættir að sjá að hefur höfundarrétt á er á mjög neðst á síðunni. Great. Það er allt sem ég vildi sýna ykkur. [Lófaklapp] Einhverjar spurningar? [CS50.TV]