>> [Seminar] [Kohana: Kerge PHP Framework]
[Brandon Liu] [Harvard University]
[See on CS50.] [CS50.TV]
>> Hi everyone. Minu nimi on Brandon.
Ma olen noorem siin kolledži teed infotehnoloogia ja täna me räägime
Kohana, mis on PHP web arendamise raames.
Täna saab olema live kodeerimine seminar,
nii et ma olen põhiliselt kavatse kulutada 5-10 minutit, selgitades, mida Kohana on
ja siis ma sõna otseses mõttes läheb ehitada super lihtne blog
teil on siin sõna otseses mõttes nullist.
Me läheme alla koodi Kohana veebilehel,
ja me ei kavatse alustada hoone blogis, ja loodetavasti see saab olema väga õpetlik,
sest te näete, võib-olla äkki ma teen vigu,
ja te näete mind sisse nõuda neilt,
või näete minu mõttekäigust kui ma ehitada läbi selle blogi
ja vahepeal võite ka saada tuttav raames ise.
Loodetavasti see saab olema väga õpetlik harjutus.
>> Esiteks, mida täpselt on raamistik?
Kui oled olnud võttes CS50 siiani, siis pole tõesti töötas iga
raamistikud veel, ja asi on selles.
Sa oled ilmselt teinud 1 veebiarendust pset juba,
ja ütleme, et te jätkuvalt ehitada veebilehed ja säilitada hoone veebilehed.
Te hakkate märkama paar asja.
Esimene asi, mida märkad on see, et sa oled ilmselt teevad sama asja
ikka ja jälle kogu aeg,
asjad puhastamiseks kasutaja andmeid sisestada,
asjad korraldada faile teatud viisil.
Teine asi, mida sa ilmselt ka teate, et teie kood
võib hakata saama väga räpane,
ja võite jätta see räpane ja lihtsalt on väga raske säilitada seda,
või võite alustada struktureerida oma kood ja teha see modulaarne
teatud viisil, et muuta see rohkem hooldatav.
>> See on koht, kus web raamistike põhiliselt tulid sisse
Need inimesed, kes olid ehitanud palju veebisaite, nad ütlesid,
"Meil ei ole vaja uuesti teha seda iga kord, kui me ehitada veebilehel."
"Miks me ei võiks lihtsalt teha pakett, mis teeb kõik need asjad teile
iga kord, kui soovite ehitada koduleheküljel? "
Ja nii, et kui sa teed uue veebilehe,
sa lihtsalt keskenduma sellele, mida täpselt selle konkreetse veebilehel on.
Sa ei pea kordama kõiki eri konfiguratsiooni
ja eraldamise koode ja ümberkirjutamist kood
et sa tihti teha, kui sa üritad veebilehed.
Mõte on selles, et raamistik võimaldab teil kirjutada kõrgema taseme koodi
ilma et peaks muretsema, madalama taseme üksikasju.
Madalama taseme detail võib olla midagi sellist
tegelevad puhastamine kasutaja andmeid sisestada.
See on midagi, mida sa ei peaks tõesti muretsema.
Sa peaksid keskenduma sellele, mida teie web jaotus on tegelikult umbes.
See välistab palju trafaretset kood.
On arhitektuuri oma projekti.
>> Populaarseim oleks Model-View-Controller,
mis ma lähen rääkima teine.
Ja palju kordi nende raamistike kehastavad protseduuride kogum,
eeskirjade ja heade tavade teil kasutada
nii et kui sa vastu veebi raamistik
teil on kirjutada oma koodi teatud viisil,
ja see on üldiselt kokku lepitud põhimõtete kogum
ühenduse poolt, mis on üldtunnustatud, et olla
hea viis kirjalikult koodi.
Ta teeb oma koodi rohkem hooldatav, kasutatavuse,
nii edasi ja nii edasi.
Ja lõpuks, mida ma tahan rõhutada, raamistikud
versus raamatukogud on see mõte inversioon kontroll, ja asi on selles.
Erinevus raamatukogu ja raamistik on, et raamatukogu
sa oled ikka kirjalikult Põhiprogrammi
ja sa oled omamoodi tuginevale raamatukogu
ja kutsus teegi midagi teha.
Erinevus raamatukogu ja raamistik
on, et raamistik hakkab läbi kontrolli
ja ta tugineb oma kood,
nii et sa ei mõtle seda - see on põhjus, miks seda nimetatakse raamistik -
raamistik annab selle raami ja struktuuri oma kood,
ja te täidate augud,
ja see muutub selgemaks teise
kui sa näed mind hakkate kirjutama koodi konteksti raames.
Sa näed, et ma olen täites lüngad,
ja raamistik on selline kontrolliv kõik liigub tükki,
ja ma pean panema tükid õiges kohas.
>> Täna me ei kavatse rääkida Kohana,
mis on üks paljudest PHP raamistikud.
On web raamistike ja seal on need peaaegu iga keele,
ja ma valin Kohana kuna Kohana on vaieldamatult
ja üldtunnustatud lihtsamaid PHP raamistik kiirenemist.
See on kõige kerge.
On ka teisi ones out there, mis tulevad koos palju, palju rohkem funktsioone,
kuid need kipuvad olema raske kiirenemist.
Ja lõpuks, Kohana kasutab MVC arhitektuur.
See on kerge piisavalt, et me saame sõna otseses mõttes ehitada projekti
siinsamas ees oma silmad, ja sa saad päris palju
jälgida mööda üsna kergesti.
>> Mis on MVC arhitektuuri?
Ta seisab Model-View-Controller,
ja võib-olla, kui sa arvad, kood olete kirjutanud seni
mõned veebi arengut psets
võib teil olla võimalik näha osa sellest, kuid tavaliselt kui hakkate kirjalikult
keerukama veebirakenduse,
eristades kõnealuste 3 segmenti muutub üha ilmsemaks.
I sätestatud MVC siin omamoodi nagu pinu
ja tihti sa kuuled inimesed räägivad korstnad veebiarendust,
ja see on illustreerida idee, et
Iga kihi iga komponendi tõesti üritab suhelda ainult
vahemikus 2 muid komponente.
Keegi pöördub oma kodulehel klient või brauser.
Nad suhelda oma programmi kaudu eesmärgiga kood.
Vaata koodi suhtleb kontroller.
Kontroller suhtleb mudel,
ja mudeli suhtleb SQL andmebaasi.
Ja ei ole hopping vahel kui sa kirjutad oma koodi korralikult.
>> Mida need asjad?
Mudel sisuliselt on tükk kood, mis tegeleb oma andmeid.
Midagi, mis tegeleb oma andmebaasi, esemed, et teil salvestada,
või allalaadimise need objektid andmebaasis
et kõik on käideldud mudel.
Äkki teil on objektid andmebaasis.
Me luua mudel, millel on pistmist ametikohta,
nii post võib olla atribuudid ta.
Teil võib olla funktsioonid umbes ladustamiseks neid postitusi või allalaadimise postitust
või filtreerides postitusi ja nii edasi ja nii edasi,
ja see on kogu kood, mis on käitlemiseks mudel.
Kontroller on omamoodi rakenduse loogikat,
ja palju erinevaid asju võib minna rakenduse loogikat.
Kui sa räägid, et erinevate API,
, mis võib olla, kui olete tegelevad rakenduse loogikat.
Kui sa üritad olla tuua andmeid mitmest eri mudelid
ja on neid kombineerida kuidagi, et sageli võib käidelda kontroller.
Näiteks, Facebook, kui te sõber keegi,
siis võib-olla, et tegu, millega selle suhte
võib teha kontroller.
>> Ja lõpuks, vaade on kood, mis genereerib mida sa tegelikult näha.
Palju kordi ma arvan CS50 psets
nad ei soodusta te eraldi need 3 asja.
Sa ilmselt on see suur, pikk faili kus tipus
teete mõne SQL päringu ja võibolla teha mõned töötlemine
on andmed, mida laaditakse andmebaasi
ja siis on kõik oma HTML allosas.
Ja võib juhtuda, et kui te luua rohkem ja rohkem lehekülge
et sa lähed, et on natuke koodi kordamine ja ka
asi on sinu faili saab tõesti suur ja pikk
ja muutub kohmakas hallata.
Põhjus, miks MVC on nii hästi pidada
on mitmeid põhjuseid.
Esimene asi, mida nimetatakse eraldamiseks muresid
mis on idee, et kui teil on -
ideaalis 1 tükk kood peaks tegema 1 asi ja seda teha väga hästi,
ja te ei tohi ühendada tükid kood, mis teha erinevaid asju.
Näiteks vaadata koodi ja mudeli kood,
nad tõesti ei pea olema seotud.
Nad ei pea olema samas faili, nii et kui saad, siis eraldage nad välja
nii et see on lihtne hooldada.
>> Teine asi on koodi taaskasutust.
Sa võid leida ennast kirjalikult sama SQL päring või teed
sarnaseid küsimusi, mida võiks ammutatava arvesse 1 funktsioon,
ja see on idee mudeleid ja kontrollerid
millel see eraldi funktsioon, et saab taaskasutada erinevates kohtades oma projekti.
Ja lõpuks, mis on seotud kuivatamine oma kood,
või mitte, korrates ennast, ei korda ennast.
See on väga arusaadav arengut.
Kui te ei, te ei taha korrata ennast, sest kui te kordate ennast,
see on palju kulukam hooldada.
Kui te soovite muuta 1 asi, mida sa pead muutma seda kõikjal,
ja mis põhjustab vigu ja see on kohutav.
>> Olgu.
Kõik küsimused siiani umbes Kohana üldse?
Suur.
Nüüd me ei kavatse sukelduda live kodeerimine istungil
ja loodetavasti kõik läheb hästi.
Ma põhimõtteliselt ehitada kodulehel
üks minu kaugserverite ja nii saate teie ka
vaata veebilehte ja tutvuda veebilehel
ja ka keskkond on parem Seadistatud kui minu serveri masin,
sest see töötab Linux asemel OS X.
Me sõna otseses mõttes, et hakkan.
KohanaFramework.org.
Ma lähen alla koodi veebilehel.
Ma lähen kopeerige link aadress,
mine minu server, alla laadida,
ja ma lähen, et eraldada see.
>> [Student] Mis on suurim saate muuta teksti?
[Brandon Liu] Kas see on parem?
[Student] Kas see on teostatav? >> [Brandon Liu] Jah, see on hea.
Ma allalaetud ZIP faili ja mahalaadimist, et arvesse kataloog nimega Kohana,
ja me ümber, et CS50-Kohana,
ja lähme sisse
Lahe.
Siin näed hunnik erinevaid faile.
Enamus teist ei saa eirata - Me ei lähe läbi iga faili, mis on siin
sest meie ajalised piirangud,
aga üldiselt, kui installite Kohana, esimene asi, mida teha
on sul minna kataloogist,
ja sa põhimõtteliselt teha mõned keskkonnas teste ja puha
veenduge, et teie keskkond on õigesti seadistatud sõitma Kohana
ja veenduge, et kõik on korras.
Näete enamik asju möödas, kuid üldiselt alati tekib see 1 probleem
kus ta väidab, et mõned pole kirjutatav,
ja see on, sest mõned load.
Ma ei tea, kui palju te olete õppinud Failiõiguste CS50,
aga kui sa veebi arengut, sa lähed, et tekib see küsimus palju.
Ma lähen tegema seda kirjutatav
ja ma arvan, et on ka - seal me läheme.
>> Ok, nii et nüüd te näete kõik möödas,
ja nüüd ta ütleb sulle, et ümber install faili.
Ma lähen, et liikuda install.php fail installed.php,
ja nüüd, kui ma värskendada,
see annab mulle viga, ja see on koht, kus silumine on sisse
See on koht, kus saab näha, mis tegelikult juhtub.
Asi on selles, vaikimisi Kohana eeldab, et
Teie projekt on juurkataloogi oma domeen,
nii et see ootab sind olevat demo.brandonkliu.com.
Me peame ütlema seda, et see on tegelikult hoopis alamkataloogi.
See on alamkausta CS50 Kohana.
Asi on selles, et see on valesti tõlgendanud CS50-Kohana
kui midagi muud, mis ma seletan sulle teine.
Aga ma peaks ütlema, et see on midagi, mis on ootuspärane.
Mida me teeme, on me läheme sellesse kausta nimega bootstrap.php,
mis on konfiguratsiooni kausta kus on palju erinevaid asju, on loodud.
Ma avan, et üles.
Siis võib-olla üks esimesi asju, mida ma teen, on vahetada ajavööndit.
>> Ja siis vaatame.
Ahaa! Siin.
Seal on hunnik erinevaid konfiguratsiooni lood siin,
aga see, mida ma otsin on see asi, mida nimetatakse baas URL,
ja vaikimisi saan aru seatud Kohana,
aga ma ei muuda seda, et CS50-Kohana,
ja ma arvan, et tuleks parandada.
Jah, väga.
Vaikimisi näha, et see töötab, see ütleb: "Hello World".
Kust see tuli? Kuidas me saame Hello World?
Kui täpselt on kood, tegelikult kirjutas?
Selleks, et mõista, et ma tutvustan seda kontseptsiooni nimetatakse suunamises.
Päris palju kõik web raamistikud on mõiste nimega suunamises,
mis on tükk tarkvara, mis kaardistab teatud URL
teatud tükk koodi oma raamistik.
Näiteks, kui teil on mõni link ja te lähete mõned URL nagu foo.com / blog / all
siis mida raames kavatseb teha - või vähemalt see, mida Kohana kavatseb teha -
on, et see saab leida klassi, mida nimetatakse kontroller blogi
ja see läheb käivitada funktsioon nimega tegevus üldse.
Ma tean, millest ma räägin klassi ja funktsioone,
ja ma tean, et te pole kaetud klassid ja funktsioonid
aastal CS50 veel, kuid nüüd,
sa ei mõtle klasside lihtsalt funktsioonide rühma,
viis rühmituse ülesandeid koos.
See on tõesti kõik, mida vaja teada.
>> Nüüd, kui me vaatame meie kataloogi struktuuri,
sees taotluse kaust on teise kausta nimega klassides
ja muud kaustad kutsutakse Controller ja mudel.
Kui sa vaatad sees Controller kausta
me näeme, et seal on fail nimega Tere tulemast,
ja te näete, siin on klass nimega Controller Tere,
ja seal on funktsioon nimega Action Index,
ja mida ta teeb on see seab keha oma vastuses Hello World.
See, kui kood on kirjutatud.
Teine küsimus on, noh, ma ei lähe
blah, blah, blah, / welcome / index.
Kuidas ma sattusin?
Noh, see on lihtsalt sellepärast,
siin allosas meie bootstrap fail
kui me seame meie liinidel
näete, et nad panid mõned vaikimisi teile.
Default kontroller on teretulnud. Vaiketegevuseks Index.
Sellepärast, kui me paneme midagi seal see automaatselt läks Welcome kontroller
ja indeks Action.
>> Kõik mõtet nii palju?
Nüüd saad teha rohkem kui lihtsalt minna Controller
ja konkreetsed meetmed.
Võite liigu parameetrid kontroller.
Nii nagu näiteks
Ma lähen lisada teise hagi selle töötleja näidata.
Kutsume käesoleva meetme Echo, sest see läheb teile öelda mida iganes sa annad seda,
ja nii ma põhimõtteliselt läheb haarata
parameeter, mis toimub, mis saadetakse läbi mulle suunamises programmi
ja nagu näete siin,
see joon siin, näete, et
See põhimõtteliselt tähendab, et olete kontroller, ja sul on /,
ja teil on tegevus, ja sa pead teise /,
ja mis saab olema parameetrid, ja kuna meil on see nimi ID
nurksulgudes, mis tähendab, et me nimetades seda parameetrit ID.
Hiljem minu kontroller kood, kui ma tahan, et haarata kinni selle parameetri
Kas ma saan kasutada koodi kirjutasin, leida parameeter nimega ID.
See on, mida ma tegin siin, ja ma lähen tagasi ja öelda,
"Sa ütlesid, et".
Ja nüüd, kui ma lähen oma veebilehel,
Lähen cs50-kohana/welcome/echo/Helloooo--
oh, see on õige.
Seal on 1 samm jätsin välja.
See on osa elusate kodeeriv idee.
>> Siin on 1 asi. Vaatame.
Nii tavaliselt vaikimisi palju need veebirakendused
teil lisada see index.php asi oma URL,
sest mõte on index.php on omamoodi sisenemispunkti
oma taotluse, kuid loomulikult
mis on omamoodi tüütu on.
Sa ei taha olla index.php ilmuvad URL,
ja päris palju iga web raamistikku karbist
on see index.php probleem,
ja nii et sa pead võtma mõned meetmed, et oleks võimalik kõrvaldada seda.
Ja nii sellisel juhul
Mida me teeme, on me kasutada faili. htaccess,
ja see on midagi, mis on omased Apache veebiserver,
ja seda saab teha asju kirjutada URL
ja ümbersuunamise URL ja nii edasi ja nii edasi,
ja Kohana on kena piisavalt pakkuda malli. htaccess faili, mida saame kasutada.
>> Nagu näete, seal on fail, seal nimetatakse example.htaccess,
ja me kopeeri et. htaccess.
Ma lähen, et avada seda ja seda muuta,
ja põhimõtteliselt see hunnik erinevaid asju.
Võti line võiksite pilk on siinsamas.
Mõte on selles, et see loob reegel, mis ütleb,
"Olgu, mida iganes sa kirjutad, nimedele index.php seda."
Te näete, et.
. * Tähistab midagi, sobib kõik,
ja siis teine ​​osa on index.php / $ 0,
ja $ 0 tähistab iganes sihib varem.
Kas see on mõtet?
Aga tõesti peamine asi, mida ma tahan muuta, on muuta see ümberkirjutamine baasi
mis on URL baasi.
See omamoodi eeldab kuhu töötades.
Ma lähen lisada CS50 Kohana sellele
ja nii nüüd kui ma eemaldada index.php,
see peaks töötama, ja ma lähen, et lisada mõned numbrid
näidata, et ta tõesti tegi tööd.
Kõlab hästi.
>> Tekkinud küsimusi?
[Student] Kuidas ta teab, et teeb 123?
Kas see on argument?
Täpselt. Sa ei mõtle seda nagu argument.
Aga imelik asi, aga see, et viis Kohana teeb seda
on nad seda ei tee täpselt nagu argument.
Sul on haarata seda niimoodi.
Sul on haarata taotluse objekt ja küsida parameeter, mis on nime ID,
ja see nimi ID pärineb et bootstrap fail
et ma näitasin varem ja nimi ID Neil noolsulgudega,
ja see, kuidas te rüütama need parameetrid.
Lahe.
Muid küsimusi?
Nagu ma ütlesin, kontrollerid, nende hallata rakenduse loogikat,
nii et on 1 Näiteks kui näete see on -
see on väga lihtne, kuid see on ikka rakenduse loogikat,
idee haarates parameeter ja luua uus string
mis ütleb: "Sa ütlesid, blah," ja siis sülitab selle sulle tagasi.
Ja üldiselt, mida teha, on teil luua erinevaid kontrollereid.
Loote eraldi kontrollerid erinevate osade oma veebilehel.
>> Täna me ei kavatse teha väga lihtne veebileht,
ja see saab olema väga lihtne blog.
Me teha uus kontroller lihtsalt postitusi blogis.
Aga siis, kui ma ka kommentaare lisada blogi postitus,
siis ma oleks ilmselt tahavad teha uus kontroller need kommentaarid.
Kui ma tahtsin lisada kasutajaid, ma oleks ilmselt lisada uus kontroller neile kasutajatele,
ja üldiselt, idee on, et kui sul on uus mudel,
Uute andmete objekti, sa oled tegelevad,
teil on ühe kontrolöri, et andmed objekt.
Täna me alles läheb tööle 1 andmed objekti
ja mis saab olema ametikohta,
ja ka sa ei mõtle andmed objektide vastavad tabelid.
Üldiselt iga tabeli vastab 1 tüüpi andmete objekti,
nii post tabelis on 1 postitus mudel,
mis on 1 postitus kontroller, mis vastab,
ja sama märkusi kasutajate puhul sama, ja nii edasi ja nii edasi.
Ja see on üldine rusikareegel.
Seal saab olla erijuhtudel, kui sa võib erineda,
kuid 90% ajast, mis on see, mida sa lähed tegema,
ja ma näitan teile, et see, mida me teeme täna.
1 rohkem mõiste, enne kui me sukelduda tagasi kood,
Selle idee eesmärk relatsiooniline kaardistamine.
>> Te olete juba teinud veebiarendust pset,
ja sa oled näinud, et teete SQL päringu,
ja mis see naaseb olete rida.
Sa saad need read, ja sa indeks neid mõne nime,
veeru nimi ja tabeli
ja see on, kuidas sa tööd teha,
ja see võib olla veidi tülikas.
Kuid lisaks sellele, kui teil on suhted oma andmebaasi,
nagu näiteks siis, kui mul on kommentaare ja postitusi,
siis võib-olla ma tahan haarata vanema ametikohale kommentaari.
Kui ma kasutan ainult rida SQL, siis kõik, mida ma saan on ID
emaettevõtte post ja mitte tegeliku post ise.
Aga kui me kodeerimine, mida me tegelikult tahame, et tegelikult haarata
vanem postitada ennast mõnikord.
Mis objekti relatsiooniline kaardistamise teeb, on
kulub tulemused andmebaasi päringu
ja paneb selle objekti jaoks, mis on palju parem töötada
kui tavaline massiivid ja ridu.
>> Näiteks nüüd, kui mul on kommentaar ehk
ja ma tahan, et haarata oma ema pärast,
ja ma võib-olla kommenteerida nool postiga
siis tegelikult mulle post objekt
vastab tegelikele vanema ametikohale, mitte ainult mõned ID,
mida ma muidu kasutada ja teha uue SQL päring haarata postiga
mis on tülikas ja mittevajalik.
Ja lisaks, kaardistades kõik need andmed ridade objektid
võite ka lisada rohkem funktsioone objektide
Nii näiteks, ma rääkisin, kuidas klassid on sisuliselt rühmituste funktsioone.
Sa ei mõtle seda nii.
Näiteks, võib-olla on mul postitus objekt
ja äkki ma tahaks olla mingisugune funktsioon sellele lisatud
et põhimõtteliselt ütleb mulle, oli see hiljuti postitatud?
Kas see oli postitatud viimase nädala jooksul, on õige või vale?
Ja see on funktsioon võin lisada peale, et objekt,
ja see on tõesti mugav on see samas kohas,
ja seal on mitmeid erinevaid funktsioone saab luua
need objektid, ja see on tore, et oleks võimalik kinnitada selle klassi
objektile, samas kui sa just read tulevad oma andmebaasi,
siis ei saa tõesti kinnitada mistahes funktsionaalsust et.
See on sõna otseses mõttes lihtsalt andmeid.
Kõik küsimused, mis üldse?
ORMS on väga levinud veebi arengut,
ja seal on palju eri liiki ORMS,
ja Kohana on oma ORM.
See on väga lihtne, kuid sa saad aimu, milline see välja näeb.
>> Loome eeskujuks meie blogi postitusi,
ja esimene asi, mida me kindlasti peame tegema, on luua tegelik tabel
meie andmebaasi tegelikult salvestada oma andmed neile ametikohtadele.
Esimene asi, mida ma lähen tegema, on minna phpMyAdmin.
Olete te kasutada phpMyAdmin enne?
Okei, awesome, et te juba teate, mis see on,
ja ma lähen, et luua uus tabel nimega Kohana postitused,
ja see saab olema väga lihtne.
Ma pean uuesti sisse logid
Kõik me teeme täna on autor ja keha
lihtsalt hoida lihtsa.
Ma lähen, et luua selles tabelis,
ja nüüd me lihtsalt laua esindavad meie postitusi
2 valdkondades meie autor ja meie keha.
Teine asi, mida ma lähen tegema, on praegu
seadistada minu veebirakenduse et ta teab, kuidas ühendada andmebaas
ja see omakorda on midagi, mida sa pead tegema kõik veebirakendusi.
Sa pead ütlema seda kasutajanime ja parooli
ja nimi andmebaasi ja nii edasi ja nii edasi
et aru saada, kuidas tegelikult ühendada oma andmebaasi.
>> In Kohana, meil on midagi, mida nimetatakse andmebaasi moodul,
ja konfiguratsiooni kausta meil see kaust nimega andmebaas
ja nagu näete, on kamp seaded sul määrata siin
öelda seda, mis on kasutaja nimi ja parool
andmebaasi, et ma saaks tegelikult ühendada see.
Ja kuna ma ei taha, et te tegelikult teadma
kasutajanime ja parooli oma andmebaasi,
Mul on fail, kus ma juba pani kõik, ja ma lähen kopeeri ja kleebi see üle.
Lahe.
Okei. Ma arvan, et kõik konfiguratsiooni ma pean tegema,
aga vaatame.
Me töötame selles, ja kui midagi kokku jookseb,
siis me seda parandada.
Nüüd, mida ma lähen tegema, on ma lähen luua uue kontroller.
Või tegelikult, vabandust.
Esiteks pean ma luua uue mudeli.
Ma luua uue mudeli nimega Post.php,
ja see, mida me teeme, on me nimetame seda klassi Model_Post.
Saaksin süntaksi esiletõstmine,
ja nii kui ma ütlen "laieneb ORM," mis on põhimõtteliselt
mõned rohkem objektorienteeritud programmeerimine,
mis kahjuks te pole õppinud CS50 veel
kuid see on üsna lihtne kiirenemist.
See annab mulle kõik see lisafunktsionaalsus mis tuleb, see ORM paketi
ja nii ma saan hunnik lisafunktsioone ja puha tasuta
mis sa näed natuke teine.
>> Just praegu tegelikult kõik, mida ma vaja teha, on luua selle klassi.
Ma ei pea isegi mingit funktsiooni või midagi,
aga ma olen loodud klass, mis tähistab tabelis
ja kuna ma olen laiendanud ORM klass,
Ma saan hunnik asju tasuta, nii et nüüd teil ei ole midagi seadistada rohkem üles.
Ja nüüd, mida ma lähen tegema, on ma lähen luua uus regulaator,
mis ma nimetada blog.php,
ja ma lähen kopeerige Tere kontroller
nii et ma ei pea uuesti sisestama mõned asjad,
ja nüüd ma pean ümber nimetada.
Nüüd, mida ma lähen tegema, et test veendumaks, et kõik töötab välja,
Ma lähen haarata esimene postitus minu andmebaas
ja printida keha post ekraanil.
Selleks, et see, mida ma lähen tegema, esimene on ma lähen salvestada postitusi
muutuja nii et mida me teeme, on -
aastal Kohana, mida te teete on haarata post objekt
see on selline tülikas, kuid sa pead tegema seda asja nimetatakse ORM :: tehas
ja siis liigu nime mudel, mida soovite,
ja ta naaseb ORM objekt, mis esindab seda mudelit.
Ja siis, nagu ma ütlesin, kui me laiendada ORM objekt
saame kõik need meetodid on tasuta, nii et näiteks
saame selle uue funktsiooni nimega "kõik"
mis automaatselt tagastab iga postitus andmebaasis
mis on üsna mugav.
>> Ja nüüd kehas ma lähen tagasi
esimene postitus ja tagasi oma keha.
Ja muidugi, mul on vaja luua ametikoht,
niiet lisada uus postitus.
Ma ütlen, "Brandon, minu kõige esimene postitus."
Lahe.
Ja nüüd me läheme blogid
ja kui kõik toimib hästi - oh, see on mingi muu loll faili loata asi uuesti.
Hoia 1 sekund. See on selline absurd.
Niimoodi. Okei.
Ma parandasin selle loa probleem.
Ta püüdis luua mõned failid ja mõned samamoodi,
ja load jällegi ei õigesti seadistatud, et ma tegin seda
nii need failid olid kirjutatav ja käivitatava
nii et see võiks tegelikult sisse asju.
Nüüd annab mulle üks erand, öeldes: "klass ORM ei leitud",
ja see on, sest ma unustasin veel ühe sammu.
See on liiga halb.
In bootstrap kausta fail on need moodulid siin
kus saab valida kas lubada või keelata.
Need on hunnik erinevaid funktsioone, mida saate valida, kas kasutada
jooksul Kohana, mis on omamoodi tore.
>> Näiteks neil autentimise moodul
, mida saab kasutada autentimiseks kasutajad.
Neil on caching moodul, kui soovite rakendada
mingisugune vahemällu kolp teha taotlus tööd kiiremini ja tühi-tähi.
Meil on vaja, et võimaldada andmebaasi ja ORM mooduli
sest nagu ma ütlesin, me kasutame andmebaasi ilmselt
ja me peame ka võimaldada ORM mooduli
sest me tahaks olla ekstra funktsionaalsust, mis on tore on.
Kõik ma pean tegema, on uncomment need 2 rida,
ja nüüd, kui ma värskendada, ta andis mulle teise vea.
Ta ütleb: "Klass Model_Post ei leitud."
Nüüd on hea probleem on.
Vaatame.
Tee avalik.
Ei Oota.
Oh, kallis.
Ma ei tea, miks see ei ole võimalik leida, et.
See on tõesti kummaline.
Mul on selle klassi siinsamas.
Ma arvan, et võib-olla - oh.
Ma olen nii loll. Ma unustasin lisada PHP tag.
Sellepärast.
Nüüd on mul tagasi võtta, et 1 muutus just tegin.
>> Ok. Niimoodi.
See oli tõesti rumal. Mul ei olnud ava PHP tag.
Aga nagu näete, nüüd see töötab korralikult, eks?
Meil on 1 postitus.
Me haarasid esimene postitus, ja nüüd välja printida oma keha.
Suur. Fantastiline.
Küsimusi nii palju?
Ei? Kas on küsimusi?
Okei, nii et me lihtsalt loodud post mudel, väga lihtne,
ja me lisada mõned funktsioonid hiljem.
Me võime lisada kinnituste ja filtreerimist.
Kinnitused on üks neist asjadest,
et raamistike lahendada sinu jaoks tõesti hästi,
ja ma ei usu, et teil oli seda teha oma CS50 pset,
aga kui sa veebi arengut oma lõpliku projekti
sa oled tõenäoliselt läheb taha teha mingisugune valideerimine
nagu millel ei ole tühi kasutajanimed,
võibolla võttes salasõna vähemalt põhjalikkusega, asjad niimoodi.
Ja see on tõesti ebamugav rakendada neid asju ise,
ja päris palju iga web raamistikku see sinu jaoks
ja võimaldab teil teha seda väga puhas viis.
Ja mudel, kus teil tavaliselt väljendada neid kontrolli eeskirju,
sest see on kinnitamise kas mudel on kehtiv või mitte.
>> Aga nüüd, me ei kavatse panna, et alles hiljem,
ja nüüd me ei kavatse tööd teine ​​osa,
ja me ei kavatse proovida ja teha uus vaade
kus on loetletud kõik postitused.
Etappe tegemist uue hagi, milles loetletakse kõik postitused
on haarata nimekirja kõigist postitustest
ja siis muuta nimekirja kõigist postitustest läbi vaadata.
Siinsamas, õnneks piisavalt, me juba haaras kõik postitused
Kasutades seda esimest rida, kõik funktsioon,
ja nüüd me teeme on seni
Olen otse millega keha reageerimine
sooritades string, kuid nüüd ma tahan kasutada selleks,
ja vahe vaade ja teen seda
on eesmärgiga saan kena, suur HTML template,
ja mida ma saan teha, on anda kellelegi teatud muutujate
ja siis on seisukohal automaatselt asustada oma mall
kasutades neid muutujaid.
Mida ma teen on ma luua uus vaade,
ja ma nimetaks silmas midagi "blog / index"
ja ma lähen põhimõtteliselt siduda see - oh, mida ma kirjalikult?
Mu aju on kuskil mujal.
Ma lähen siduda postitusi muutuja arvates
nii et kuidas vaade on juurdepääs postitus muutuja.
>> Ja nüüd ma pean luua seda seisukohta,
nii siin me oleme seda kausta nimega "Views"
ja esimene, ma lähen luua uue kausta, et nn "blogi".
See on kena. Nii et meil on kena hierarhia meie seisukohti.
Ja siis ma lähen luua uue faili sinna nimega "index.php".
Lahe.
Tegelikult olgem neid nii siin.
Making vaade fail on ilmselt kõige lihtsam osa kõik see,
ja need on ilmselt asjad, mida sa oled juba tuttav.
Me teeme midagi tõeliselt lihtne,
alustada, öeldes: "Mu nimekiri blogi postitusi."
Siis me ei lähe läbi,
ja me võime kinnitada, läbi postitust massiiv,
haarata iga post ja öelda midagi sellist -
võibolla lisada rida
ja siis välja printida autori ja keha.
Seda mõtet nii palju?
Ja vaatame, kas see toimib.
Midagi ei juhtunud.
Ma ei tea, miks.
Oh, mul jäi 1 samm. Väga rumal minust.
Olen loonud vaadata, kuid ma ei pannud Vaata vastust
nii et sa pead tegema 1 asi veel.
Sa pead tegema "see vastus keha" ja määra see vaade.
Niimoodi.
Meil on rubriik, ja siis meil on post,
ja lihtsalt peksab, olgem lisada teine ​​postitus
nii et me saame näha nimekirja.
Ja lisada need 2 ametikohta,
ja nüüd, kui ma värskenda lehekülge,
me näeme kõiki neid postitusi siin.
>> Kas see on mõtet nii palju?
Jah, küsimus? Oh, okei.
Nagu näete, oleme suutnud eraldada kõik need koodid välja
eri osadeks ja siis näete et see on kõige selge vaade kood.
See fail siin, mis tähistab arvates
ta hoolib ainult esindavad andmed, andmete kuvamiseks.
Läheb edasi mingi info ja kõik see on lihtsalt näidata seda sulle.
Kõigil muudel osad oma kood, et sa ei pea muretsema mis tahes selle,
ja samamoodi oma seisukohta kood ei pea muretsema midagi
kuidas juurdepääs andmebaasi ja nii edasi ja nii edasi,
mis on tõesti hea ja teeb oma koodi palju hooldatav.
Nagu ma ütlesin, vaated, nad dünaamiline selles
see on 1 faili, kuid see tooks kaasa erinevad seisukohad
põhinevad muutujad sa tegelikult läbima,
ja lisaks on olemas palju erinevaid helper funktsioone
, mida saab kasutada, et aidata teil kirjutada koodi kiiremini,
kus ma näitan sulle lihtsalt teine.
Jah.
>> [Student] So $ 0 on kontroller, eks?
See teine ​​asi.
Küsimus on on 0 $ controller?
0 $ on muutuja lõin siin.
Olen loonud eesmärgiga esimene. Ma määras selle teatud muutuja.
Siis võttis ta arvesse seda funktsiooni, seadke see keha reageerimine.
Kas see on mõtet?
[Student] Nii on vaade :: tehas on seisukohal, nagu klassi
või raamatukogu [kuuldamatu] tehase funktsioon?
Küsimus on vaade :: tehase funktsioon,
ja põhimõtteliselt on see veel objektorienteeritud programmeerimine sisuliselt.
View vaade klassi, ja see on meetod, mida nimetatakse "Factory"
ja see on viis haarata objekti, mis on nimega "blog / index."
Ja see on veel objektorienteeritud programmeerimise värk
et ma ei lähe siin liiga palju.
Nüüd ilmselt tahame luua uusi ametikohti,
aga me ei tahtnud seda teha läbi andmebaasi,
Nii et me luua uusi meetmeid, et luua uus ametikoht,
ja seal on palju asju me peame tegema.
>> Esimene asi, mida me teeme - Räägime need asjad ükshaaval.
Esimene asi, mida me teeme on meil luua vormi
sisseviimiseks uus postitus,
aga ma olen ka kavatse lisada uus tegevus esiteks
nii lisades uusi meetmeid on lihtsalt nii lihtne, nagu
lisada uus funktsioon oma kontroller,
ja nüüd ma teen midagi väga lihtne,
lihtsalt haarata see vaade ja pärast seda, lihtsalt näidata seda teile.
Ja siis nüüd ma lähen luua uue vaate faili
ja ma lähen alustada kirjalikult mõned asjad.
Mis on ilus umbes Kohana on see, et nad pakuvad palju erinevaid helper funktsioone
teile kirjutada vaade kood kergemini
ja 1 neist helper funktsioone või abimees moodulid
on ümber kirjutamise vorme.
Kirjutamiseks vormid, ma tõesti ei pea otse kirjutada mistahes HTML ise.
Te olete kirjutanud HTML kujul.
Sa tead, kuidas see võib olla tõesti valus ja tülikas kirjutada kujul.
See ei ole lõbus, siis õnneks
saame põhimõtteliselt kirjutada kujul kasutades Kohana on
moodustavad helper funktsioone seda teha meie jaoks.
Me põhimõtteliselt on väljad iga asi mis meil on,
nii üks autoreid ja ühe vahel.
Me läheme olema silt, ja me ei kavatse on sisend.
>> Ja lõpuks, me ei kavatse olla esitamist.
Ja nagu näete, see on palju puhtam kirjutada
kui kõik, et räpane HTML, mis on omamoodi tore.
Tõsi, on ka teisi web raamistikku, mis on see isegi puhtam, kui et
kuid vähemalt on see parem kui kirjalikult HTML ise.
Awesome, nii et see on see, mida sa näed.
See on selline räpane,
nii et ma lähen lisada line break seal
teha, et vaadata veidi kenamaks.
Noh, muidugi, see ikka tundub tõesti, tõesti halb, kuid me lihtsalt keskendunud
funktsionaalsusele nüüd ja mitte esteetika.
Pole aega teha kõike.
Ja nagu näete, nüüd on meil super põhivormi,
mis on omamoodi tore.
See kood ütleksin on puhtam kui üritan kirjutada HTML-vormi ise,
nii see on tore.
Mis edasi?
Nüüd peame tegema asju koos tegutsemist.
Tavaliselt, kui sa kirjutad HTML vormid
teil on öelda seda, kus see saab esitada vormi.
Vaikimisi kõige web raamistike
Ta väidab, et täpselt sama URL, nii et asi on selles,
Kui saadate GET päringu / blog / uus,
siis näidatakse teile vormi,
aga kui sa saata postiga taotluse / blog / uus andmetega,
see peaks tegelikult proovite salvestada et postitus
ja midagi teha.
>> Mida me teeme on
põhimõtteliselt kõik me peame tegema, et kontrollida, kas see postitus taotluse või GET taotluse
on vaadata, millised on postitus muutujad saate.
Ja kui pärast muutuja on määratud, siis me läheme, et proovida ja luua uus ametikoht.
Jällegi, me lihtsalt seda,
ja mis loob uue postituse ja me sõna otseses mõttes läheb
seada oma valdkondades nagu see,
ja siis me läheme, salvestage see.
Ja siis ma lähen ümber
esilehele, et nad saaksid näha oma ametikohtade loetelu uuesti.
Proovime seda.
Ma ütlen, "Brandon"
ja siis esitada posti teel, ja kui kõik hästi läheb,
nagu näete, see suunatakse mind esilehele,
ja kui ma kerige meil äsja sisestatud postitus.
Jee!
Jah, küsimus.
>> [Student] Mis siis, kui oli sisenenud täpselt sama asi
varem sisestatud?
Kas veenduge, sa ei ole dubleerida
Samal esitamine?
Ole default, ei, sest vaikimisi -
Vabandust, küsimus on, kui sisestate täpselt sama andmete kujul
ja väidavad, et on see võimaldab teil sisestada eksemplaris objekt
topeltkirje sisuliselt?
Just nüüd, jah, see võimaldab teil seda teha,
sest andmebaasid on täiesti kehtiv on täiesti duplikaatridu,
aga kui see on mure, siis saad lisada kinnituste, näiteks
veenduda, et kui see on täpselt sama, midagi, mis on juba olemas,
siis öelda, et see on vale objekt
ja siis saate isegi määrata oma veateate
ja ütlevad: "Vale, sest see on juba olemas" või midagi sellist.
Aga sel juhul, ma võiks lihtsalt luua midagi eksemplaris.
Nüüd proovime ja lisada mõned kinnituste.
Probleemiks on see just nüüd on, et
Võiksin sõnalt esitada täiesti tühi postitus.
Ma ei klõpsa seda nuppu kohe, ja seal me läheme.
Sa ei saa tõesti näha, kuid see ekstra joont siin
näitab, et ma sõna otseses mõttes on uus ametikoht.
See lihtsalt on tühi autor ja tühi keha,
ja me ei taha, et inimesed saaksid seda teha.
See on koht, kus kinnitamise on sisse
>> Ma ei saa minna minu mudel objekt,
ja nüüd ma saan lisada uut funktsiooni, mis määrab
mida valideerimisreeglite ma peaks lisama selle mudeli
veenduda, et see on kehtiv või täpsustada, mida see tähendab, et kehtiv post?
Ja ma tahan öelda, et see on ainus kehtiv post kui autor ja keha
ei ole tühi, ja see on, kuidas sa seda Kohana.
Loote uue funktsiooni nimega "Reeglid"
ja siis sa põhimõtteliselt tagasi assotsiatiivne massiiv
mis määratleb kinnitamise eeskirjad seda objekti.
Me läheme tagasi massiivi ja siis mida me teeme on
öelda "autor," see läheb massiivi
mis läheb teise massiivi nimetatakse "ei ole tühi."
Ja siis ma lähen ütlen "keha."
Okei, ja süntaks see ja struktuur selle
võib tunduda natuke kohmakas ja veidi keeruline.
Kui sa loed dokumendid, see on üsna lihtne välja nuputada,
Aga sisuliselt on see, mida sa pead tegema, et täpsustada
mõned kontrolli eeskirju, ja seal on palju erinevaid reegleid
et Kohana teile tasuta, nagu võite lisada eeskirjad öelda
see peab olema vähemalt selle pikkuse.
Võib-olla tuleb see numbriline. Võib-olla tuleb see tähtnumbriline.
Võibolla see on äärmisel pikkust, nii edasi ja nii edasi.
Seal on palju erinevaid reegleid, mis Kohana annab teile,
ja võid minna oma veebilehel, vaadata dokumentatsiooni,
ja näed kõiki erinevaid asju, mida saab teha.
>> Aga see on kõik, mida ma pean tegema,
ja nüüd vaatame, mis juhtub
kui ma esitada tühi postitus.
Mis juhtub? Oh, ei, ma saan veateate.
Ma saan valideerimise erand.
Noh, see on hea.
Ta ütles mulle, et mu mudel on kehtetu,
aga ma ei taha, et näidata, välja arvatud
minu kasutajad, kui nad püüavad esitada midagi vale, eks?
Ma tahan anda neile mingi sõbralikumaks veateade
kui midagi läheb valesti.
Mida me teeme, on me
wrap kõike proovida saak loop.
Tegelikult ma arvan, et see on ka midagi, mida sa ei ole õppinud veel
aastal CS50, sest C programmeerimiskeelt C,
ei ole erandeid, kuid peaaegu iga muu keel
on erandeid, nii tõesti lühidalt
Erandiks on midagi, mis on tükk koodi saab
viska välja arvatud siis, kui midagi läheb valesti,
kuid siis võib-olla mõned teised tükk kood kõrgemal
ei saagi, et erand ja sellega midagi teha.
>> Näiteks sel juhul,
tükk kood, mis üritab päästa mudeli
see kinnitab mudel, ja kui ta ütleb: "Okei, see mudel on kehtetu"
see läheb visata erand, ja see on omamoodi võrdväärne
C võite tagasi -1 või midagi sellist.
Ja siis minu jaoks on see funktsioon, minu kood
kõrgemal tasandil, võin proovida ja püüda seda erandit
ja põhimõtteliselt öelda: "Okei, kui ma saagi, välja arvatud, mida ma teen?"
Või ma ei soovi, ei saagi, et erand ja las keegi kõrgemal
saagi erand või kui keegi saagi seda,
siis kogu programm jookseb ja ütleb:
"Midagi läks valesti, ja ma ei saanud sellega hakkama."
>> Aga mida me teeme, on mässida tükk koodi proovida plokk,
ja siis ka lisada midagi, mida nimetatakse saagi plokk,
mis on omamoodi kood, mis püüdke erandeid, mis võivad tekkida.
Ja kui ma saagi seda konkreetset erandit
või kehtetuks, välja arvatud, siis see, mida ma lähen tegema, on
Ma panen vead - ma arvan, et see, kuidas ma seda teen -
ja ma panen vigu mõnele asjale.
Ja siis see, mida ma lähen tegema, on see, kui see tabab see erand,
ta ei kavatse suunata, ja kui see ei suunata,
see läheb välja tulema, kui blogi
ja tabas selle blogi / uus, mis tahad mida ma tahan teha.
Kui on viga, siis ma tahan minna tagasi vormi
ja näidata neid vigu.
Nüüd, mida ma tahan teha, on Ma tahan läbida neid vigu
seisukohale.
Okei, ma arvan, et ma pean silmas siin,
ja põhimõtteliselt ma tahan, et kuvada need vead, kui need on olemas.
Enne kui ma kirjutada HTML eest, ma lähen tõesti kiiresti
näidata, mida selle struktuur vigu muutuja Paistab,
ja see on hea tava üldiselt.
Palju kordi sa saad midagi tagasi teatud meetod,
mõned funktsiooni web raamistikku,
ja sa ei tea, mida muutuja välja näeb,
nii et sa ei tea, kuidas sellega tegeleda.
Ma lähen kasutada print r meetod põhiliselt printida.
>> Ja nagu näete, see ütleb mulle, et see on assotsieerunud massiiv,
ja sul on võti, autor, osutab see string,
autor ei tohi olla tühi ja teine ​​võti, keha,
punkti teise string, keha ei tohi olla tühi.
Ma olen nagu, okei, lahe.
Siis ma saan kinnitada, läbi massiivi ja printida iga sõnum.
See on põhimõtteliselt nagu assotsiatiivne massiiv hunnik sõnumeid.
Mida ma teen, on "kui vigu,"
ja ma lähen Tavalise nimekirja loomiseks,
ja ma lähen itereerima läbi kõik vead.
Ja see, ja nüüd ma lähen proovi saata see uuesti
ja vaatame, mis me saame.
Nüüd saame seda kena vigade nimekirja,
ja see on ikka päris kole, kuid see ilmselt võimalik vormindatud vaadata kena,
kuid põhiidee on ainult paar rida koodi,
suutsime kinnitada meie mudel,
veenduge, et teatud valdkondades ei olnud tühjad,
ja kui midagi läks valesti, siis tagasi mingi veateate
Ma võiks siis esitada kasutajale tagasi.
Samuti saate kohandada oma valideerimine
nii et saate tegelikult on veateade
mis on konkreetselt teie taotluse või midagi sellist.
Kõik, mis on üldiselt kohandatav.
>> Kahjuks meil hakkab aeg otsa saama,
nii et ma lähen on lõigata live kodeerimine istungil siin.
Seal on hunnik muid funktsioone, mis ma tahan näidata teile
Käesolevas näites.
Näiteks võite lisada malle saidile
et äkki on mingi HTML-koodi, mida soovite rakendada
et iga lehekülje saidile, ja selle asemel, et kleepida, et
igas ühes vaates faili pead, mis ilmselt oleks halb tava,
saab põhimõtteliselt määratleda need mallid,
ja siis oma kontroller öelda: "Okei, ma kasutan seda malli."
"Kas kõik mu vaated seda malli kasutada."
Ja viimane asi, mida ma tahan näidata teile samuti
et meil ei ole aega, on piiriülese saidi skriptimine
ja põhimõtteliselt ma arvan, et te olete ilmselt näinud CS50 -
Ma arvan, et David Malan ilmselt rääkis, kuidas saab tavaliselt süstida
JavaScript kood - olete sellest rääkinud?
Võib-olla? Võib-olla mitte?
>> Aga palju kordi võite süstida pahatahtlik JavaScript koodi
kellegi andmebaas ning kui nad ei pääse, et õigesti,
siis, kui tegemist on, et andmed tagasi kasutaja
siis võib joosta mingi juhuslik JavaScript koodi sa ei taha juhtuda,
ja ma läksin näitama, kuidas sa seda tegid jooksul Kohana.
See on tegelikult tõesti lihtne.
Ma võiksin seda teha just nüüd on 2 sekundit sõnalt.
Kõik, mida pead tegema, on põhimõtteliselt wrap neid asju
Selles asi nimega HTML üksused.
Ja et automaatselt pääseda kõik märgid õigesti
ja veenduge, et sa ei saa seda probleemi lahendada.
[Student] Sa kirjutatud esimene test valesti.
[Brandon Liu] Oh, oops.
>> Olgu, see on kõik, mis mul oli, et jagada teiega täna.
Need slaidid saab olema postitatud, kuid need on tavaliselt
vaid vahendeid sa peaksid tõesti vaja alustada Kohana.
Võite minna veebilehel. Neil on kasutusjuhend, ja neil on ka API explorer.
Me saame uurida kõiki erinevaid funktsioone ja helper funktsioone nad on teile.
Nad on üldiselt piisavalt teavet veebilehel
, mida saab kasutada, et alustada ja hakkan minema Kohana.
Seal ei ole nii palju õpetused, ma arvan, sest Kohana, väljaspool
mis neil kodulehel siin, nii et see on ilmselt parim valik.
Aga kui sa tahad minna koos web raamistik
ja sa ei taha olla kiirenemist uut keelt,
ja sa tahad midagi, mis on suhteliselt kerge ja on lihtne õppimiskõver
Tahaksin kindlasti soovitada Kohana.
See on ilmselt parim pakkumine selle eest.
Naljakas, aga see, kui olime kasutades Ruby on Rails,
oleksime korratud mida tegime
ja ilmselt rohkem alla 3 minuti.
No nali, kuid õppe Ruby on Rails võtab palju kauem
kui see võtaks õppida Kohana.
See on põhimõtteliselt oma valik, mida soovite valida, et õppida,
aga kui sa tahad saada ja töötab kiiresti,
Kohana on kindlasti väga hea valik.
>> Kõik viimase küsimusi, enne kui me lõpuks? Jah.
[Student] Kuidas me integreerida see
aastal CSS raamistikku nagu sa kasutasid kui sa juhendades?
Küsimus on selles, kuidas me integreerida et koos CSS raamistik?
Mida me ilmselt teha, on meil ilmselt sisaldama
uus kaust, kuhu me pane kõiki oma CSS faili,
ja siis me ka lisada uue malli.
Malli me hulka kuuluvad CSS failid
veenduge, et nad on viidatud igal ühel leheküljel,
ja siis, kui sa tegelikult kirjutad HTML,
sa lihtsalt lisada asjakohane klasside ja tühi-tähi,
ja näiteks, kui te kasutate midagi vorm
abistaja funktsiooni, võite lisada rohkem parameetreid pärast
täpsustada, mis liiki soovite siduda erinevaid asju
et nad saaksid stiil korralikult, ja see on põhiliselt, kuidas teil läheb.
>> Kõik muud küsimused?
Lahe.
Tänan teid teie aja eest, ja tänan teid, et tulite.
Ma ei kavatse lisada väga palju muud,
vaid 1 tõeliselt kiire asi on meil ei ole link
vormi.
Tõesti loll.
Lisame - tegelikult vaadata, blogi, indeks,
olgem tõesti kiiresti lisada link, mis läheb uue lehekülje,
lehele, kus me saame lisada uus postitus.
Me teeme seda.
Mis on tore on on kogu rühma HTML helper funktsioone
mis teha erinevaid asju, nii et sul juba nägin üksuste
toimi siin, kuid neil on ka funktsioon nimega "ankur"
kuhu saab kirjutada blogi / uus
ja ütlevad: "Post uue blogi."
Ja see tekitaks see link teile,
ja see tundub tõesti triviaalne teha, aga see on tore,
sest arvan, et te olete liigub oma kodulehel alates 1. domeen teise.
Ja kui sa lihtsalt kirjutas URL ise,
siis oleks muuta kõik URL-id.
Või äkki kolis ta alates 1. alamkataloogi teise alamkataloogi.
Sa ei pea muutma kõik need URL-ise,
ja see ei ole lõbus.
Võite kasutada seda ankur siin,
ja saab muuta domeeni või alamkausta eesliide
konfiguratsioonifailis kord,
ja siis rakendab seda kõikjal, ja see on jällegi
Hea näide ei korda ennast, kuivatamine oma koodi välja.
Kus sa oled, korrates ise proovida ja väljavõtte mingisugune konfiguratsioonifaili
või erinev funktsioon ja on seda käsitleda, et teile.
>> Ja kõige viimane asi, mida ma tahtsin teile näidata, oli
arvan, et me oleme tagasi alguses postitus, ja ma olin koosneb mõned väga pikk essee,
aga ma unustasin lisada minu autor.
Nüüd, kui ma vajuta "Submit Post"
Ma kaotasin kõik.
Ei! Tõesti kurb.
Niisiis, kuidas sa tegeleda sellega?
See on see, mida me teeme.
Mis me teeme, on siin nende panuse ja teksti ala funktsioonid
kui arvestada ka teine ​​parameeter, siis selle väärtus, teine ​​parameeter
saab olema see, mis valdkonnas läheb esialgu asustatud.
Mida me teha saame on meie blogi kontroller,
võiksime siduda teise muutuja.
Nimetagem seda "väärtused" võibolla.
Ja liigu post massiiv, sõna otseses mõttes.
See tähendab, et kui valideerimine ebaõnnestus
andke mulle post massiivi esitasin viimase nõudmisel
ja nii ma saan kasutada väärtused minu viimane esitamine
repopulate väljad.
Nüüd ma saan teha midagi väärtused autor
ja väärtustab keha, ja nii nüüd kui ma mõne juhusliku kraami
ja vajuta "Submit Post", siis ta jääb sinna.
Aga me ei kavatse joosta teise probleem.
See toimib, kuid kui ma lähen lehele esimest korda,
see läheb krahhi, ja see on, sest esimest korda
me minna lehele, postitus muutuja ei ole veel määratletud.
See on null. Seda pole olemas.
>> Ja mida me tahame öelda, on see, kui see võti on olemas,
siis tagasi väärtuse selles array,
kuid kui võti ei ole olemas, siis tagastab tühja stringi.
See on funktsionaalsus, mida me tahame siin.
Me tahame, et kontrollida, kui võti on olemas, enne kui proovite juurdepääsu massiivi
ja õnneks piisavalt,
Kohana annab meile abistaja funktsiooni eest.
Nad on kogu see komplekt funktsioone
nime all ARR, lühike massiiv,
ja neil on 1 funktsioon nimega "saada"
ja saab edasi massiivi,
ja te ei liigu nime võti.
Siis põhiliselt, mida ta teeb on see püüab saada, et võti,
kuid kui võti ei eksisteeri massiivi
siis naaseb tühi, või saame ka määrata vaikimisi, ma usun,
mis on tore.
Nüüd, kui me teeme sama asja uuesti,
siis näed nüüd see töötab esimest korda ümber,
ja uuesti, kui me kirjuta mingi suvaline värk
ja proovida ja esitab siis ta jääb sinna.
>> Ja ma arvan, et saan ka teile näidata, kuidas lisada malli tõesti kiiresti.
Mida me saame teha, esiteks me saame lisada uus vaade nimega "template.php"
jooksul Views kausta
ja mida ma lähen tegema, on ma lähen välja printida midagi, mida nimetatakse "sisu"
mis saab olema minu peamine sisu.
Ja võib-olla väga põhjas ma lisada, ütleme,
autoriõigus.
[Kuuldamatu õpilane küsimus]
[Brandon Liu] Võibolla see on super põhi template ma tahan kasutada.
Ma tahan olla kausta minu autoriõigus igal ühel leheküljel,
ja nüüd, mida ma lähen tegema sees minu kontroller
Nüüd on selle asemel, et öelda: "laieneb Controller"
Ma ütlen: "laieneb Controller_Template"
ja nüüd selle asemel, et öelda: "Vastuseks keha on võrdne selle eesmärgiga,"
Ma ütlen, et "seda malli sisu -"
ja ma arvan, et - ma panen võrdusmärk?
Ma unustan. Jah, nii ma arvasin.
Ja nüüd ma seda sisu muutuja võrdseks vaade.
Ma võin teha sama siin.
Ja nüüd, kui ma värskendada, näete nüüd see autoriõiguse lisatakse sinna
ja lihtsalt mingi suvaline post,
ja siis jälle, siis tuleb tõdeda, et autoriõigus on väga lehekülje allosas.
>> Great. See on kõik, mida ma tahtsin näidata teile poisid.
[Aplaus]
Kas on küsimusi?
[CS50.TV]