[Semina] [Kohana: Lightweight PHP Mfumo] [Brandon Liu] [Chuo Kikuu cha Harvard] [Hii ni CS50.] [CS50.TV] Hi kila mtu. Jina langu ni Brandon. Mimi nina junior hapa katika chuo kufanya sayansi ya kompyuta, na leo tuko kwenda kuzungumza kuhusu Kohana, ambayo ni PHP mfumo wa maendeleo ya mtandao. Leo ni kwenda kuwa kuishi coding semina, hivyo mimi nina kimsingi kwenda kutumia dakika 5-10 kueleza kile Kohana ni, na kisha mimi nina literally kwenda kujenga blog super rahisi kwa haki yenu hapa halisi kutoka mwanzo. Tunakwenda kushusha code kutoka kwenye tovuti Kohana, na sisi ni kwenda kuanza kujenga blog, na hopefully utakuwa mafunzo sana, kwa sababu utaona labda labda mimi itabidi kufanya baadhi ya makosa, na utaona nipate kutoka kwao, au utaona mchakato wa mawazo yangu kama mimi kujenga nyumba kutoka kwa blog hii, na wakati huo huo, utapata pia kupata ukoo na mfumo yenyewe. Hopefully utakuwa zoezi mafunzo sana. Kwanza, ni nini hasa mfumo? Kama tumekuwa kuchukua CS50 hivyo mbali, wewe si kweli kazi na yeyote mifumo bado, na kitu ni hii. Ve pengine kufanyika 1 maendeleo ya mtandao pset tayari, na hebu sema wewe kuendelea kujenga Nje na kuweka tovuti ya jengo. Itabidi kuanza taarifa mambo kadhaa. Jambo la kwanza utasikia taarifa ni kwamba pengine wewe kufanya mambo sawa tena na tena wakati wote, mambo kama kusafisha data pembejeo user, mambo kama maandalizi ya mafaili yako katika njia fulani. Kitu kingine utasikia pia pengine taarifa ni kwamba kanuni yako inaweza kuanza kuwa sana, messy sana, na unaweza kuondoka messy na tu kuwa na wakati mgumu sana kudumisha yake, au unaweza kuanza muundo code yako na kuifanya wa msimu katika baadhi ya njia ya kufanya hivyo maintainable zaidi. Hii ni pale ambapo mfumo wa mtandao kimsingi, aliingia Watu hawa ambao walikuwa kujengwa mengi ya Nje, wakasema, "Hatuna haja ya Rudia hii kila wakati sisi kujenga tovuti." "Kwa nini sisi tu kufanya mfuko kwamba hana mambo haya yote kwa ajili yenu kila wakati unataka kujenga tovuti? " Na hivyo kwamba wakati wewe kufanya tovuti mpya, wewe tu kuzingatia nini hasa tovuti hii hasa ni juu. Huna haja ya kurudia wote Configuration mbalimbali na mgawanyo wa codes na kuandika code kwamba mara nyingi na kufanya wakati wewe ni kufanya tovuti. Wazo ni kwamba mfumo wa utapata kuandika ngazi ya juu code bila ya kuwa na wasiwasi juu ya maelezo chini ya ngazi ya. undani chini ya ngazi ya ili kuwa kitu kama kushughulika na kusafisha data pembejeo user. Hiyo ni kitu ambacho ni lazima si kweli wanahitaji na wasiwasi juu. Unapaswa kuzingatia kile mtandao mgao yako ni kweli juu. Ni hupunguza mengi ya boilerplate code. Ni usanifu kwa ajili ya mradi wako. Moja maarufu itakuwa Model-View-Mdhibiti, ambayo mimi nina kwenda kuzungumza kuhusu katika pili. Na mara nyingi mifumo hii uliopo seti ya taratibu, sheria, na njia bora kwa wewe kutumia hivyo kwamba wakati wewe kupitisha mfumo wa mtandao una kuandika code yako kwa njia fulani, na ni kwa ujumla walikubaliana juu ya seti ya kanuni na jamii ambayo kwa ujumla ni kukubaliwa kuwa njia nzuri ya kuandika code. Inafanya code yako maintainable zaidi, zaidi usable, kadhalika na kadhalika. Na hatimaye, jambo ambalo Mimi nataka kusisitiza juu ya mfumo dhidi ya maktaba ni wazo hili kuhusu inversion ya kudhibiti, na kitu ni hii. tofauti kati ya maktaba na mfumo ni kwamba pamoja na maktaba wewe bado ni kuandika mpango kuu, na wewe ni aina ya kutaja maktaba na wito juu ya maktaba kufanya kitu kwa ajili yenu. tofauti kati ya maktaba na mfumo ni kuwa mfumo wa anaanza na kudhibiti, na waomba code yako, hivyo unaweza kufikiria kama - hii ni kwa nini ni kuitwa mfumo wa - mfumo inatoa sura hii na muundo kwa code yako, na kujaza mashimo, na hii itakuwa wazi zaidi katika pili wakati unaweza kuona mimi kuanza kuandika kanuni katika mazingira ya mfumo. Utaona kwamba mimi nina kujaza mapengo, na mfumo wa ni aina ya kudhibiti vipande vyote kusonga, na mimi na kuweka vipande katika maeneo ya kulia. Leo tuko kwenda kuzungumza kuhusu Kohana, ambayo ni moja ya mifumo ya PHP wengi. Kuna mifumo ya mtandao, na kuna wale katika karibu kila lugha moja, na mimi nina kuokota Kohana kwa sababu Kohana ni arguably na kwa ujumla kutambuliwa kama rahisi PHP mfumo wa pick up. Ni lightweight zaidi. Kuna wale wengine huko nje kwamba kuja na wengi, wengi makala zaidi, lakini wao huwa na kuwa vigumu zaidi kwa pick up. Na hatimaye, Kohana anatumia MVC usanifu. Ni lightweight wa kutosha kwamba tunaweza literally kujenga mradi haki hapa haki mbele ya macho yako, na unaweza pretty much kufuata pamoja pretty kwa urahisi. Nini ni MVC usanifu? Anasimama kwa Model-View-Mdhibiti, na labda kama unadhani kuhusu code tumekuwa kuandika hivyo mbali kwa baadhi ya yako psets maendeleo ya mtandao unaweza kuwa na uwezo wa kuona baadhi ya hii, lakini kwa kawaida wakati wa kuanza kuandika mtandao ngumu zaidi ya maombi, mgawanyiko kati ya makundi haya 3 inakuwa zaidi na dhahiri zaidi. Mimi kuweka nje MVC hapa aina ya kama stack, na mara nyingi utasikia watu majadiliano juu ya mwingi katika maendeleo ya mtandao, na hii ni kuonyesha wazo kwamba kila safu, kila sehemu kwa kweli anajaribu kuwasiliana tu kati ya 2 sehemu nyingine. Mtu wanapata tovuti yako kama mteja au browser. Kiutendaji na mpango wako kupitia kwa mtazamo code. maoni code inaingiliana na mtawala. mtawala inaingiliana na mfano, na mfano inaingiliana na SQL database. Na hakuna hopping katika kati ya kama wewe kuandika code yako vizuri. Nini mambo haya nini? mfano kimsingi ni kipande ya kificho kwamba inahusika na data yako. Kitu chochote ambayo inahusika na database yako, pamoja na vitu kwamba kuhifadhi, au kurejesha vitu wale katika database, Hayo ni yote kubebwa na mfano wa kuigwa. Labda una vitu katika orodha yako. Tunakwenda kujenga mfano wa kuigwa kuwa na kufanya na posts, hivyo baada ya kuwa na baadhi ya sifa yake. Unaweza kuwa na kazi karibu kuhifadhi nafasi hizo au kurejesha posts au kuchuja posts na kadhalika na kadhalika, na kwamba code yote yale kubebwa na mfano wa kuigwa. mtawala ni aina ya maombi mantiki, na mambo mengi tofauti unaweza kwenda katika maombi mantiki. Kama wewe ni kuzungumza na API mbalimbali, ambayo inaweza kuwa ambapo wewe ni kushughulika na maombi mantiki. Kama wewe ni kujaribu kuwa na kuleta data kutoka mifano nyingi mbalimbali na kuwa na kuchanganya yao katika baadhi ya njia, kwamba mara nyingi inaweza kuwa kubebwa na mtawala. Kwa mfano, Facebook, kama wewe rafiki ya mtu, kisha labda kwamba kitendo cha kuanzisha uhusiano kwamba inaweza kufanyika kwa mtawala. Na hatimaye, maoni ni kificho kwamba ni kuzalisha nini hasa kuona. mara nyingi nadhani katika psets CS50 wao si kweli moyo guys kwa tofauti ya mambo haya 3. Pengine utasikia na hii kubwa, kwa muda mrefu file ambapo juu kufanya baadhi ya swala SQL na labda kufanya baadhi ya usindikaji juu ya data ninyi Rudishwa kutoka database, na kisha una HTML yako yote chini. Na unaweza kupata kwamba kama kujenga kurasa zaidi na zaidi kwamba wewe ni kwenda na baadhi ya kanuni marudio, na pia, kitu ni faili yako kweli anapata kubwa na ya muda mrefu na inakuwa unwieldy kusimamia. sababu MVC ni vizuri kuonekana ni kwa sababu kadhaa. Jambo la kwanza ni kitu kinachoitwa mgawanyo wa wasiwasi ambayo ni wazo kwamba wakati una - walau 1 kipande ya maadili ya lazima kufanya 1 kitu na kufanya hivyo vizuri, na unapaswa kuchanganya vipande vya kificho kwamba kufanya mambo mbalimbali. Kwa mfano, mtazamo kanuni na mfano code, wao si kweli kuwa kuhusiana. Hawana kuwa katika files huo, hivyo wakati unaweza, tofauti yao nje hivyo ni rahisi kutunza. Kitu kingine ni kanuni ya taka. Unaweza kupata mwenyewe kuandika moja SQL swala au kufanya maswali sawa ambayo inaweza kuwa yanayotumika katika 1 kazi, na kwamba ni wazo nyuma ya mifano na controllers, kuwa ni katika kazi tofauti kwamba unaweza kutumia tena katika maeneo mbalimbali katika mradi wako. Na hatimaye, kwamba amefungwa kwa kukausha code yako, au si kurudia mwenyewe, wala kurudia mwenyewe. Hii ni kueleweka sana katika maendeleo. Wakati wowote unaweza, hawataki kurudia mwenyewe, kwa sababu kama wewe kurudia mwenyewe,  ni zaidi ya gharama kubwa ya kudumisha. Kama unataka kubadilisha 1 kitu, na mabadiliko hayo kila mahali, na ambayo inaongoza kwa mende, na ni ya kutisha. Sawa. Maswali yoyote hadi sasa kuhusu Kohana wakati wote? Kubwa. Sasa tunakwenda kwa kupiga mbizi katika kuishi coding kikao, na hopefully kila kitu unaendelea vizuri. Mimi naenda kimsingi kujenga tovuti hii juu ya moja ya kijijini watumishi wangu, na kwa njia hiyo guys unaweza pia angalia tovuti na kupata tovuti, na pia mazingira ni bora kimeundwa kuliko kijijini mashine yangu, kwa sababu ni mbio Linux badala ya OS X. Sisi ni literally kwenda kuanza. KohanaFramework.org. Mimi nina kwenda kushusha code kutoka kwenye tovuti. Mimi nina kwenda nakala ya kiungo mitaani, kwenda server yangu, kushusha ni, na mimi nina kwenda kutafuta yake. [Mwanafunzi] Nini kubwa unaweza kufanya maandishi? [Brandon Liu] Je, kuwa bora? [Mwanafunzi] Je, kwamba doable? [Brandon Liu] Yeah, hiyo ni nzuri. Mimi kupakuliwa ZIP file na unzipped kwamba katika saraka aitwaye Kohana, na tunakwenda kubadili jina kuwa CS50-Kohana, na hebu kwenda in Kutisha. Hapa unaweza kuona rundo la files tofauti. Wengi wa unaweza kupuuza - we're si kwenda kwa njia ya kila faili moja kwamba katika hapa kwa sababu ya yetu wakati, lakini kwa ujumla wakati wa kufunga Kohana, jambo la kwanza kufanya ni wewe kwenda directory, na wewe utakuwa kimsingi kufanya baadhi ya vipimo mazingira na mengineyo kuhakikisha mazingira yako ni vizuri kuweka kukimbia Kohana na kuhakikisha kwamba kila kitu ni sawa. Unaweza kuona mambo mengi kupita, lakini kwa ujumla daima kukimbia katika tatizo hili 1 ambapo analalamika kuwa baadhi directory haliandikiki, na kwamba kwa sababu ya baadhi ya ruhusa. Sijui ni kiasi gani guys wamejifunza kuhusu ruhusa file katika CS50, lakini kama wewe kufanya maendeleo ya mtandao, wewe ni kwenda kukimbia katika suala hili sana. Mimi naenda kufanya hivyo writable na nadhani pia kuwa na - kuna sisi kwenda. Sawa, hivyo sasa unaweza kuona kila kitu kupita, na sasa itakuambia rename install.php file. Mimi nina kwenda kwa hoja install.php faili installed.php, na sasa kama mimi mahitaji, inanipa makosa fulani, na hii ni mahali ambapo debugging anakuja in Hii ni ambapo unaweza kuona nini hasa kinachoendelea kutokea. kitu ni, by default, Kohana akubali kwamba mradi wako ni mizizi orodha ya milki yako, hivyo ni wanatarajia wewe kuwa katika demo.brandonkliu.com. Tuna kuwaambia ni kwamba ni kweli katika subfolder. Ni katika subfolder aitwaye CS50 Kohana. kitu ni, ni misinterpreting CS50-Kohana kama kitu kingine, ambayo mimi itabidi kuelezea kwa katika pili. Lakini mimi lazima kuwaambia kwamba kitu ambacho ni kuwa na inatarajiwa. Nini tunakwenda kufanya ni sisi ni kwenda katika folder hii inayoitwa bootstrap.php, ambayo ni folder Configuration ambapo mambo mengi tofauti ni kuanzisha. Mimi wazi kwamba up. Basi labda moja ya mambo ya kwanza mimi itabidi kufanya ni kubadilisha eneo wakati. Na kisha hebu angalia. Aha! Hapa hapa. Kuna kundi la maneno mbalimbali Configuration katika hapa, lakini moja mimi nina kuangalia kwa ni hii kitu inayoitwa msingi URL, na kwa default mimi kupata kuweka Kohana, lakini nina kwenda na mabadiliko kwamba CS50-Kohana, na nadhani kwamba lazima kurekebisha. Ndiyo, kubwa. By default, kuona kwamba ni kazi, inasema, "Hello World." Wapi kwamba kuja kutoka? Jinsi gani sisi kupata Habari Dunia? Wapi hasa ni kificho kwamba kweli aliandika kwamba? Kuelewa kwamba, mimi itabidi kuanzisha dhana hii inayoitwa routing. Pretty sana mifumo mtandao wote na dhana iitwayo routing, ambayo ni kipande cha programu ambayo ramani URL baadhi ya kwa kipande fulani ya maadili ya ndani ya mfumo wako. Kwa mfano, kama una baadhi ya URL na kwenda baadhi URL kama foo.com / blog / all basi, kile mfumo ni kwenda kufanya - au angalau kile Kohana ni kwenda kufanya - ni ni kwenda kupata darasa aitwaye mtawala blog, na ni kwenda kukimbia kazi jina lake hatua zote. Najua mimi kuzungumza juu ya darasa na kazi, na Mimi najua wewe guys si kufunikwa madarasa na kazi katika CS50 bado, lakini kwa sasa, unaweza kufikiria madarasa kama tu kundi la kazi, njia ya kambi kazi pamoja. Hiyo ni kweli wote unahitaji kujua. Sasa kama sisi kuangalia folder mfumo wetu wa, ndani ya folder maombi kuna folder mwingine aitwaye madarasa, na folders nyingine wameitwa Mdhibiti na Model. Kama ukiangalia ndani ya Mdhibiti folder, tunaona kwamba kuna ni faili inayoitwa Karibu, na unaweza kuona hapa ni darasa aitwaye Mdhibiti Karibu, na kuna kazi kuitwa Action Index, na kile yake ni seti ya mwili wa majibu yako kwa Habari ya Dunia. Hiyo ambapo code ni kuwa imeandikwa. swali nyingine ni, vizuri, mimi hakwenda blah, blah, blah, / kuwakaribisha / index. Jinsi gani mimi kuishia hapa? Naam, hiyo ni kwa sababu tu hapa chini ya faili wetu bootstrap ambapo sisi kuweka njia yetu unaweza kuona kwamba wao kuweka baadhi ya defaults kwa ajili yenu. mtawala default ni Welcome. hatua default ni Index. Hiyo ni kwa nini wakati sisi kuweka kitu katika huko ni moja kwa moja akaenda Karibu mtawala na index Action. Kila kitu mantiki hadi sasa? Sasa, unaweza kufanya zaidi ya kwenda kwa Mdhibiti na hatua maalum. Unaweza pia kupita katika vigezo na mtawala. Tu kama mfano, Mimi nina kwenda kuongeza hatua nyingine ya mtawala hii kuonyesha. Hebu piga hatua hii Echo, kwa sababu itakuja kuwaambia chochote kufanya hivyo, na hivyo mimi nina kimsingi kwenda kunyakua parameter kwamba kwenda kutumwa kwa njia ya mimi routing mpango, na kama unaweza kuona hapa, line haki hii hapa, unaweza kuona kwamba hii kimsingi ina maana kuwa mtawala, na una /, na una hatua, na una / mwingine, na kwamba kinaendelea kuwa vigezo, na kwa sababu tuna hii ID jina ndani ya mabano pembeni, hiyo ina maana kwamba sisi ni kutaja ID hii parameter. Baadaye katika mtawala yangu code kama nataka kunyakua kushikilia ya kwamba parameter, Naweza kutumia code niliandika, kupata parameter jina lake ID. Hiyo ni nini mimi hapa, na mimi nina kwenda na kurudi na kusema, "Wewe alisema" hiyo. Na hivyo sasa kama mimi kwenda kwenye tovuti yetu, Mimi kwenda cs50-kohana/welcome/echo/Helloooo-- oh, hiyo ni haki. Kuna hatua 1 I kushoto nje. Hii ni sehemu ya kuishi coding wazo. Hapa ni 1 kitu. Hebu angalia. Hivyo kwa kawaida na default na mengi ya maombi hayo ya mtandao una ni pamoja na jambo hili index.php katika URL yako, kwa sababu wazo ni index.php ni aina ya kuingia hatua ya maombi yako, lakini bila shaka, hiyo ni aina ya annoying kuwa. Hutaki kuwa na index.php kuonekana katika URL yako, na pretty much kila mfumo wa mtandao nje ya boksi ina tatizo hili index.php, na hivyo kuwa na kuchukua baadhi ya hatua kuwa na uwezo wa kuondoa hiyo. Na hivyo katika kesi hii, nini tunakwenda kufanya ni tunakwenda kutumia faili kuitwa. htaccess, na hii ni kitu ambacho ni maalum kwa Apache mtandao wa kompyuta, na inaweza kufanya vitu kama rewrite URLs na kuelekeza URLs na kadhalika na kadhalika, na Kohana ni nzuri ya kutosha kutoa template. htaccess faili kwamba tunaweza kutumia. Kama unaweza kuona, kuna file huko aitwaye example.htaccess, na tunakwenda nakala ya kwamba kwa. htaccess. Mimi nina kwenda kufungua hili na hariri, na kimsingi haina rundo la vitu mbalimbali. line muhimu unaweza kuangalia ni haki hapa. Wazo ni kwamba hii seti up utawala kwamba anasema, "Sawa, chochote aina katika, prepend index.php hiyo." Unaweza kuona kwamba. . * Anasimama kwa kitu chochote, mechi kitu chochote, na kisha sehemu ya pili ni index.php / $ 0, na $ 0 inahusu chochote ilikuwa kuendana hapo awali. Je, hiyo mantiki? Lakini jambo muhimu kweli nataka mabadiliko ni kubadilika hii ya msingi rewrite, ambayo ni URL msingi. Ni aina ya akubali ambapo wewe ni kazi kutoka. Mimi nina kwenda kuongeza CS50 Kohana na kwamba, na kwa njia hiyo sasa kama mimi kuondoa index.php, ni lazima kazi, na mimi nina kwenda kuongeza idadi ya baadhi ya kuonyesha kwamba ni kweli alifanya kazi. Sauti nzuri. Maswali yoyote hadi sasa? [Mwanafunzi] Jinsi gani kujua kufanya 123? Ni kwamba hoja? Hasa. Unaweza kufikiria tu kama hoja. Lakini jambo weird, ingawa, ni kwamba njia Kohana gani ni wao si kufanya hivyo hasa kama hoja. Una kunyakua hiyo kama hii. Una kunyakua ombi kitu na kuomba kwa ajili ya parameter hiyo jina lake ID, na kwamba jina ID linatokana na kwamba bootstrap file kwamba mimi ilionyesha awali, na jina ID mara katika mabano wale angle, na kwamba ni jinsi gani kunyakua vigezo hizo. Kutisha. Maswali yoyote mengine? Kama nilivyosema, controllers, wao kushughulikia maombi mantiki, hivyo kwamba ni 1 mfano ambapo unaweza kuona that's - ni ya msingi sana, lakini bado ni maombi mantiki, wazo la grabbing parameter na kujenga kamba mpya kwamba anasema, "Wewe umesema blah," na kisha mate kwamba nyuma yenu. Na kwa ujumla nini kufanya ni kujenga controllers tofauti. Kujenga controllers tofauti kwa ajili ya sehemu mbalimbali ya tovuti yako. Leo tunakwenda kufanya tovuti rahisi sana, na ni kwenda kuwa blog msingi sana. Sisi ni kwenda kufanya mtawala mpya tu kwa ajili ya posts katika blog. Lakini basi kama ningekuwa pia kuongeza maoni kwa blog post, basi napenda pengine wanataka kufanya mtawala mpya kwa maoni hayo. Kama nilitaka kuongeza watumiaji, napenda pengine kuongeza mtawala mpya kwa watumiaji wale, na kwa ujumla, wazo ni kwamba wakati wowote na mtindo mpya, data mpya kitu kwamba wewe ni kushughulika na, una mtawala moja kwa ajili ya data kwamba kitu. Leo tuko tu kwenda kufanya kazi na 1 data kitu, na kwamba kinaendelea kuwa posts, na pia unaweza kufikiria data vitu kama sambamba na meza. Kwa ujumla kila meza sambamba na 1 aina ya data kitu, hivyo meza baada ya itakuwa na 1 baada ya mfano, ambayo itakuwa na baada ya 1 mtawala sambamba na kwamba, na moja kwa ajili ya maoni, sawa kwa watumiaji, na kadhalika na kadhalika. Na kwamba utawala mkuu wa thumb. Kuna ni kwenda kuwa kesi maalum ambapo yanatofautiana na kwamba, lakini 90% ya muda kwamba ni nini wanaenda kufanya, na mimi nitakuonyesha kwamba ni nini tunakwenda kufanya leo. 1 zaidi dhana kabla ya sisi kupiga mbizi nyuma katika kanuni, wazo hili la kitu mahusiano ramani. You guys tayari amefanya maendeleo ya mtandao pset, na wameweza kuona kwamba kufanya SQL swala, na chochote anarudi wewe ni safu. Unaweza kupata safu hizi, na index yao kwa baadhi jina, jina la safu na meza, na kwamba ni jinsi gani kazi pamoja na hayo, na inaweza kuwa kidogo mbaya. Lakini zaidi ya hapo, kama una mahusiano ndani ya orodha yako, kama kwa mfano kama mimi na maoni na posts, basi labda mimi wanataka kunyakua baada ya mzazi wa maoni. Kama mimi kutumia safu tu katika SQL, basi wote naweza kupata ni ID za baada ya mzazi na si baada halisi yenyewe. Lakini wakati sisi ni coding, je, sisi kweli wanataka ni kweli kunyakua  mzazi baada ya yenyewe wakati mwingine. Nini kitu ramani ya uhusiano gani ni inachukua matokeo ya database swala na kuiweka katika vitu kwa ajili yenu, ambayo ni nicer kufanya kazi na kuliko arrays wazi na mistari. Kwa mfano, sasa wakati mimi kuwa na maoni labda, na mimi wanataka kunyakua mzazi baada ya yake, na mimi labda maoni arrow post, kisha itakuwa kweli nipe baada ya kitu sambamba na halisi mzazi post, baadhi si tu ID, ambayo napenda vinginevyo na kutumia na kufanya mwingine swala SQL kunyakua post, ambayo ni mbaya na ya lazima. Na zaidi, na ramani ya haya yote safu data katika vitu, unaweza pia ambatisha kazi zaidi kwa vitu, hivyo kwa mfano, mimi kuongea kuhusu jinsi madarasa ni kimsingi makundi ya kazi. Unaweza kufikiria ni kama hiyo. Kwa mfano, labda nina hii kitu post, na labda Ningependa kuwa na aina fulani ya kazi masharti hayo kwamba kimsingi anasema mimi ilikuwa ni hivi karibuni posted? Ilikuwa posted ndani ya wiki iliyopita, kweli au uongo? Na kwamba ni kazi mimi watachomeka kwenye kwamba kitu, na ni kweli rahisi kwa kuwa ni katika sehemu moja, na kuna mwenyeji wa kazi mbalimbali unaweza kuunda kwa vitu hivi, na ni nzuri kwa kweli kuwa na uwezo wa ambatisha darasani, kwa kitu, lakini kama wewe tu alikuwa safu kuja kutoka orodha yako, basi huwezi kweli ambatisha utendaji yoyote ile. Ni literally data tu. Maswali yoyote kuhusu kwamba wakati wote? ORMs ni maendeleo ya mtandao ya kawaida sana, na kuna mengi ya aina mbalimbali za ORMs, na Kohana ina ORM yake mwenyewe. Ni ya msingi sana, lakini utasikia kupata ladha ya nini inaonekana kama. Hebu kujenga mfano wa kuigwa kwa blog posts yetu, na jambo la kwanza sisi ni wazi haja ya kufanya ni kujenga meza halisi ndani ya database yetu kwa kweli kuhifadhi data yetu kwa ajili ya nafasi hizo. Jambo la kwanza mimi nina kwenda kufanya ni kwenda kwenye phpMyAdmin. Je, guys kutumika phpMyAdmin kabla? Sawa, kushangaza, hivyo nyie tayari kujua kwamba ni, na mimi nina kwenda kujenga meza mpya iitwayo Kohana Posts, na itakuja kuwa kweli rahisi. Mimi itabidi kuingia tena ndani Wote sisi ni kwenda kufanya leo ni kuwa na mwandishi na mwili, tu kuitunza rahisi. Mimi nina kwenda kujenga meza kwamba, na sasa sisi tu meza anayewakilisha nafasi yetu pamoja na mashamba 2 kwa ajili ya mwandishi wetu na mwili yetu. Kitu kingine Mimi kwenda kufanya sasa ni configure mtandao maombi yangu hivyo anajua jinsi ya kuungana na database, na hii, tena, ni kitu ambacho itabidi kufanya maombi yote mtandao. Mniambie ni user name na password na jina la database na kadhalika na kadhalika kufikiri jinsi ya kweli kuungana na database yako. Katika Kohana, tuna kitu kinachoitwa moduli database, na katika folder Configuration tuna folder hii inayoitwa Database, na kama unaweza kuona, kuna rundo la mazingira kuwa na kuweka hapa kuwaambia ni nini jina la mtumiaji na password kwa database ili niweze kweli kuungana na yake. Na kwa kuwa mimi sitaki wewe guys kwa kweli kujua user name na password ya database yangu, Nina file ambapo mimi tayari kuweka yote juu, na mimi nina kwenda nakala na kuweka juu. Kutisha. Sawa. Nadhani Configuration wote mimi haja ya kufanya, lakini hebu angalia. Tutaweza kuendelea kufanya kazi ndani yake, na kama kitu shambulio, basi tutaweza kurekebisha. Sasa nini mimi kwenda kufanya ni mimi nina kwenda kujenga mtawala mpya. Au kweli, sorry. Kwanza mimi na kujenga mtindo mpya. Mimi itabidi kujenga mfano wa kuigwa mpya iitwayo Post.php, na nini tunakwenda kufanya ni tunakwenda kuiita Model_Post darasa. Kupata baadhi syntax mwangaza juu, na hivyo wakati mimi kusema, "hadi ORM," kwamba kimsingi baadhi kitu-oriented zaidi programu, ambayo kwa bahati mbaya nyie si kujifunza katika CS50 bado, lakini ni rahisi sana pick up. Inanipa utendaji hii yote ya ziada kwamba anakuja katika mfuko huu ORM, na hivyo mimi kupata rundo la kazi ya ziada na mengineyo kwa ajili ya bure, ambayo utaona kidogo ya pili katika. Hivi sasa kweli wote mimi haja ya kufanya ni kujenga darasa hili. Mimi wala hata haja ya kufanya kazi yoyote au kitu chochote, lakini nimepata kuundwa darasa kwamba inawakilisha meza, na kwa sababu nimekuwa kupanuliwa darasa hili ORM, Mimi kupata rundo la vitu kwa ajili ya bure, hivyo kwa sasa huna kuweka kitu chochote zaidi up. Na sasa nini mimi kwenda kufanya ni mimi nina kwenda kujenga mtawala mpya, ambayo mimi nina kwenda kwa jina blog.php, na mimi nina kwenda nakala juu ya Karibu mtawala hivyo mimi si kuwa na rudia kuandika baadhi ya mambo, na sasa mimi na kubadili jina hili. Sasa nini mimi kwenda kufanya mtihani ili kuhakikisha kila kitu ni kufanya kazi nje, Mimi nina kwenda kunyakua kwanza baada ya kutoka orodha ya yangu na magazeti mwili wa baada ya juu screen. Kufanya hivyo nini mimi kwenda kufanya kwanza ni mimi nina kwenda kuokoa posts kwa kutofautiana hivyo nini tunakwenda kufanya ni - katika Kohana nini kufanya ni kunyakua baada ya kitu ni aina ya mbaya, lakini una kufanya hii kitu inayoitwa ORM :: kiwanda, na kisha kupita katika jina la mfano unataka, na kuirudisha ORM kitu kwamba inawakilisha mfano kwamba. Na kisha, kama nilivyosema, wakati sisi kupanua ORM kitu, sisi kupata njia haya yote kwa ajili ya bure, hivyo kwa mfano, sisi kupata kazi hii mpya iitwayo "kupata kila," ambayo moja kwa moja anarudi kila baada ya moja katika database, ambayo ni pretty rahisi. Na sasa katika mwili mimi nina kwenda na kurudi baada ya kwanza na kurudi mwili wake. Na bila shaka, mimi haja ya kuunda post, hivyo hebu kuingiza baada ya mwezi. Mimi itabidi kusema, "Brandon, baada ya yangu ya kwanza kabisa." Kutisha. Na sasa sisi ni kwenda kwa blogs na kama wote kazi vizuri - oh, hii ni baadhi ya wengine kitu bubu file ruhusa tena. Kushikilia 1 pili. Ni aina ya ujinga. Kuna sisi kwenda. Sawa. Mimi fasta kuwa tatizo ruhusa. Ni kujaribu kujenga baadhi ya files na baadhi ya kumbukumbu, na ruhusa, tena, walikuwa si vizuri kuweka, hivyo mimi alifanya hivyo hivyo files hao walikuwa writable na kutekelezwa hivyo inaweza kweli kuingia kwa mambo. Sasa ni kunipa mwingine isipokuwa kusema, "darasa ORM si kupatikana," na kwamba kwa sababu I forgot hatua nyingine. Hiyo ni mbaya sana. Katika bootstrap folder faili, kuna modules hizi hapa, ambayo unaweza kuchagua kuwawezesha au afya. Hizi ni rundo la makala mbalimbali ambazo unaweza kuchagua kutumia ndani ya Kohana, ambayo ni aina ya nice. Kwa mfano, wana moduli uthibitisho ambayo unaweza kutumia kwa authenticating watumiaji. Wao na Caching moduli kama unataka kutekeleza aina fulani ya Caching nyuma mwisho kufanya maombi kazi kwa kasi na mengineyo. Tunahitaji kuwawezesha database na ORM moduli, kwa sababu kama nilivyosema, sisi ni kutumia database, ni wazi, na sisi pia unahitaji kuwezesha ORM moduli, kwa sababu tunatarajia kuwa na utendaji ziada, ambayo ni nzuri na kuwa na. All I kufanya ni uncomment wale mistari 2, na sasa kama mimi mahitaji, alinipa kosa jingine. Inasema, "Hatari Model_Post si kupatikana." Sasa hili ni tatizo vizuri kuwa na. Hebu angalia. Kuifanya iwe ya umma. Hapana kushikilia. Oh, dear. Mimi sijui ni kwa nini siyo uwezo wa kupata hiyo. Hiyo ni kweli ya ajabu. Nina darasa haki hii hapa. Nadhani nipate kuwa na - oh. Mimi ni bubu. I forgot kuongeza PHP tag. Hiyo ni kwa nini. Sasa nina kuondoa kwamba 1 mabadiliko mimi tu alifanya. Sawa. Kuna sisi kwenda. Hiyo ilikuwa ni kweli silly. Sikuwa na ufunguzi PHP tag. Lakini kama unaweza kuona, sasa ni kazi vizuri, sawa? Tuna 1 post. Sisi grabbed baada ya kwanza, na sasa sisi kuchapishwa mwili wake. Kubwa. Ajabu. Maswali yoyote hadi sasa? Nope? Maswali yoyote? Sawa, hivyo sisi tu kuundwa baada ya mfano, ya msingi sana, na sisi ni kwenda kuongeza baadhi ya kazi baadaye. Tunaweza kuongeza validations na kuchuja. Validations ni moja ya mambo kuwa mifumo ya kutatua kwa kweli, kwa kweli vizuri, na sidhani nyie na kufanya hivyo kwa ajili CS50 yako pset, lakini kama wewe kufanya maendeleo ya mtandao kwa ajili ya mradi yako ya mwisho, wewe ni uwezekano wa kwenda unataka kufanya aina fulani ya uthibitisho, kama si kuwa na majina tupu user, labda kuwa na password kwa angalau baadhi ya urefu, mambo kama hayo. Na kwa kweli ni mbaya kutekeleza mambo haya na sisi wenyewe, na pretty much kila moja mfumo wa mtandao gani kwa ajili yenu na utapata kufanya hivyo kwa njia safi sana. Na mfano ni wapi huonyesha uthibitisho sheria hizo, kwa sababu ni kuhalalisha kama mfano ni halali au la. Lakini kwa sasa, sisi ni kwenda kuweka kwamba mpaka baadaye, na kwa sasa sisi ni kwenda kufanya kazi sehemu nyingine, na sisi ni kwenda kujaribu na kufanya mtazamo mpya kwamba orodha posts wote. hatua zinazohusika katika kufanya hatua mpya kwa orodha nafasi zote ni kwa kunyakua orodha ya nafasi zote na kisha kutoa orodha ya posts wote kwa njia ya maoni. Haki hapa, kwa bahati nzuri kutosha, sisi tayari grabbed nafasi zote kutumia line hii ya kwanza, kupata kazi wote, na sasa nini tunakwenda kufanya ni mbali Nimekuwa moja kwa moja kuweka mwili wa majibu kwa kupita kamba, lakini sasa nataka kutumia maoni, na tofauti kati ya mtazamo na kufanya tu hii ni kwa lengo la naweza kuwa na nzuri, kubwa HTML template, na nini siwezi kufanya ni kupita vigezo fulani na kisha kuwa na mtazamo moja kwa moja na idadi ya template yake kwa kutumia vigezo hizo. Nini la kufanya ni mimi itabidi kujenga mtazamo mpya, na mimi itabidi jina maoni kitu kama "blog / index," na mimi nina kwenda kimsingi kumfunga hii - oh, je, Mimi kuandika? Ubongo wangu ni mahali pengine. Mimi naenda kumfunga posts kutofautiana kwa maoni, hivyo njia kwamba maoni wanapata hii variable post. Na hivyo sasa mimi haja ya kuunda mtazamo huu, hivyo hapa tuna folder hii inayoitwa "Views," na kwanza, mimi nina kwenda kujenga folder mpya chini ya kwamba inayoitwa "Blog." Hii ni nzuri. Kwa njia hiyo tunaweza kuwa na nzuri uongozi wa kwa maoni yetu. Na kisha mimi nina kwenda kuunda faili mwingine huko inayoitwa "index.php." Kutisha. Kwa kweli, hebu kuwa wote wawili hapa. Kufanya mtazamo file pengine ni sehemu rahisi ya yote haya, na haya ni pengine mambo uko tayari familiar with. Sisi ni kwenda kufanya kitu kweli rahisi, kuanza kusema, "orodha yangu ya posts blog." Kisha tunaweza kwenda kwa, na tunaweza iterate kupitia posts safu, kunyakua kila baada ya moja na kusema kitu kama - labda kuongeza line na kisha magazeti nje mwandishi na mwili. Kwamba mantiki hadi sasa? Na hebu angalia kama ni kazi. Hakuna kilichotokea. Nashangaa kwa nini. Oh, mimi amekosa hatua 1. Sana silly yangu. Mimi umba maoni, lakini sikuweza kuweka maoni kama majibu, hivyo kuwa na kufanya kitu 1 zaidi. Una kufanya "hii mwili kukabiliana" na kuweka kuwa ni maoni. Kuna sisi kwenda. Tuna viongozi wetu, na kisha tuna post, na tu kwa ajili ya mateke, hebu kuingiza baada ya mwingine ili tuweze kuona orodha. Na kuingiza posts hizi 2, na sasa kama mimi mahitaji ukurasa, tunaona nyadhifa zote hizi hapa. Je, hiyo mantiki hadi sasa? Yeah, swali? Oh, okay. Kama unaweza kuona, tumekuwa na uwezo wa kutenganisha codes haya yote nje katika sehemu mbalimbali, na kisha unaweza kuona ni nyingi za wazi kwa lengo la code. Faili hili hapa kwamba inawakilisha maoni, ni tu wasiwasi kuhusu anayewakilisha data, kwa kuonyesha data. Ni anapata kupita baadhi ya aina ya data, na yote ni gani ni kuonyesha tu ni wewe. Katika maeneo mengine yote ya kanuni yako, huwezi kuwa na wasiwasi kuhusu yoyote ya kwamba, na vile vile, mtazamo code yako haina kuwa na wasiwasi chochote kuhusu jinsi ya kupata database na kadhalika na kadhalika, ambayo ni mzuri na hufanya code yako mengi maintainable zaidi. Kama nilivyosema, maoni, wao ni nguvu katika ni 1 file, lakini itakuwa kuzalisha maoni tofauti msingi vigezo kweli kupita katika, na zaidi ya hapo, kuna mengi ya kazi mbalimbali msaidizi kwamba unaweza kutumia kukusaidia kuandika code yako kwa kasi, ambayo mimi nitakuonyesha katika haki ya pili. Yeah. [Mwanafunzi] Hivyo $ 0 ni mtawala, sawa? Jambo la pili. swali ni ni $ 0 mtawala? $ 0 ni variable mimi kuundwa haki hapa. Mimi umba maoni ya kwanza. Mimi kwa ajili kwa baadhi ya kutofautiana. Kisha mimi kupita katika kazi hii, kuweka kama mwili ya majibu. Je, hiyo mantiki? [Mwanafunzi] Basi ni mtazamo :: kiwanda, ni maoni kama darasa au maktaba [inaudible] kiwanda kazi? swali ni kuhusu kazi maoni :: kiwanda, na kimsingi hii ni baadhi ya kitu-oriented zaidi programu kimsingi. View ni mtazamo darasa, na ina njia inayoitwa "Kiwanda," na hiyo ndiyo njia kunyakua kitu ambacho jina lake "blog / index." Na kwamba baadhi ya zaidi kitu-oriented programu mambo kwamba mimi si kwenda ndani ya hapa sana. Sasa ni wazi, tunataka kujenga posts mpya, lakini hatutaki kuwa na kufanya hivyo kwa njia database, hivyo sisi ni kwenda kujenga hatua mpya kwa ajili ya kujenga baada ya mwezi, na kuna mengi ya mambo sisi kufanya. Jambo la kwanza tunakwenda kufanya - hebu kukabiliana na mambo haya moja kwa moja. Jambo la kwanza tutaweza kufanya ni sisi tumepewa kujenga aina kwa ajili ya kuingiza post mpya, lakini nina pia kwenda kuongeza hatua mpya ya kwanza, hivyo kuongeza hatua mpya ni rahisi tu kama kama kuongeza kazi mpya na mtawala yako, na kwa sasa mimi nina kwenda kufanya kitu ya msingi sana, kunyakua tu mtazamo huu na baada yake, tu kuonyesha ni kwa ajili yenu. Na kisha sasa mimi naenda kujenga mpya maoni file, na mimi nina kwenda kuanza kuandika baadhi ya mambo. Nini ni nzuri juu ya Kohana ni kwamba wao kutoa mengi ya kazi mbalimbali msaidizi kwa wewe kuandika maoni code kwa urahisi zaidi, na 1 ya kazi hizo msaidizi au modules msaidizi ni karibu kuandika fomu. Kwa ajili ya kuandika fomu, mimi si kweli kuwa moja kwa moja kuandika HTML yoyote mwenyewe. You guys wameandika aina HTML. Unajua jinsi gani inaweza kuwa kweli, kweli chungu na mbaya kuandika fomu. Siyo furaha, hivyo bahati nzuri, tunaweza kimsingi kuandika fomu kwa kutumia Kohana ya kuunda kazi msaidizi wa kufanya hivyo kwa ajili yetu. Tunakwenda kimsingi wana mashamba kwa kila jambo moja sisi, hivyo moja kwa waandishi na moja kwa ajili ya miili. Tunakwenda na studio, na tunakwenda na pembejeo. Na kisha hatimaye, tunakwenda na kuwasilisha. Na kama unaweza kuona, hii ni safi sana kuandika kuliko ile HTML messy wote, ambayo ni aina ya nice. Kwa kweli, kuna mifumo nyingine mtandao kuwa na hata safi zaidi ya kwamba, lakini angalau hii ni bora kuliko kuandika HTML mwenyewe. Ajabu, hivyo hii ni nini kuona. Hiyo ni aina ya messy, hivyo mimi nina kwenda kuongeza line mapumziko huko kufanya ili kuangalia kidogo nzuri. Naam, bila shaka, bado inaonekana kweli, kweli mbaya, lakini sisi ni tu kulenga juu ya utendaji kwa sasa na si juu ya aesthetics. Hakuna muda wa kufanya kila kitu. Na kama unaweza kuona, kwa sasa tuna aina super msingi, ambayo ni aina ya nice. Kanuni hii napenda kusema ni safi kuliko kujaribu kuandika HTML kuunda mwenyewe, hivyo kwamba ni nzuri. Nini hapo? Sasa tunahitaji kufanya mambo kwa vitendo. Kwa kawaida wakati wa kuandika aina HTML, mniambie ambako kwenda kuwasilisha fomu kwa. By default katika mfumo wa mtandao zaidi, ni elekeza kwa halisi URL huo, hivyo kitu ni, kama kutuma kupata ombi / blog / mpya, ni lazima kuonyesha wewe fomu, lakini kama wewe kutuma maombi ya posta / blog / mpya na data, ni lazima kweli kujaribu kuokoa baada ya kuwa na kufanya kitu kwa hayo. Nini sisi ni kwenda kufanya ni kimsingi wote tuna kufanya kuangalia kama ni ombi posta au kupata ombi ni kuangalia nini ni vigezo baada unaweza kuweka. Na kama baada ya kutofautiana ni kuweka, basi sisi ni kwenda kujaribu na kujenga baada ya mwezi. Tena, sisi tu kufanya hivyo, na kwamba inajenga baada ya mwezi, na sisi ni literally kwenda kuweka mashamba yake kama hii, na kisha tunakwenda kuokoa yake. Na kisha mimi nina kwenda kuelekeza kwa ukurasa index ili waweze kuona orodha ya posts tena. Hebu jaribu hilo. Mimi itabidi kusema, "Brandon," na kisha kuwasilisha post, na kama yote inakwenda vizuri, kama unaweza kuona, itaelekezwa mimi ukurasa index, na kama mimi kitabu chini, tuna baada wapya kuingizwa. Yay! Yeah, swali. [Mwanafunzi] Je, kama wewe iliingia halisi kitu kimoja aliingia kabla? Je, ni kuangalia kuhakikisha kuwa si kurudiwa kwa kuwasilisha sawa? Kuwa default, hapana, kwa sababu kwa makosa - sorry, swali ni kama wewe kuingia katika exact data katika fomu na kuwasilisha kwamba, itakuwa ni kuruhusu kuingiza kitu duplicate, a kurudia kuingia, kimsingi? Hivi sasa, ndiyo, ni itawawezesha kufanya hivyo, kwa sababu katika database ni kikamilifu halali na safu duplicate kabisa, lakini kama ni wasiwasi, basi unaweza kuongeza validations, kwa mfano, kuhakikisha kwamba kama hii ni sawa kama kitu ambacho tayari ipo, kisha kusema kwamba ni kitu batili, na kisha unaweza hata kutaja ujumbe wako makosa na kusema, "batili kwa sababu hili tayari lipo" au kitu kama hicho. Lakini katika kesi hii, mimi nilikuwa tu kujenga kitu duplicate. Sasa hebu jaribu na kuongeza baadhi ya validations. tatizo na hii sasa hivi ni kwamba Mimi naweza literally kuwasilisha baada tupu kabisa. Siwezi bonyeza kifungo haki hii sasa, na kuna sisi kwenda. Unaweza si kweli kuona hivyo, lakini line hii ya ziada hapa inaonyesha kwamba mimi literally na baada ya mwezi. Ni tu ana mwandishi tupu na mwili tupu, na hatutaki kuruhusu watu kufanya hivyo. Hii ni pale ambapo uthibitisho anakuja in Naweza kwenda mfano wangu kitu, na sasa naweza kuongeza kazi mpya kwamba unasema nini uthibitisho sheria ni lazima kuongeza kwa mtindo huu kuhakikisha kwamba ni halali au kutaja ni nini maana ya kuwa baada ya halali? Na mimi nataka kusema ni tu baada ya halali kama wote wawili mwandishi na mwili si tupu, na hii ni jinsi ya kufanya hivyo katika Kohana. Kujenga kazi mpya iitwayo "Kanuni," na kisha wewe kimsingi kurudi safu associative amefafanua kuwa uthibitisho sheria kwa ajili ya hii kitu. Sisi ni kwenda na kurudi safu, na kisha nini tunakwenda kufanya ni kusema "mwandishi," unaendelea na safu, ambayo inakwenda safu mwingine aitwaye "si tupu." Na kisha mimi nina kwenda kusema "mwili." Okay, na syntax kwa hii na muundo kwa hii inaweza kuangalia mbaya kidogo na ngumu kidogo. Kama unaweza kusoma nyaraka, ni pretty moja kwa moja kwa kufikiri, Lakini kimsingi hii ni nini unahitaji kufanya kutaja baadhi ya sheria uthibitisho, na kuna mengi ya sheria mbalimbali kwamba Kohana nitakupa kwa ajili ya bure, kama unaweza kuongeza sheria kwa kusema ni lazima angalau urefu huu. Labda ina kuwa nambari. Labda ina kuwa alpha nambari. Labda ina kuwa saa zaidi urefu huu, kadhalika na kadhalika. Kuna mengi ya sheria mbalimbali ambayo Kohana hutoa kwa ajili yenu, na unaweza kwenda kwenye tovuti yao, kuangalia nyaraka, na unaweza kuona vitu vyote mbalimbali ambazo unaweza kufanya. Lakini hii yote ni mimi kufanya, na sasa hebu angalia nini kinatokea kama mimi kuwasilisha baada tupu. Nini kinaendelea kutokea? Oh, no, mimi kupata kosa. Mimi kupata uthibitisho ubaguzi. Naam, ni nzuri. Ni aliniambia kuwa mfano wangu ni batili, lakini mimi sitaki kuonyesha ubaguzi kwa watumiaji yangu wakati wao kujaribu kuwasilisha kitu batili, sawa? Mimi nataka kuwapa aina fulani ya ujumbe friendlier makosa wakati kitu fulani kitaenda vibaya. Nini tunakwenda kufanya ni tunakwenda kufuta kila kitu katika kujaribu kupata kitanzi. Kweli, nadhani hii pia ni kitu una si kujifunza lakini katika CS50, kwa sababu C, lugha ya programu C, hana tofauti, lakini karibu kila moja lugha nyingine ina tofauti, hivyo kweli, kwa kweli kwa ufupi, isipokuwa ni kitu ambacho kipande ya maadili ya unaweza kutupa ubaguzi wakati kitu fulani kitaenda vibaya, lakini kisha labda baadhi sehemu nyingine ya maadili ya juu juu unaweza kupata kwamba ubaguzi na kufanya kitu kwa hayo. Kwa mfano, katika kesi hii, kipande ya kificho kwamba ni kujaribu kuokoa mfano, ni linatambulisha mfano, na kama anasema, "Sawa, mtindo huu ni batili," ni kwenda kutupa ubaguzi, na hii ni aina ya sawa na katika C unaweza kurudi -1 au kitu kama hicho. Na kisha kwa ajili yangu, kazi hii, kanuni yangu katika ngazi ya juu, naweza kujaribu na kukamata kwamba ubaguzi na kimsingi kusema, "Sawa, kama mimi kupata ubaguzi, je, Mimi naenda kufanya nini?" Au mimi naweza kuchagua kukamata kwamba ubaguzi na basi mtu juu juu kupata ubaguzi, au kama hakuna upatikanaji wa samaki, kisha mpango mzima shambulio na anasema, "Kitu potoka, na sikuweza kushughulikia hilo." Lakini nini cha kufanya ni wewe wrap kipande wa kanuni katika kuzuia kujaribu, na kisha pia kuongeza kitu kinachoitwa kuzuia samaki, ambayo ni aina ya kificho kwamba kujaribu na kukamata isipokuwa ambayo yanaweza kutokea. Na hivyo kama mimi kupata hii isipokuwa hasa au invalidation ubaguzi, kisha nini mimi kwenda kufanya ni Mimi nina kwenda kuweka makosa - nadhani hiyo ni jinsi mimi kufanya hivyo - na mimi nina kwenda kuweka makosa kwa baadhi kitu. Na kisha nini mimi kwenda kufanya ni kama ni hits ubaguzi hii, si kwenda kwa kuelekeza, na kama haina kuelekeza, itakuja kuja nje ya kama blog na kugonga blog hii / mpya, ambayo ni unataka nataka kufanya. Kama kuna upotofu, kisha Mimi nataka kwenda nyuma fomu na kuonyesha makosa hayo. Sasa nini nataka kufanya ni nataka kupita katika makosa hayo kwa mtazamo. Okay, nadhani kuwa na mtazamo sahihi hapa, na kimsingi mimi wanataka kuonyesha makosa hayo kama zipo. Kabla ya kuandika HTML kwa hiyo, mimi nina kwenda kweli haraka kuonyesha nini muundo wa makosa hii inaonekana kutofautiana kama, na hii ni mazoezi mazuri kwa ujumla. mara nyingi kupata kitu nyuma kutoka kwenye njia fulani, baadhi ya kazi katika mfumo wa mtandao, na hawajui nini variable inaonekana kama, hivyo hawajui jinsi ya kufanya kazi nayo. Mimi naenda kutumia njia magazeti r kimsingi magazeti nje. Na kama unaweza kuona, anasema mimi ni safu msaidizi, na una muhimu, mwandishi, pointi kwa kamba hii, mwandishi lazima kuwa tupu, na mwingine muhimu, mwili, pointi kwa kamba mwingine, mwili lazima kuwa tupu. Mimi kama, okay, cool. Basi naweza iterate kupitia safu na magazeti nje ya kila ujumbe mmoja. Ni kimsingi kama safu associative pamoja na kundi la ujumbe. Nini mimi kwenda kufanya ni "ikiwa makosa," na mimi nina kwenda kuunda orodha unordered, na mimi nina kwenda iterate kupitia makosa yote. Na hii, na sasa mimi nina kwenda kujaribu kuwasilisha hii tena, na hebu angalia nini sisi kupata. Sasa sisi kupata hii orodha nzuri ya makosa, na hii ni bado pretty mbaya, lakini hii ni wazi inaweza mpangilio kuangalia nzuri, lakini wazo la msingi ni katika mistari michache ya kificho, tulikuwa na uwezo wa kuhalalisha mtindo wetu, kuhakikisha kwamba baadhi ya mashamba walikuwa si tupu, na kama kitu potoka, kisha kurudi aina fulani ya ujumbe wa makosa Mimi naweza kisha kuwasilisha nyuma kwa mtumiaji. Unaweza pia Customize uthibitisho yako ili uweze kweli kuwa ujumbe wa makosa kwamba ni maalum zaidi kwa maombi yako au kitu kama hicho. Yote ni kwa ujumla customizable. Kwa bahati mbaya, sisi ni mbio nje ya muda, hivyo mimi nina kwenda kuwa na kukatwa kuishi coding kikao hapa. Kuna kundi la makala nyingine kwamba mimi nataka kuonyesha kwa ajili yenu katika mfano huu. Kwa mfano, unaweza kuongeza templates kwenye tovuti yako, hivyo labda kuna aina fulani ya HTML kificho kwamba unataka kuomba kwa kila ukurasa moja katika tovuti yako, na badala ya pasting kwamba katika kila moja mtazamo file una, ambayo ni wazi itakuwa mila mbaya, unaweza kimsingi kufafanua templates haya, na kisha katika mtawala wako kusema, "Sawa, mimi nina kutumia template hii." "Je, maoni yangu wote kutumia template hii." Na jambo moja la mwisho nataka kuonyesha na wewe pia kwamba hatuna wakati kwa ni msalaba-site scripting, na kimsingi nadhani guys pengine kuonekana katika CS50 - Nadhani David Malan pengine walizungumzia jinsi unaweza kawaida kuingiza JavaScript kificho katika - na wewe aliyesema kuhusu hili? Labda? Labda si? Lakini mara nyingi unaweza kuingiza malicious JavaScript code katika orodha ya mtu, na kama hawana kuepuka hayo vizuri, kisha wakati wao sasa data kwamba nyuma ya user, basi inaweza kuendesha aina fulani ya random JavaScript code hawataki kutokea, na mimi alikuwa anaenda kuonyesha jinsi wewe d kufanya hivyo ndani ya Kohana. Ni kweli kweli, kweli ni rahisi. Mimi naweza kufanya hivyo hivi sasa katika sekunde 2 literally. Wote una kufanya ni kimsingi kufuta mambo haya katika hii kitu inayoitwa vyombo HTML. Na ambayo moja kwa moja kutoroka wahusika wote vizuri na kuhakikisha hawapati tatizo hili. [Mwanafunzi] Wewe yameandikwa mtihani wa kwanza kimakosa. [Brandon Liu] Oh, oops. Okay, kwamba ni yote Mimi nilikuwa na kushiriki na wewe kwa leo. Slides hizi ni kwenda kuwa posted, lakini haya ni kwa ujumla rasilimali tu unapaswa kweli wanahitaji kupata ilianza na Kohana. Unaweza kwenda kwenye tovuti. Wao na user mwongozo, na wao pia na API Explorer. Tunaweza kuchunguza yote kazi mbalimbali na kazi msaidizi wao na kwa ajili yenu. Wao kwa ujumla na taarifa za kutosha juu ya tovuti kwamba unaweza kutumia kuanza na kupata kwenda kwa Kohana. Kuna tutorials kwamba wengi, nadhani, kwa Kohana, nje ya waliyo kuwa kwenye tovuti hapa, hivyo hii ni pengine bet wako bora. Lakini kama unataka kwenda na mfumo wa mtandao na hawataki kuwa na kuchukua lugha mpya, na unataka kitu ambacho ni kiasi lightweight na ina rahisi kujifunza Curve, Napenda dhahiri kupendekeza Kohana. Kwamba pengine sadaka bora kwa ajili hiyo. kitu funny, ingawa, ni kama tungetumia Ruby juu ya reli, tunaweza kuwa na kuigwa nini sisi tu alifanya na pengine zaidi katika chini ya dakika 3. No utani, lakini kujifunza Ruby juu ya reli inachukua muda mrefu sana kuliko itachukua kujifunza Kohana. Ni kimsingi uchaguzi wako juu ya nini unataka kuchagua kujifunza, lakini kama unataka kuamka na kukimbia haraka, Kohana ni dhahiri uchaguzi nzuri sana. Maswali yoyote mwisho kabla ya sisi mwisho? Ndiyo. [Mwanafunzi] jinsi gani sisi kuunganisha kwamba katika mfumo wa CSS kama ungekuwa kutumia wakati walikuwa kuwafundisha? swali ni jinsi gani sisi kuunganisha kwamba pamoja na mfumo wa CSS? Nini tunataka pengine kufanya ni sisi pengine ni pamoja na folder mpya ambapo tunataka dampo yetu mafaili yote CSS, na kisha tunatarajia pia kuongeza template mpya. Katika template tunatarajia ni pamoja na files wale CSS ili kuhakikisha kuwa ni inatazamwa juu ya kila ukurasa moja, na kisha wakati wewe kweli ni kuandika HTML, wewe tu kuongeza madarasa sahihi na whatnot, na kwa mfano, wakati unatumia kitu kama aina msaidizi kazi, unaweza kuongeza vigezo zaidi baadaye kwa bayana nini madarasa unataka kuwa zinatokana na mambo mbalimbali ili waweze style vizuri, na kwamba kimsingi jinsi gani kwenda. Maswali mengine yoyote? Kutisha. Asante kwa muda wako, na kuwashukuru kwa kuja. Mimi si kwenda kuongeza sana kiasi kingine, lakini 1 kweli haraka kitu ni hatuna kiungo kwa aina. Kweli bubu. Hebu kuongeza - kwa kweli katika mtazamo, blog, index, hebu kweli haraka kuongeza kiungo kwamba huenda ukurasa mpya, ukurasa ambapo tunaweza kuingiza baada ya mwezi. Tunakwenda kufanya hivyo. Nini ni nzuri ni kuna kundi zima la HTML msaidizi kazi ambayo kufanya mambo mbalimbali kwa ajili yenu, hivyo tayari aliona vyombo kazi hapa, lakini pia kuwa kazi kuitwa "nanga," ambayo unaweza aina katika blog / mpya na kusema, "Post blog mpya." Na itakuwa kujenga kwamba kiungo kwa ajili yenu, na hii inaonekana kweli yasiyo na maana ya kufanya, lakini hii ni nzuri, kwa sababu kudhani kwamba wewe ni kusonga mbele tovuti yako kutoka 1 uwanja mwingine. Na kama wewe tu aliandika URL mwenyewe, basi ingekuwa kuwa na mabadiliko ya URL zote. Au labda wewe wakiongozwa kutoka 1 subfolder kwa subfolder mwingine. Ungependa kuwa na mabadiliko ya wale URLs yote wewe mwenyewe, na kwamba hakuna furaha. Unaweza kutumia nanga haki hii hapa, na unaweza kubadilisha uwanja au subfolder kiambishi awali katika faili Configuration mara moja, na kisha itakuwa kuomba kwamba kila mahali, na hii ni mara ya pili, mfano mkubwa wa wala kurudia mwenyewe, kukausha code wako nje. Popote wewe ni kurudia mwenyewe, jaribu na kutafuta katika baadhi ya aina ya faili Configuration au kazi mbalimbali na kuwa ni kushughulikia kwa ajili yenu. Na jambo la mwisho sana kwamba nilitaka kuonyesha mara tuseme tuko nyuma katika post hii, na mimi alikuwa linajumuisha baadhi insha kweli kwa muda mrefu, lakini I forgot ni pamoja na mwandishi yangu. Sasa wakati mimi bonyeza "Kuwasilisha Post," I just kupoteza kila kitu. Hapana! Kweli kusikitisha. Hivyo ni jinsi gani ya kukabiliana na kwamba? Hii ni nini cha kufanya. Tunachofanya ni hapa kwa ajili ya haya pembejeo na eneo Nakala kazi, kama sisi ni pamoja na parameter ya pili, basi thamani ya kwamba parameter pili ni kwenda kuwa kile shamba ni kwenda kuwa awali wakazi na. Nini tunaweza kufanya ni katika blog yetu mtawala, tunaweza kumfunga mwingine kutofautiana. Kuiita "maadili" labda. Na kupita katika post safu, literally. Hiyo ina maana kwamba kama uthibitisho wameshindwa, kupita kwangu baada ya safu kwamba mimi in kutoka ombi mwisho, na kwa njia hiyo naweza kutumia maadili ya kutoka kuwasilisha yangu ya mwisho kuongeza idadi ya watu mashamba. Sasa naweza kufanya kitu kama maadili mwandishi na maadili ya mwili, na kwa njia hiyo sasa kama mimi kufanya baadhi ya mambo random na bonyeza "Kuwasilisha Post," basi anakaa huko. Lakini sisi ni kwenda kukimbia katika tatizo jingine. Kwamba kazi, lakini kama mimi kwenda kwenye ukurasa wa mara ya kwanza, itakuja ajali, na kwamba kwa sababu mara ya kwanza sisi kwenda kwenye ukurasa wa, hii variable baada haijawahi inavyoelezwa bado. Ni null. Ni haipo. Na nini tunataka kusema ni kama ufunguo hili lipo, kisha kurudi thamani ya safu hii, lakini kama ufunguo haipo, kisha kurudi kamba tupu. Hiyo ni utendaji tunataka hapa. Tunataka kuangalia kama ufunguo ipo kabla ya kujaribu kupata safu, na bahati nzuri ya kutosha, Kohana pia inatupa msaidizi kazi kwa ajili hiyo. Wana Suite hii yote ya kazi chini ya jina ARR, short kwa safu, na wana 1 kazi kuitwa "kupata," na unaweza kupita katika safu, na unaweza kupita katika jina la muhimu. Basi kimsingi nini kufanya ni kujaribu kupata ufunguo lakini kama muhimu haipo katika safu, basi itakuwa kurudi tupu, au sisi pia Unaweza kutaja default, naamini ambayo ni nzuri. Sasa kama sisi kufanya kitu kimoja tena, kisha unaweza kuona sasa ni kazi mara ya kwanza duniani, na tena, kama sisi aina katika baadhi ya mambo random na kujaribu na kuwasilisha, basi anakaa huko. Na mimi nadhani unaweza pia kuonyesha jinsi ya kuongeza template kweli haraka. Nini tunaweza kufanya kwanza ni tunaweza kuongeza mtazamo mpya iitwayo "template.php" ndani ya Maoni folder, na nini mimi kwenda kufanya ni mimi nina kwenda magazeti nje kitu kinachoitwa "maudhui," ambayo ni kwenda kuwa maudhui yangu kuu. Na labda chini sana mimi nina kwenda kuongeza, kusema, hati miliki. [Inaudible mwanafunzi swali] [Brandon Liu] Labda hii ni template super msingi nataka kutumia. Mimi nataka kuwa na folder na hati miliki yangu juu ya kila ukurasa moja, na sasa nini mimi kwenda kufanya ndani ya mtawala wangu ni sasa badala ya kusema, "hadi Mdhibiti" Mimi nina kwenda kusema, "hadi Controller_Template," na sasa badala ya kusema, "Hatua ya mwili ni sawa na mtazamo huu," Mimi nina kwenda kusema, "hii maudhui ya template ni -" na nadhani - mimi kuweka ishara sawa? Mimi kusahau. Yeah, Nilidhani hivyo. Na sasa mimi kuweka kwamba maudhui kutofautiana kwa sawa maoni. Mimi siwezi kufanya sawa hapa. Na sasa kama mimi mahitaji, unaweza kuona sasa hati miliki hii ni aliongeza huko, na tu kufanya baadhi baada ya random, na kisha, tena, unapaswa kuona kwamba hati miliki ni chini kabisa ya ukurasa. Mkuu. Hayo ni yote nilitaka kuonyesha nyie. [Applause] Maswali yoyote? [CS50.TV]