[Seminar] [Kohana: A Yüngül PHP Framework] [Brandon Liu] [Harvard Universiteti] [Bu CS50 edir.] [CS50.TV] Hi everyone. My name Brandon edir. Mən kollec bunu informatika burada kiçik, və bu gün biz haqqında danışmaq olacaq Bir PHP web inkişaf çərçivəsində olan Kohana. Bu gün canlı kodlaşdırma seminar olacaq, mən əsasən, Kohana nə izah 5-10 dəqiqə sərf etmək gedirəm və sonra mən sözün bir super sadə blog qurmaq gedirəm burada sanki sıfırdan sizin üçün. Biz Kohana veb kodu download olacaq və biz bir blog bina başlamaq olacaq və ümid çox ibrətamiz olacaq bəlkə bəlkə görmək lazımdır, çünki Mən bəzi səhvlər etmək lazımdır, və siz mənə onlardan bərpa görürsünüz, Mən bu blog vasitəsilə qurmaq kimi ya mənim fikir prosesi görürsünüz, və eyni zamanda, siz də çərçivəsində özü ilə tanış almaq lazımdır. Ümid edirəm ki, bir çox ibrətamiz həyata olacaq. Birincisi, bir çərçivə dəqiq nə? Siz indiyə qədər CS50 alaraq etdik, əgər həqiqətən, heç bir işləmişdir deyil çərçivələr hələ, və şey bu. Siz yəqin ki, artıq 1 web inkişaf pset etdik və siz web qurmaq və tikinti saytları saxlamaq üçün davam deyirlər. Siz bir neçə şeyi qeyd etmək başlamaq lazımdır. Siz görəcəksiniz ilk şey yəqin ki, eyni şeyi edirik ki, yenidən üzərində hər zaman, istifadəçi input data təmizləmə kimi şeylər, müəyyən bir şəkildə faylları təşkil kimi şeylər. Siz də yəqin ki, görəcəksiniz başqa bir şey ki, sizin kodu çox, çox messy olmaq başlaya bilər, və messy onu tərk və yalnız bir çox ağır vaxt saxlanılması ola bilər, və ya sizin kodu strukturu başlamaq və modul edilməsi bilər daha maintainable etmək üçün müəyyən yollarla. Web çərçivələr əsasən daxil gəldiyi Bu Web sites bir çox inşa etmiş bu insanlar, dedilər, "Biz, bunun bir web qurmaq hər bir zaman redo ehtiyac yoxdur." "Niyə biz yalnız sizin üçün bütün bu şeyi bir paketi yoxdur hər bir zaman bir web qurmaq istəyirsiniz? " Və belə ki, yeni bir web etmək zaman, yalnız məhz bu xüsusi veb haqqında nə diqqət. Siz bütün müxtəlif konfiqurasiya təkrar etmək lazım deyil və kodlar ayrılması və yeniden kodu Əgər tez-tez web edirik zaman nə var ki. Ideyası çərçivə daha yüksək səviyyəli kod yazmaq üçün imkan verir ki, aşağı səviyyəli detalları barədə narahat olmadan. A aşağı səviyyədə ətraflı kimi bir şey ola bilər istifadəçi input data təmizlənməsi ilə məşğul. Ki, siz həqiqətən narahat ehtiyac yoxdur ki, bir şey var. Siz web ayrılması haqqında əslində nə yönəlməlidir. Bu boilerplate kodu bir çox aradan qaldırır. Bu layihə üçün bir memarlıq edir. Ən məşhur bir Model-View-Controller, olardı Mən ikinci haqqında danışmaq üçün gedirəm olan. Və bir çox dəfə bu çərçivələr prosedurlar bir sıra təcəssüm, istifadə etmək üçün qaydalar və ən yaxşı təcrübələr ki, siz web çərçivəsində qəbul edərkən Siz müəyyən bir şəkildə kodunuzu yazın və ümumiyyətlə bir prinsiplərinin set razılaşdırılmış oldu ümumiyyətlə qəbul ki, ictimaiyyət tərəfindən kodu yazılı yaxşı bir yoldur. Bu, daha lazımlı, kodu daha maintainable edir belə və s. Və nəhayət, mən istədiyiniz şey çərçivəsində haqqında qeyd etmək kitabxanaların qarşı nəzarət inversiya bu fikir və şey bu. Kitabxana və çərçivə arasında fərq olduğunu bir kitabxana ilə Siz hələ də əsas proqram yazılı, və sort kitabxana invoking edirik və sizin üçün bir şey etmək üçün kitabxana çağırırdı. Kitabxana və çərçivə arasında fərq çərçivə nəzarət ilə başlayır ki, və sizin kodu çağırır, belə ki, kimi hesab edə bilər - bir çərçivə deyirlər niyə bu - çərçivə sizin kodu bu çərçivə və strukturu təmin edir, və deşik doldurmaq, və bu ikinci daha aydın olacaq Gördüyünüz zaman mənə çərçivəsində kontekstində kodu yazmaq başlayın. Mən boşluqların doldurulması edirəm ki, görəcəksiniz, və çərçivə cür, bütün hərəkət ədəd nəzarət edir və mən doğru yerlərdə parçaları qoymaq lazımdır. Bu gün biz Kohana haqqında danışmaq olacaq, bir çox PHP çərçivəsində biridir. , Web çərçivələr var, və olanları faktiki olaraq hər bir dildə var Kohana arguably, çünki mən Kohana aldığınız alıram və ümumiyyətlə almaq üçün asan PHP çərçivəsində kimi tanınır. Bu ən yüngül var. Çox, daha çox xüsusiyyətləri ilə gəlib ki, orada digər olanlar var lakin onlar almaq üçün daha çətin olur. Və nəhayət, Kohana MVC memarlıq istifadə edir. Bu biz sözün bir layihə inşa edə bilərsiniz ki, kifayət qədər yüngül burada gözlerinizin qarşısında, və olduqca çox bilərsiniz olduqca asanlıqla boyunca edin. Bu MVC memarlıq nədir? Bu, Model-View-Controller dayanır siz kodu haqqında düşünmək əgər və bəlkə siz bu günə qədər yazılı olduğunuz web inkişaf psets bəzi yazılı başlamaq zaman adətən bu bəzi görmək mümkün ola bilər, lakin daha mürəkkəb web tətbiqi, bu 3 seqmentlər arasında bölgüsü daha çox aydın olur. I, sort bir yığın kimi burada MVC ortaya qoydu və tez-tez insanların web inkişaf blokları haqqında danışmaq eşitmək lazımdır, və bu fikir göstərmək üçün ki, hər təbəqədən, hər bir komponenti həqiqətən yalnız ünsiyyət çalışır 2 digər komponentləri arasında. Biri bir müştəri və ya bir brauzer kimi sizin web çatmaz. Onlar görünüşü kod vasitəsilə proqram ilə qarşılıqlı. Görünüşü kodu nəzarətçi ilə qarşılıqlı. Nəzarətçi, model ilə qarşılıqlı və model SQL verilənlər bazası ilə qarşılıqlı. Siz düzgün kodu yazmaq əgər arasında heç bir hoppana-hoppana var. Bunlar nə etməliyəm? Bu model mahiyyətcə sizin data ilə məşğul olan kod parça. Siz saxlamaq ki, obyektləri ilə, sizin bazası ilə məşğul ki, bir şey, və ya verilənlər bazası həmin obyektlərin alanda, bütün model idarə edir. Bəlkə siz bazasında obyektləri var. Biz ismarıc ilə olan bir model yaratmaq olacaq, belə bir post ona bəzi atributları ola bilər. Siz həmin mesajları saxlanılması və ya ismarışları alanda ətrafında funksiyaları ola bilər və ya belə və s mesajları və filtreleme, ki, model ele ki, bütün kodu var. Nəzarətçi proqram məntiq sort, və müxtəlif şeyi bir çox proqram məntiq bilərsiniz. Farklı bir API söhbət edirsinizsə, Siz proqram məntiqi ilə məşğul olduğunuz ki, ola bilər. Bir neçə müxtəlif modelləri məlumat gətirmək üçün çalışdığınız Əgər və tez-tez nəzarətçi tərəfindən ele ola bilər ki, bir şəkildə onları birləşdirmək lazımdır. Məsələn, Facebook, siz dost kimsə əgər, ki, əlaqələr qurulması sonra bəlkə ki, akt nəzarətçi tərəfindən edilə bilər. Və nəhayət, görünüşü həqiqətən görmək nə yaradan ki, kodu. Bir çox dəfə mən CS50 psets hesab Onlar, həqiqətən, bu 3 şeyi ayırmaq üçün sizə uşaqlar təşviq etmir. Siz yəqin ki, üst bu böyük, uzun fayl lazımdır bəzi SQL sorğu etmək və bəlkə bəzi emal etmək Bu data siz bazasında alınan və sonra altındakı bütün HTML var. Daha çox və daha çox pages yaratmaq kimi və siz tapa bilərsiniz Siz həmçinin bəzi kodu təkrar üçün gedir, və edirik ki, şey fayl həqiqətən böyük və uzun alır və idarə etmək üçün yöndəmsiz olur. MVC yaxşı hesab edir səbəbi səbəblərdən bir sıra üçün. Ilk şey narahatlıqlar ayrılması bir şey adlanır siz zaman ki, fikir - kodu ideal 1 ədəd, 1 şey və həqiqətən də bunu etməlidir və disparate şeyi kodu parçaları birləşdirmək lazımdır. Məsələn, kodu və model kodu keçirmək Onlar, həqiqətən, bağlı yoxdur. Siz onları ayıra bilməz zaman onlar eyni faylları olmalıdır, belə ki, yoxdur belə ki, saxlamaq üçün asan. Digər şey kodu təkrar edir. Siz özünüz həmin SQL sorğu yazılı və ya bunu tapa bilər 1 funksiyası daxil götürülə bilər ki, oxşar queries, ki, fikir modelləri və kontrollerlər arxasında Sizin layihənin müxtəlif yerlərdə yenidən istifadə edə bilərsiniz ki, bir ayrı funksiyası olan. Və nəhayət ki,, kodu qurutma bağlı oldu və ya özünüz təkrar deyil, özünüzü təkrar etməyin. Bu inkişaf çox anlaşıqlı. , Siz özünüz təkrar, çünki özünüz təkrar etmək istəmirəm edə bilərsiniz olduqda,  daha bahalı qorumaq üçün var. 1 şey dəyişmək istəyirsinizsə, siz hər yerdə dəyişdirmək üçün və hatalar gətirib çıxarır və bu, dəhşətli deyil. Bütün hüququ. Bu günə qədər Kohana haqqında hər hansı bir sualınız bütün? Böyük. İndi biz canlı kodlaşdırma sessiya daxil dalış olacaq, və inşallah hər şey yaxşı gedir. Mən əsasən bu web qurmaq üçün gedirəm mənim uzaq server bir və uşaqlar da bilər ki, yolda veb görmək və web daxil olmaq, və ətraf mühit, həmçinin, mənim uzaq maşın daha yaxşı yapılandırılmış əvəzinə OS X Linux çalışan, çünki Biz sözün başlamaq olacaq. KohanaFramework.org. Mən web kodu yükləmək üçün gedirəm. Mən link ünvanı surəti gedirəm, mənim server getmək, download, və mən onu çıxarış gedirəm. [Tələbə] Siz mətn edə bilərsiniz ən böyük nədir? [Brandon Liu] daha yaxşı deyilmi? [Tələbə] [Brandon Liu] Bəli, bu gözəl var ki doable? Mı. Mən bir ZIP faylı yükləyə və Kohana adlı dizine ki unzipped və biz ki, CS50-Kohana adını dəyişmək olacaq və-nin daxil gedək Awesome. Burada müxtəlif faylları bir dəstə görmək. Sizin ən iqnor edə bilər - burada var ki, hər bir fayl yolu ilə getmək niyyətində deyil BİZ beləyik bizim vaxt məhdudiyyətləri, çünki, lakin adətən siz Kohana, siz ilk şey yüklemek zaman Siz kataloq getmək, və əsasən ətraf mühitin testlər və etajer edəcəyik əmin etmək üçün ətraf mühit düzgün Kohana çalıştırmak üçün müəyyən edilir və hər şey doğru əmin olun. Siz çox şey keçmədi bilər, lakin adətən siz həmişə bu 1 problem daxil Bu, bəzi kataloq yazılan deyil ki, şikayət olduğu və çünki bəzi icazələrin var. Mən sizə uşaqlar CS50 fayl izinleri haqqında öyrəndim nə qədər bilmirəm Siz web inkişaf, əgər bu məsələ bir çox axır olacaq. Mən bu yazılabilir etmək gedirəm biz getmək var - və mən mən də var. Okay, indi hər şey keçdi bilərsiniz, və indi install.php fayl adını dəyişmək üçün sizə xəbər verəcəkdir. Mən installed.php üçün install.php fayl hərəkət etmək üçün gedirəm, və indi, Yenile Əgər Bu mənə bir səhv verir və ayıklama girer bu Siz həqiqətən baş neler bilərsiniz yerdir. Şey ismarıcları, Kohana ki, nəzərdə tutur ki, layihə, domen kök qovluğuna edir belə ki, siz demo.brandonkliu.com olmaq gözləyirik. Biz bir alt həqiqətən var ki, demək lazımdır. Bu CS50 Kohana adlı alt var. Şey CS50-Kohana təhrif edir ki, Mən ikinci sizə izah edəcəyik ki, başqa bir şey kimi. Amma gözlənilir ki, bir şey var demək lazımdır. Biz nə olacaq, biz bootstrap.php adlanan bu qovluğa getmək olacaq edir müxtəlif şeyi bir çox qurmaq olduğu konfiqurasiya qovluq deyil. Mən açmaq. Sonra bəlkə mən nə lazımdır ilk şey bir vaxt zonasını dəyişdirmək deyil. Və sonra görək. Aha! Burada. Müxtəlif konfiqurasiya sözləri bir dəstə burada var, lakin mən arıyorum bir, baza URL adlanan bu şey və ismarıcları mən, bu Kohana müəyyən almaq amma, CS50-Kohana ki, dəyişə gedirəm və mən bunu düzeltmek lazımdır. Bəli, böyük. Mənim cari olaraq, o, deyir, iş görmək "Hello World". Ki, haradan gəldi? Necə Hello World almaq idi? Harada dəqiq həqiqətən olduğunu yazdı kodu edir? Ki, anlamaq üçün, marşrutlaşdırma adlanan bu konsepsiya təqdim edəcəyik. Pretty çox bütün web çərçivələr, marşrutlaşdırma adlanan anlayışı var müəyyən bir URL xəritəsi edəcək ki, proqram parçası olan Sizin çərçivəsində kodu müəyyən parça. Bəzi URL və əgər Məsələn, sizin kimi foo.com / blog / bütün bir URL üçün getmək sonra nə çərçivə nə gedir - və ya ən azı nə Kohana nə gedir - Bu, nəzarətçi blog adlı sinif tapmaq olacaq ki, və bütün funksiyası adlı tədbir çalıştırmak olacaq. Mən sinif və funksiyaları haqqında söhbət alıram bilirik, və Mən sizə uşaqlar dərsləri və funksiyaları əhatə deyil bilirik hələ CS50, lakin indi üçün, funksiyaları yalnız bir qrup kimi dərsləri hesab edə bilər, birlikdə funksiyaları qruplaşdırılması yolu. Bu, həqiqətən, siz bilmək lazımdır bütün var. İndi bizim qovluq strukturu baxsaq, proqram qovluq içərisində dərsləri adlı bir qovluq var və digər qovluq Controller və Model deyilir. Siz Controller qovluq içərisində baxsaq, biz xoş gəlmisiniz adlı bir fayl var olduğunu görürük və siz burada görmək Controller xoş gəlmisiniz adlı bir sinif bilər və Fəaliyyət Index adlı bir funksiyası var və nə edir o Hello Dünya üçün cavab orqanı müəyyən edir. Kodu yazılı olunur harada. Digər sual, yaxşı, mən getmədim olunur blah, blah, blah, / salamlayıram / index. Mən burada necə son idi? Bəli, sadəcə, çünki Burada bizim Bootstrap fayl altındakı biz marşrutları müəyyən yerləşir Əgər onlar sizin üçün bir yetirilməməsi müəyyən edə bilərsiniz. The default nəzarətçi xoş gəlmisiniz. The default fəaliyyət Index edir. Biz orada heç bir şey qoymaq zaman avtomatik olaraq xoş gəlmisiniz nəzarətçi getdi görə və index Action. Hər şey bu günə qədər mənada etmək? İndi, yalnız Controller getmək daha çox edə bilərsiniz və konkret fəaliyyət. Siz həmçinin nəzarətçi parametrləri keçə bilər. Yalnız bir misal kimi, Mən sizə göstərmək üçün bu nəzarətçi başqa bir tədbir əlavə etmək üçün gedirəm. Siz onu vermək nə sizə olacaq, çünki, Echo bu hərəkəti zəng və mən əsasən işğalçı gedirəm marşrutlaşdırma proqram mənə vasitəsilə göndəriləcək gedir ki, bir parametri, və burada görə bilərsiniz kimi, burada bu xətt, siz bilərsiniz Bu əsasən, siz nəzarətçi var, və bir / var deməkdir və siz hərəkət var, başqa bir var / və parametrləri olacaq, və biz bu adı ID çünki bucaq mötərizədə ərzində biz bu parametr ID adlandırma edirik deməkdir. Sonra mənim nəzarətçi kodu edirəm ki, parametri bir gözləməyə işğalçı istəyirsinizsə, Mən ID adına parametri tapmaq, mən yazırdı kodu istifadə edə bilərsiniz. Ki, mən burada nə var, mən qayıtmaq və demək gedirəm, , "Siz" dedi. Və indi mən, bizim web getmək əgər Mən cs50-kohana/welcome/echo/Helloooo-- getmək oh, doğru. Mən sol 1 addım var. Bu canlı kodlaşdırma fikir hissəsidir. Here 1 şey var. Baxaq. Belə ki, adətən bu web applications bir çox ismarıcları Sizin URL bu index.php şey daxil var, fikir index.php giriş nöqtəsi növ edir, çünki Sizin tətbiqi, lakin əlbəttə, ki, sort annoying var var. Siz index.php URL görünür var istəmirəm və qutusuna həyata olduqca çox hər web framework Bu index.php problem var, və belə ki, aradan qaldırılması etmək üçün bəzi tədbirlər almaq lazımdır. Və bu halda, biz nə olacaq, biz. htaccess adlı bir fayl istifadə etmək olacaq ki, və bu, Apache web server üçün xüsusi ki, bir şey və yeniden yazma URL'leri kimi şeylər edə bilərsiniz və s və s URL və yönlendirme və Kohana biz istifadə edə bilərsiniz bir şablon. htaccess fayl təmin etmək üçün kifayət qədər gözəl. Gördüyünüz kimi example.htaccess adlı bir fayl var və biz. Htaccess ki surəti olacaq. Mən bu açmaq və redaktə etmək üçün gedirəm, və əsasən müxtəlif şeyi bir dəstə edir. Siz baxmaq istəyirəm bilər əsas line sağ burada. Bu fikir, bu deyir ki, bir qayda müəyyən edir "OK, nə ki, başına index.php yazın." Siz görə bilərsiniz. The. * Şey uyğun şey üçün dayanır sonra ikinci hissəsi, index.php / $ 0 və $ 0 əvvəllər eşleştirildiğini nə aiddir. Ki, hissi edirmi? Amma dəyişdirmək istədiyiniz həqiqətən əsas şey, bu rewrite bazası dəyişdirmək olan URL bazası. Siz iş olduğunuz bu cür tutur. Mən ki, CS50 Kohana əlavə etmək üçün gedirəm, və yol indi index.php aradan qaldırılması, işləməlidir, və mən bəzi nömrələri əlavə etmək üçün gedirəm bu, həqiqətən iş etdi ki göstərmək üçün. Yaxşı səslənir. Günə qədər hər hansı suallar? [Tələbə] Necə 123 etmək bilirdinizmi? Ki, bir dəlil var? Məhz. Siz yalnız bir arqument kimi hesab edə bilər. Amma qəribə bir şey, baxmayaraq ki, Kohana yoxdur yolu Onlar məhz bir arqument kimi bunu bilmirəm. Siz bu kimi qamarlamaq üçün. Siz sorğu obyekt işğalçı və ID adına olan parametri üçün xahiş var, və adı ID ki bootstrap faylı gəlir Mən əvvəllər göstərdi və adı ID həmin bucaq mötərizədə idi ki, və bu parametrləri qamarlamaq necə. Awesome. Hər hansı digər suallar? Dediyim kimi, kontrollerlər, onlar, proqram məntiq idarə belə ki, siz that görə bilərsiniz 1 instansiya var - , bu, çox əsas, lakin hələ də tətbiq məntiq var parametri qənimətçilik və yeni simli yaradılması ideyası "Siz blah etdi", deyir və sonra üçün geri spitting ki. Və ümumiyyətlə nə siz müxtəlif kontrollerlər yaratmaq edir. Sizin veb müxtəlif hissələri üçün ayrı-ayrı kontrollerlər yaradır. Bu gün biz bir çox sadə veb etmək olacaq, və bir çox əsas blog olacaq. Biz yalnız bir blog ismarıc üçün yeni nəzarətçi etmək olacaq. Lakin sonra mən də blog şərh əlavə etmək olsaydı sonra mən yəqin ki, o şərh üçün yeni nəzarətçi etmək istəyirəm. Mən istifadəçi əlavə etmək istəyirdi, mən yəqin ki, o istifadəçilər üçün yeni bir nəzarətçi əlavə edəcək, və ümumiyyətlə, fikir, yeni bir model var zaman, Siz ilə məşğul olduğunuz bir yeni məlumatlar obyekt, ki, data obyekt üçün bir nəzarətçi var. Bu gün biz yalnız 1 data obyekt ilə işləməyə davam edirik, və ismarıc olacaq, və həmçinin masalar uyğun olaraq, data obyektlərin hesab edə bilər. Ümumiyyətlə hər masa data obyekt 1 tipli uyğundur, belə ki, post masa, 1 post model olacaq ki, müvafiq 1 post nəzarətçi olacaq, və şərh, belə ki, və s istifadəçilər üçün eyni, və eyni. Və ki, thumb bir qayda var. Ki, fərqlənə bilər xüsusi hallarda olmalıdır gedir, lakin siz bunu etmək olacaq nə var ki, vaxt 90%, və mən ki, biz bu gün bunu etmək olacaq nə sizə göstərmək lazımdır. 1 geri kodu daxil dalış əvvəl daha konsepsiyası, object relational mapping bu fikir. Siz uşaqlar artıq bir web inkişaf pset görmüşük, və siz bir SQL sorğu etmək olduğunu gördüm və sizə qaytarır nə satır var. Siz, bəzi adı ilə onları bu satır, və siz index sütun və masa adı, və ki, bu iş necə və bir az çətin ola bilər. Amma bundan əlavə, sizin bazası çərçivəsində əlaqələrin varsa, Məsələn kimi I, şərh və ismarışlarını varsa sonra bəlkə bir comment ana post işğalçı istəyirəm. Mən SQL yalnız satır istifadə, onda mən əldə edə bilərsiniz bütün ID edir ana post deyil, faktiki post özü. Biz kodlaşdırma etdiyiniz zaman, nə biz, həqiqətən, istədiyiniz həqiqətən qamarlamaq üçün  valideyn bəzən özünü göndərin. Relational mapping edir nə object Bu verilənlər bazası sorğu nəticələri alır və işləmək üçün çox gözəl olan sizin üçün obyektlərin, onu qoyur düz seriallarda və satır daha. Məsələn, indi, bəlkə bir şərh zaman və mən onun ana post işğalçı istəyirəm, və bəlkə arrow post şərh yoxdur o, həqiqətən mənə post obyekt verəcək faktiki valideyn vəzifəsinə müvafiq, bəzi ID yalnız, Mən başqa post işğalçı başqa bir SQL sorğu istifadə etmək lazımdır, ağır və lazımsız edir. Və bundan əlavə, obyektlərin bütün bu məlumatların satır Xəritəçəkmə, siz də obyektlərin daha çox funksiyaları əlavə edə bilərsiniz, Belə ki, məsələn, mən dərsləri mahiyyətcə funksiyaları gruplarıdır necə danışıb. Siz kimi hesab edə bilər. Məsələn, bəlkə mən bu post obyekt var, və bəlkə ona əlavə funksiyası bir növ istiyorum ki, əsasən mənə bu yaxınlarda dərc edilib deyir? Doğru və ya yalan, son həftə ərzində dərc edilib? Və mən ki, obyekt üzərində əlavə edə bilərsiniz bir funksiyası var, və bu, eyni yerdə üçün həqiqətən rahat və siz yarada müxtəlif funksiyaları bir ana var Bu obyektlər üçün, və bir sinif əlavə etmək üçün həqiqətən gözəl, bir obyekt üçün, yalnız sizin bazası gələn satır idi əgər halbuki, sonra həqiqətən hər hansı bir funksionallığı əlavə edə bilməz. Bu sözün yalnız məlumat var. Bütün bu barədə hər hansı bir sualınız? ORMs çox web inkişafı, və ORMs müxtəlif növ bir çox var, və Kohana öz ORM var. Bu, çox əsas, lakin siz bu kimi görünür nə bir dad almaq lazımdır. Bizim blog ismarıc bir model yaratmaq edək və biz açıq-aydın nə etmək lazımdır ilk şey bir faktiki masa yaratmaq üçün Bizim verilənlər bazası ərzində, həqiqətən, bu ismarıc üçün veri. Mən gedirəm ilk şey phpMyAdmin getmək edir. Sizlərin əvvəl phpMyAdmin istifadə? OK, zəhmli, belə ki, uşaqlar artıq nə, və mən Kohana Posts adlı yeni masa yaratmaq üçün gedirəm, və həqiqətən sadə olacaq. Mən da geri daxil etmək lazımdır Biz bu gün nə olacaq bütün müəllif və bədən var, yalnız sadə saxlamaq. Mən masa yaratmaq üçün gedirəm, və indi biz yalnız bizim ismarışları təmsil bir masa var bizim müəllif və bədən üçün 2 sahələri ilə. İndi gedirəm başqa bir şey deyil Bu bazasında bağlanmak üçün necə bilir mənim web proqram konfiqurasiya, və bu, təkrar, siz bütün web applications ilə etmək lazımdır ki, bir şey. Siz istifadəçi adı və parol demək lazımdır və verilənlər bazası adı və s və s həqiqətən, sizin bazasında bağlanmak üçün necə anlamaq üçün. Kohana, biz bir verilənlər bazası modul deyilən bir şey var və konfiqurasiya qovluq biz Database adlanan bu qovluq var Gördüyünüz kimi, burada müəyyən etmək ayarları bir dəstə var istifadəçi adı və parol var nə demək verilənlər bazası üçün mən, həqiqətən ona qoşula bilər. Və Mən sizə uşaqlar həqiqətən bilmək istəmirəm-ci ildən istifadəçi adı və verilənlər bazası parol, Mən artıq bütün qurmaq bir fayl var və mən surəti və üzərində yapışdırıb gedirəm. Awesome. Okay. Mən ki, mən nə etmək lazımdır bütün konfiqurasiya hesab edirəm ki, amma görək. Bir şey çökerse Biz, bu iş saxlamaq və edəcəyik onda biz bunu düzeltmek lazımdır. İndi mən nə gedirəm yeni bir nəzarətçi yaratmaq gedirəm edir. Və ya həqiqətən, sorry. Birinci mən yeni bir model yaratmaq lazımdır. Mən Post.php adlı yeni model yaratmaq lazımdır və biz nə olacaq, biz sinif Model_Post zəng olacaq edir. Bəzi syntax vurğulayaraq almaq, və mən deyəndə ki, əsasən var "ORM, uzanır" bir daha obyekt-yönümlü proqramlaşdırma, olan təəssüf ki, siz uşaqlar hələ CS50 öyrənildi, lakin almaq üçün olduqca asandır. Bu, mənə bu ORM paketi gəlir ki, bütün bu əlavə funksionallıq verir və mən əlavə funksiyaları və pulsuz etajer bir dəstə almaq Siz ikinci bir az görmək lazımdır. Hal-hazırda, həqiqətən, Mən nə etmək lazımdır bütün bu sinif yaratmaq edir. Mən hətta bir funksiyası və ya bir şey etmək lazım deyil, amma masa təmsil edən bir sinif yaratdıq, və mən bu ORM sinif uzadıla etdik, çünki, Mən pulsuz üçün hər şeyi bir dəstə almaq, belə ki, indi siz daha çox bir şey qurmaq yoxdur. Və indi nə mən gedirəm yeni bir nəzarətçi yaratmaq gedirəm, Mən blog.php ad gedirəm, və mən xoş gəlmisiniz nəzarətçi üzərində surəti gedirəm mən bəzi məhsulları köçürmək yoxdur, və indi bu adını dəyişmək üçün var. İndi nə mən hər şeyi həyata iş etmək üçün test etmək üçün gedirəm, Mən bazasında olan ilk post işğalçı gedirəm və ekranda vəzifəsinə orqanı çap. Nə mən ilk gedirəm mən mesajları saxlamaq üçün gedirəm ki etmək dəyişən belə biz nə olacaq edir - Kohana nə siz nə post obyekt qamarlamaq üçün , bu cür çətin, lakin siz ORM adlanan bu şey :: zavod nə var və sonra siz istədiyiniz model adı keçmək, və bu model təmsil edən ORM obyekt qaytarır. Və sonra, kimi, biz ORM obyekt genişləndirmək zaman, biz pulsuz üçün bütün bu üsulları almaq, belə ki, məsələn, biz adlanan bu yeni funksiyası ", bütün tapa olsun" avtomatik bazasında hər bir post qaytarır, olan olduqca rahatdır. İndi bədəndə I qayıtmaq üçün gedirəm ilk post və onun meyitinin qaytarılması. Və, əlbəttə, mən bir post yaratmaq lazımdır, belə ki, yeni bir yazı daxil edək. Mən, "Brandon, mənim ilk post." Demək lazımdır Awesome. Və indi biz blog getmək olacaq bütün yaxşı işləyir, əgər - oh, bu yenə bəzi digər lal fayl icazə şeydir. 1 saniyə tutun. Bu cür absurd var. Orada getmək. Okay. Mən icazə problem müəyyən. Bu, bəzi faylları və bəzi log yaratmaq üçün çalışır, və icazələrin, yenə düzgün müəyyən deyil, mən bunu həmin faylları yazılabilir və çalıştırılabilir idi belə ki, həqiqətən şeyi daxil edə bilər. İndi "sinif ORM tapılmadı" Mənə bir istisna deyərək verilməsi oldu Mən bir addım unuttum çünki və ki. Ki, çox pis. Bootstrap qovluq fayl, burada bu modulları var, etkinleştirmek və ya aradan bırakmak üçün seçə bilər. Bu istifadə edə bilərsiniz ki, müxtəlif funksiyalar bir dəstə var sort gözəl olan Kohana çərçivəsində. Məsələn, onlar identifikasiyası modulu siz istifadəçilər kimlik üçün istifadə edə bilərsiniz. Siz həyata keçirilməsi üçün istəyirsinizsə Onlar caching modulu ərizə iş daha sürətli və etajer etmək son geri caching bir növ. Biz bazası və ORM modul imkan lazımdır, dediyim kimi, çünki biz, təbii ki, verilənlər bazası istifadə etdiyiniz və biz də ORM modul imkan lazımdır, biz üçün gözəl olan əlavə funksionallığı var istədiyiniz çünki. Mən nə üçün bütün, o 2 xətləri uncomment edir Mən yenileyin və indi, mənə başqa bir səhv verdi. Bu "Class Model_Post tapılmadı." Deyir İndi bu üçün yaxşı bir problem deyil. Baxaq. Ictimai olun. No tutun. Oh, əziz. Ki, tapa deyil nə bilmirəm. Ki, həqiqətən qəribə deyil. Mən burada bu sinif var. Oh - Mən ola bilər danışarlar. Mən lal deyiləm. Mən PHP tag əlavə etmək unuttum. Ki, niyə var. İndi 1 dəyişiklik Mən yalnız etdi ki, geri var. Okay. Orada getmək. Ki, həqiqətən silly idi. Mən açılış PHP tag yox idi. Gördüyünüz kimi, indi sağ, düzgün iş var? Biz 1 yazı var. Biz ilk post tutdu, indi biz onun bədən çap. Böyük. Fantastic. Hər hansı bir sualınız indiyə qədər? Xeyr? Hər hansı bir sualınız? OK, belə ki, biz yalnız, çox əsas, sonrakı model yaratmışdır və biz sonra bəzi funksiyaları əlavə olacaq. Biz validations və filtreleme əlavə edə bilərsiniz. Qiymətləndirmələrin şeyi biridir çərçivələr həqiqətən də, həqiqətən, sizin üçün həll ki, və Mən sizə uşaqlar sizin CS50 pset üçün bu nə idi düşünmürəm, lakin sizin yekun layihə üçün web inkişaf əgər, siz çox güman ki dəyərləndirmə bir növ etmək istəyirəm olacaq, kimi boş istifadəçi adları olmayan, bəlkə ən azı bəzi uzunluğu ilə bir parol olan, belə şeylər. Və bu, özümüz bu şeyi həyata həqiqətən çətin deyil və olduqca çox hər bir web çərçivə sizin üçün bunu edir və bir çox təmiz şəkildə bunu etməyə imkan verir. Siz, ümumiyyətlə, o doğrulama qaydaları ifadə harada və model deyil, bir model etibarlı olub-olmadığını doğrulama, çünki. Amma indi, biz, sonra qədər qoymaq olacaq və indi biz başqa bir hissəsi işləmək olacaq, və biz yeni görünüşü cəhd və olacaq bütün ismarışları siyahıları. Bütün mövzuları listing yeni bir hərəkət edilməsi cəlb addımlar bütün ismarışları siyahısı qamarlamaq üçün və sonra bir görünüşü bütün ismarışları siyahısını göstərir. Burada, xoşbəxtlikdən kifayət qədər, biz artıq bütün mövzuları tutdu Bu ilk xətt istifadə edərək, bütün funksiyası tapmaq və indi biz nə olacaq bu günə qədər Mən birbaşa cavab orqanı qəbulu etdik simli keçən, lakin indi mən bir görünüşü istifadə etmək istədiyiniz edərək, və yalnız bunu bir görünüşü və arasında fərq məqsədi ilə bir gözəl, böyük HTML şablon ola bilər ki, və nə edə bilərsiniz bunu müəyyən dəyişənlərin keçirlər və sonra görünüşü avtomatik olaraq şablon yaşayır var o dəyişənlər istifadə. Mən nə lazımdır, mən yeni görünüşü yaratmaq lazımdır edir və mən ", blog / indeksi" kimi görünüşü bir şey adını lazımdır və mən əsasən bu məcburidir gedirəm - oh, mən nə yazıram? Mənim beyin başqa bir yerdə. Mən görünüşü dəyişən ismarışları bağladığı gedirəm belə ki, yol baxımından bu post dəyişən çıxışı var. Və indi mən bu fikri yaratmaq lazımdır, belə ki, burada biz "Views" adlanan bu qovluq var və ilk, mən adlı altında yeni bir qovluq yaratmaq üçün gedirəm "Blog". Bu gözəl. Bu yolla biz views üçün gözəl iyerarxiya ola bilər. Və sonra mən adlanır orada bir fayl yaratmaq üçün gedirəm "index.php". Awesome. Əslində, burada onlara həm edək. Bir görünüşü fayl edilməsi yəqin ki, bütün bu sadə hissəsi, və bu yəqin ki, artıq tanış olduğunuz şeylər. Biz, həqiqətən sadə bir şey olacaq , deyərək başlamaq "blog ismarıc Mənim siyahısı." Sonra biz vasitəsilə getmək bilər, və biz ismarıc array vasitəsilə təkrarlamaq olar, hər bir post işğalçı və kimi bir şey demək - bəlkə bir xətt əlavə və sonra müəllif və bədən çap. Bu günə qədər mənada etmək? Və bu işləri nin görək. Heç bir şey baş verib. Mən niyə görəsən. Oh, 1 addım buraxılmış. Mənə çox silly. Mən bir baxış yerləşdirilmişdir, ancaq cavab olaraq görünüşü müəyyən etməyib, belə ki, 1 şey etmək lazımdır. Siz "Bu cavab bədən" nə və görünüşü olmaq üçün müəyyən etmək lazımdır. Orada getmək. Biz mal var, və sonra bir post var, və yalnız kicks üçün, bir digər post daxil edək belə ki, biz bir siyahısını görə bilərsiniz. Və bu 2 ismarıcları daxil, və indi səhifəni yenileyin əgər, biz burada bütün bu mesajları görmək. Bu günə qədər mənada edirmi? Bəli, bir sual? Oh, tamam. Gördüyünüz kimi, biz bütün bu kodları ayırmaq üçün edə bilərsiniz müxtəlif bölmələr, və sonra bu görünüşü kodu ilə ən aydın görə bilərsiniz. Bu görünüşü təmsil ki, burada fayl, yalnız data tapılanlar data təmsil qayğısına qalır. Bu data bir növ keçmiş olur, və bunu yalnız sizə göstərir. Kodunuzu bütün digər yerlərində, siz heç narahat olmaz, və eyni, görünüşü kodu haqqında bir şey narahat yoxdur verilənlər bazası daxil olmaq və belə və s, necə həqiqətən yaxşı deyil və kodu bir çox maintainable edir. Dediyim kimi, views, onlar dinamik istəyirik bu 1 fayl var, lakin müxtəlif fikir yaratmaq Siz həqiqətən keçmək dəyişənlərin əsasında, və bundan əlavə, müxtəlif köməkçi funksiyaları bir çox var siz daha sürətli kodu yazmaq üçün istifadə edə bilərsiniz ki, Mən yalnız bir ikinci sizə göstərmək lazımdır. Bəli. [Tələbə] Belə $ 0 sağ, bir nəzarətçi edir? Ki, ikinci şey. Sual $ 0 nəzarətçi edir? $ 0 Mən burada yaradılmış bir dəyişir. Mən ilk bir görünüşü yaratmışdır. Mən bəzi dəyişən üçün təyin. Sonra, bu funksiyası onu keçdi cavab orqanı kimi müəyyən. Ki, hissi edirmi? [Tələbə] Belə fikir :: zavodu, bir sinif kimi rəyidir və ya bir kitabxana [Işitilemez] fabriki funksiyası? Sual, görünüşü :: zavod funksiyası haqqında və əsasən bu mahiyyətcə bir daha obyekt-yönümlü proqramlaşdırma edir. "Factory" View görünüşü sinif və bu deyilən bir üsul var ki, adına olan obyekt qamarlamaq üçün bir yol var "blog / index." Və bir daha obyekt-yönümlü proqramlaşdırma stuff var Mən çox burada daxil getmək niyyətində deyiləm ki. İndi təbii ki, biz yeni mesajları yaratmaq istəyirik, lakin biz bir verilənlər bazası vasitəsilə bunu etmək istəmirəm, belə ki, biz yeni bir yazı yaratmaq üçün yeni bir hərəkət yaratmaq olacaq, və biz nə üçün məhsullarının bir çox var. Biz nə olacaq ilk şey - Gəlin bu şeylər bir-bir həll edək. Biz edəcəyik ilk şey biz bir formada yaratmaq üçün var edir yeni bir yazı daxil üçün, amma mən də, ilk yeni tədbir əlavə etmək üçün gedirəm belə bir yeni fəaliyyət əlavə kimi asandır Sizin nəzarətçi ilə yeni bir funksiyası əlavə, və indi mən, çox əsas bir şey gedirəm yalnız bu görünüşü işğalçı və onu göndərmək, yalnız sizin üçün göstərilir. Və sonra indi yeni görünüşü fayl yaratmaq üçün gedirəm, və mən bəzi stuff yazı başlamaq üçün gedirəm. Nə Kohana haqqında gözəl müxtəlif köməkçi funksiyaları bir çox təmin edir Siz daha asan keçirmək kodu yazmaq üçün o köməkçi funksiyaları və ya köməkçi modulları və 1 ətrafında formaları yazır. Formaları yazmaq üçün, mən, həqiqətən, birbaşa hər hansı bir HTML yazmağa yoxdur. Siz uşaqlar HTML formaları yazıblar. Siz, həqiqətən, həqiqətən ağrılı və formaları yazmaq üçün çətin ola bilər necə. Bu, belə ki, xoşbəxtlikdən, əyləncə deyil biz əsasən Kohana nin istifadə şəklində yaza bilərsiniz bizim üçün bunu köməkçi funksiyaları yaratmaq. Biz, əsasən biz hər bir şey üçün sahələri var olacaq ki, müəlliflər üçün bir və orqanları üçün bir. Biz bir etiket var olacaq və biz bir daxil olacaq. Və sonra nəhayət, biz təqdim olacaq. Və gördüyünüz kimi, bu yazmaq üçün daha təmiz cür gözəl olan bütün messy HTML, çox. Düzdür, çox daha təmiz var ki, digər web çərçivələr var, lakin ən azı bu HTML özünüzü yazılı daha yaxşıdır. Awesome, belə ki, bu bax budur. Bu cür messy var mən orada bir xətt fasilə əlavə etmək üçün gedirəm ki, bir az gözəl baxmaq üçün. Bəli, əlbəttə, hələ, həqiqətən, həqiqətən pis görünür, amma biz yalnız diqqət edirik estetik indi deyil funksionallığa. Hər şeyi heç bir zaman. Gördüyünüz kimi, indi biz bir super əsas forması var, hansı növ gözəl edir. Mən deyərdim bu kodu özünüz yaratmaq bir HTML yazmaq üçün çalışırıq çox təmiz, belə ki, gözəl. Növbəti nədir? İndi biz hərəkət şeyi etmək lazımdır. HTML formaları yazmaq Adətən zaman, Siz şəklində təqdim hara gedir onu demək lazımdır. Ən web çərçivəsində ismarıcları, , bu eyni URL təqdim, belə şey Siz / blog / yeni, bir get sorğu göndərmək əgər bu formu göstərmək lazımdır, ancaq bir post sorğu göndərmək əgər / blog / data ilə yeni, bu həqiqətən ki, post saxlamaq üçün cəhd etməlidir və bu bir şey. Biz nə olacaq edir əsasən bütün biz bir post sorğu və ya get tələbi var olub-olmadığını yoxlamaq üçün nə etmək lazımdır Siz bilərsiniz post dəyişənlər nə kontrol edir. Bu post dəyişən müəyyən edilir, onda biz cəhd və yeni bir vəzifə olacaq. Yenə biz yalnız bu, ki, bir yeni post yaradır, və biz sözün olacaq bu kimi onun sahələri qurmaq, və sonra biz onu saxlamaq olacaq. Və sonra mən yönlendirme gedirəm indeksi səhifəyə onlar ismarıc siyahısını bir daha görmək olar. Ki cəhd edək. I ", Brandon" demək lazımdır və sonra post təqdim, və bütün yaxşı gedir əgər Gördüyünüz kimi, bu, index səhifə üçün mənə istiqamətləndirilmişdir Mən aşağı diyirləyin əgər, biz yeni daxil post var. Yay! Bəli, sual. [Tələbə] Siz eyni şey girmişdi əgər Siz əvvəl daxil? Bu əmin təqlid deyil olun varmı Eyni təqdim? Default olun, heç, çünki default - Siz şəklində eyni data daxil əgər sorry, sual və, bir cüt obyekt daxil imkan verir ki, təqdim bir mahiyyətcə, giriş dublikat? Hal-hazırda, bəli, siz bunu imkan verir, VB-tamamilə cüt satır üçün mükəmməl etibarlı, çünki, ki, bir narahatlıq varsa, sonra, misal üçün, validations əlavə edə bilərsiniz, bu artıq mövcud olan bir şey kimi tam eyni əgər əmin etmək üçün, sonra bir etibarsız obyekt var ki, və sonra hətta səhv mesaj belirtebilirsiniz "Bu artıq mövcuddur, çünki Invalid" və ya kimi bir şey və demək. Lakin bu halda, yalnız cüt bir şey yarada bilər. İndi cəhd edək və bəzi validations əlavə edin. Bu problem indi ki, Mən sanki tamamilə boş post təqdim edə bilər. İndi bu düyməsini basın bilər və orada getmək. Siz, həqiqətən görmək bilməz, lakin burada bu əlavə xətt Mən sözün yeni bir yazı var ki, göstərir. Bu yalnız bir boş müəllif və boş orqan var, və biz bunu imkan istəmirəm. Qiymətləndirmə girer bu Mən model obyekt getmək bilər, və indi ifadə edən yeni bir funksiyası əlavə edə bilərsiniz Mən bu model əlavə nə qiymətləndirmə qaydaları etibarlı əmin etmək üçün və ya müəyyən etmək üçün nə cari post olmaq nə deməkdir? Mən yalnız bir etibarlı post var demək istəyirəm, əgər müəllif və bədən, həm də boş deyil və bu Kohana bunu necə edir. Siz "Qaydalar" adlı yeni funksiya yaratmaq və sonra əsasən bir assosiativ array qayıtmaq bu obyekt üçün qiymətləndirmə qaydalarını müəyyən edir. Biz array qayıtmaq niyyətində, sonra biz nə olacaq edirik demək "müəllif" bir sıra gedir, olan adlı bir serialın gedir "boş deyil." Və sonra mən demək gedirəm "bədən". Bu Okay, və bu sintaksis və strukturu bir az çətin və bir az mürəkkəb görünə bilər. Siz sənədləri oxumaq, bu, anlamaq üçün olduqca sadə var Amma mahiyyətcə bu belirttiğiniz üçün nə etmək lazımdır nə bəzi qiymətləndirmə qaydaları, müxtəlif qaydaları var Siz demək qaydaları əlavə edə bilərsiniz kimi Kohana, pulsuz üçün sizə verəcək ən azı bu uzunluğu olmalıdır. Bəlkə rəqəmli olmalıdır. Bəlkə alpha rəqəmli olmalıdır. Bəlkə belə və s, ən azı bu uzunluğu olmalıdır. Kohana sizin üçün təmin edən müxtəlif qaydaları bir çox var və siz, sənədlərin baxmaq, onların veb getmək bilər və siz edə bilərsiniz ki, bütün müxtəlif şeylər edə bilərsiniz. Amma bu nə üçün bütün, və indi nə görmək edək Mən boş post təqdim əgər. Nə olacaq? Oh, yox, mən bir səhv almaq. Mən bir qiymətləndirmə istisna almaq. Bəli, bu yaxşı. Bu, mənim model etibarsız olduğunu mənə, amma bir istisna göstərmək istəmirəm Mənim istifadəçilər üçün onlar sağ, etibarsız bir şey təqdim etmək çalıştığınızda? Mən onlara friendlier səhv mesajı bir növ vermək istəyirəm bir şey yanlış gedir zaman. Biz nə olacaq, biz olacaq edir Bir cəhd tutmaq loop hər şeyi kesmek. Əslində, bu da hələ öyrəndim deyil bir şey hesab CS50, çünki C proqramlaşdırma dili C, demək olar ki, hər bir digər dillərdə istisnalar var, deyil, , belə ki, həqiqətən, həqiqətən, qısa istisnalar var istisna kodu bir parça bilər ki, bir şey deyil bir şey yanlış gedir zaman, bir istisna atmaq up lakin sonra bəlkə kodu bəzi digər parça ali ki, istisna tutmaq və bir şey edə bilərsiniz. Məsələn, bu halda, bir model saxlamaq üçün çalışırıq ki, kod parça, "OK, bu model yanlışdır" bu model doğrular və deyir əgər, Bu istisna atmaq olacaq və bu ekvivalent növü C bir -1 və ya kimi bir şey geri bilər. Və sonra mənim üçün, bu funksiya, mənim kodu daha yüksək səviyyədə, mən istisna cəhd və tutmaq olar və əsasən "OK, Mən istisna tutmaq əgər, mən nə üçün gedirəm?", deyə Yoxsa mən ki, istisna tutmaq və kimsə ali imkan seçə bilər istisna tutmaq, və ya heç kim onu ​​olarsınız, sonra bütün proqram, qəzaları və deyir "Bir şey yanlış getdi və mən onu idarə edə bilməz." Amma nə biz nə, bir cəhd blok kodu bir parça kesmek edir və sonra siz də, bir tutmaq blok deyilən bir şey əlavə cəhd və ola bilər ki, istisna tutmaq ki, kodu sortudur. Və mən bu istisna tutmaq əgər və ya ləğv istisna, sonra mən nə gedirəm edir Mən səhvlər müəyyən gedirəm - Mən ki, mən bunu necə hesab edirəm - və mən bir obyekt üçün səhvlər müəyyən gedirəm. Bu istisna xit Və sonra mən nə gedirəm, bu yönlendirme deyil əgər, yönlendirme gedir, və deyil Bu əgər blog çıxmaq olacaq və mən etmək istəyirəm istəyirəm ki, bu blog / yeni hit. Bir səhv, onda mən şəklində geri getmək istəyirəm və həmin səhvləri göstərilir. İndi nə etmək istədiklərini mən bu səhvlər keçmək istəyirəm görünüşü üçün. Okay, mən burada görünüşü var və əsasən mən varsa həmin səhvləri göstərmək istəyirəm. Mən ki, HTML yazmaq əvvəl, mən, həqiqətən, tez gedirəm Bu səhvlərin quruluşu dəyişən görünür istəyirəm nə göstərmək, və bu, ümumiyyətlə yaxşı bir təcrübə deyil. Bir çox dəfə, siz geri bir üsulu bir şey almaq web çərçivəsində bəzi funksiyası, və siz dəyişən kimi görünür nə bilmirəm belə ki, bu iş necə bilmirəm. Mən əsasən onu çap üçün çap r metodu istifadə gedirəm. Gördüyünüz kimi Və, o, asılı array var mənə deyir və siz, bu simli üçün əsas, müəllif, xal var müəllif boş ola bilər, və başqa əsas, bədən, olmaz başqa string, bədən bal boş olmamalıdır. Mən sərin, tamam, kimi deyiləm. Sonra array vasitəsilə təkrarlamaq və hər bir mesaj çap edə bilərsiniz. Bu mesaj bir dəstə ilə assosiativ array kimi əsasən var. Mən gedirəm ", əgər səhvlər" dir və mən bir unordered siyahısını yaratmaq üçün gedirəm, və bütün səhvlər vasitəsilə təkrarlamaq üçün gedirəm. Və bu, və indi yenidən bu təqdim cəhd gedirəm və biz almaq nə görmək edək. İndi biz səhvlərin bu gözəl siyahısını almaq və bu hələ olduqca çirkin, lakin bu açıq-aydın gözəl baxmaq biçimlendirilmiş bilər lakin əsas ideyası, yalnız kodu bir neçə xətləri var Biz model doğrulamak etmək idi, müəyyən sahələri boş deyil ki, əmin olun, və bir şey yanlış getdi əgər, sonra səhv mesajı bir növ qayıtmaq Mən istifadəçi geri təqdim edə bilər. Siz həmçinin qiymətləndirmə edə bilərsiniz Siz, həqiqətən, bir səhv mesajı ola bilər ki, ki, öz proqram və ya kimi bir şey üçün daha xarakterikdir. Bütün ümumiyyətlə özelleştirilebilir. Təəssüf ki, biz, vaxt həyata çalışan edirik mən burada canlı kodlaşdırma sessiya kəsmək üçün gedirəm. Mən sizin üçün nümayiş etmək istəyirəm ki, digər funksiyalar bir dəstə var bu nümunə. Məsələn, sizin saytınıza şablonları əlavə edə bilərsiniz, belə ki, bəlkə sizə müraciət etmək istəyirəm ki, HTML kodu bir növ var Sizin sayta hər bir səhifə üçün, əvəzinə sovuşdurmaq ki, hər bir görünüşü faylı, açıq-aydın bir pis təcrübə olacaq var əsasən bu şablonları müəyyən edə bilərsiniz, və sonra nəzarətçi "OK, Mən bu şablonu istifadə edirəm." deyirlər "Bütün views bu şablonu istifadə etdiniz." Və mən də sizə nümayiş etdirmək istədiyiniz son şey biz, cross-site scripting üçün vaxt yoxdur ki, və əsasən Mən sizə uşaqlar yəqin ki, CS50 gördük edirəm - Mən David Malan yəqin ki, siz adətən yeritmək bilər necə haqqında danışdı düşünmək Daxil JavaScript kodu - Bu barədə danışdıq? Bəlkə? Bəlkə deyil? Lakin bir çox dəfə siz zərərli JavaScript kodu yeritmək bilər kiminsə bazasında və onlar düzgün xilas yoxdur, əgər, onlar geri istifadəçi məlumat təqdim zaman, sonra siz baş istəmirəm təsadüfi JavaScript kodu bir növ ola bilər, və mən Kohana ərzində bunu istədiyiniz necə nümayiş etdirmək niyyətində idi. Bu, həqiqətən, həqiqətən, həqiqətən asandır. Mən sözün 2 saniyə indi bunu edə bilər. Siz var Bütün əsasən bu şeyi kesmek edir bu şey HTML şəxslərin çağırıb. Və avtomatik olaraq düzgün bütün simvol xilas edəcək və bu problem almaq deyil əmin olun. [Tələbə] Siz səhv ilk test yazıldığına. [Brandon Liu] oops, Oh. Okay, mən bu gün sizinlə bölüşmək idi bütün var. Bu slaydlar olunub olacaq, lakin bu ümumiyyətlə yalnız resursları həqiqətən Kohana başlamaq lazımdır olmalıdır. Siz web bilərsiniz. Onlar istifadəçi təlimatına var və onlar da bir API explorer var. Biz onlar sizin üçün bütün müxtəlif funksiyaları və köməkçi funksiyaları tədqiq edə bilərsiniz. Onlar ümumiyyətlə saytında kifayət qədər məlumat var Siz başlamaq üçün və Kohana ilə başlamaq istifadə edə bilərsiniz ki. Ki, bir çox tutorials kənarda, Kohana üçün, mən hesab edirəm ki, yoxdur nə onlar burada saytında var, belə ki, bu, yəqin ki, ən yaxşı şey deyil. Amma web çərçivəsində getmək istəyirsinizsə və yeni bir dil seçin var istəmirəm, və siz, nisbətən yüngül və asan bir öyrənmə curve var ki, bir şey istəyirəm Mən mütləq Kohana təklif edir. Bu yəqin ki, ən yaxşı təklif edir. Biz Rails haqqında Ruby istifadə edilmişdir funny şey, baxmayaraq ki, biz yalnız nə təkrar ola bilər və yəqin ki, 3 dəqiqə altında daha. No zarafat, lakin Rails haqqında Ruby öyrənmək çox uzun çəkir Bu Kohana öyrənmək almaq daha. Bu, siz öyrənmək seçə istəyirəm nə əsasən sizin seçimi var amma siz və tez çalışan almaq istəyirsinizsə, Kohana mütləq çox yaxşı bir seçimdir. Biz başa hər hansı bir son suallar əvvəl? Bəli. [Tələbə] Necə ki, inteqrə Siz təlimatlandırılması zaman siz istifadə kimi bir CSS çərçivəsində? Sualına necə biz CSS çərçivəsində ilə inteqrasiya olardı? Nə biz yəqin ki, nə olardı biz yəqin ki, daxil olardı biz bütün CSS faylları dump harada yeni bir qovluq, və sonra da yeni bir şablon əlavə ediyorum. Şablon biz o CSS faylları daxildir istədiyiniz onlar hər səhifədə istinad etdiyiniz əmin etmək üçün, və sonra həqiqətən HTML yazılı zaman, yalnız müvafiq dərsləri və etajer əlavə, və məsələn, zaman forma kimi bir şey istifadə etdiyiniz köməkçi funksiyası, siz sonra daha parametrləri əlavə edə bilərsiniz müxtəlif şeylər əlavə etmək istəyirəm nə dərsləri müəyyən etmək onlar düzgün stil bilər, və siz getmək necə əsasən var. Hansı digər suallar? Awesome. Zaman üçün təşəkkür edirik və gələn üçün təşəkkür edirik. Mən çox başqa əlavə niyyətində deyil lakin 1 həqiqətən sürətli olan bir link yoxdur şəklində. Həqiqətən lal. Bir əlavə edək - əslində baxımından, blog, index, yeni səhifədən gedir ki, bir link əlavə həqiqətən tez edək, biz yeni bir yazı əlavə edə bilərsiniz harada səhifə. Biz bunu olacaq. Nə gözəl HTML köməkçi funksiyaları bu bütün qrup var edir sizin üçün müxtəlif şeylər, belə ki, artıq şəxslərin gördüm "anker" Burada fəaliyyət, lakin onlar da deyilən bir funksiyası var Siz blog / yeni yazın bilər və "Yeni bir blog." demək Və bu, sizin üçün link yaradacaq və bunu həqiqətən mənasız görünür, lakin bu gözəl 1 domain başqa üçün web hərəkət olduğunu güman çünki. Və yalnız URL'leri özünüzü həyata yazdığı halda, sonra bütün URL'leri dəyişdirmək lazımdır. Və ya bəlkə siz başqa alt 1 alt onu köçürülüb. Siz bütün bu url özünüz dəyişdirmək lazımdır və heç bir əyləncə var. Siz burada bu anker istifadə edə bilərsiniz və domain və ya alt prefiks dəyişə bilərsiniz bir konfiqurasiya faylı və sonra hər yerdə tətbiq edəcək və bu yenidən, böyük bir nümunəsidir kodunuzu həyata qurutma, özünüzü təkrar etməyin. Özünüzü təkrar etdiyiniz yerdə, cəhd və konfiqurasiya faylını bir növ çıxarış və ya başqa bir funksiyası və bu sizin üçün idarə edir. Mən sizə göstərmək istəyirdi ki, son şey idi biz bu vəzifədə geri istəyirik, və mən həqiqətən uzun inşa ibarət ki, güman, lakin mən müəllifi daxil unuttum. İndi "Post Submit" basın zaman Mən hər şey itirdi. Xeyr! Həqiqətən kədərli. Belə ki, necə ki, ilə məşğul yoxdur? Bu nə edir. Biz nə bu giriş və mətn sahəsi funksiyaları üçün burada, biz ikinci parametri, ikinci parametri sonra dəyəri daxildir əgər sahəsində ilkin məskunlaşdığı olacaq nə olacaq. Biz nə edə bilər bizim blog nəzarətçi edir, biz bir dəyişən bind bilər. Bəlkə "dəyərlər" zəng. Və sanki post array keçmək. Ki, doğrulama uğursuz əgər o deməkdir ki, mənə Mən son tələbi təqdim ki, post array keçir, ki, yol mən son təqdim olan dəyərləri istifadə edə bilərsiniz sahələri repopulate üçün. İndi dəyərlər müəllifi kimi bir şey edə bilərsiniz Mən bəzi təsadüfi məhsulları və əgər indi bədən ki, yol dəyərlər və sonra orada qalır ", Post Submit" basın. Amma biz başqa problem daxil olacaq. Mən page ilk dəfə getmək əgər ki, işləyir, lakin qəza olacaq ki, var çox ilk dəfə çünki biz sayfasına getmək, bu post dəyişən hələ müəyyən olunmayıb. Bu null var. Bu mövcud deyil. Bu əsas varsa Və nə biz demək istəyirəm ki, sonra bu serialın dəyəri qayıtmaq, əsas yoxdur əgər, sonra bir boş string qayıtmaq. Yəni, biz burada istədiyimiz funksionallığı var. Biz əsas array daxil olmaq üçün çalışır əvvəl mövcud yoxlamaq istəyirsinizsə, və xoşbəxtlikdən kifayət qədər, Kohana də bizə bir köməkçi funksiyası verir. Onlar funksiyaları bu bütün suite var adı Varış altında, qısa array üçün, və onlar "almaq" adlı 1 funksiyası var və siz array keçmək bilər, və əsas adı keçə bilər. Sonra əsasən nə edəcəyik ki, açarı almaq üçün cəhd edir, lakin əsas array mövcud olmadıqda, , mən inanıram ki, o boş qayıdacaqlar, və ya biz də bir default belirtebilirsiniz olan gözəldir. İndi biz yenə eyni şey varsa, sonra, onun ətrafında ilk dəfə işləyir indi bax və yenə biz bəzi təsadüfi məhsulları yazın əgər və sonra orada qalır, cəhd və təqdim. Və mən də necə, həqiqətən, tez bir şablon əlavə etmək üçün sizə göstərmək olar danışarlar. Biz ilk nə edə bilər biz "template.php" adlı yeni görünüşü əlavə edə bilərsiniz Bu Views qovluğu ərzində və nə mən gedirəm ", content" Mən adlı bir şey çap gedirəm edir mənim əsas content olacaq olan. Və bəlkə çox alt Mən, demək, əlavə etmək üçün gedirəm copyright. [Işitilemez tələbə sual] [Brandon Liu] Bəlkə bu mən istifadə etmək istədiyiniz bir super əsas şablon edir. Mən hər bir səhifəsində mənim müəllif ilə bir qovluq var istəyirəm, və indi mən nəzarətçi ərzində gedirəm nə əvəzinə söyləyərək, indi "Controller uzanır" I ", Controller_Template uzanır" demək gedirəm əvəzinə deyərək və indi ", cavab bədən, bu görünüşü bərabərdir" Mən demək gedirəm "Bu şablon content edir -" və mən hesab edirəm - Mən bir bərabər işarəsi qoymaq bilərəm? Mən unutmuram. Bəli, mən belə düşündüm. Və indi content dəyişən görünüşü bərabər seçin. Mən burada eyni edə bilərsiniz. Mən yenileyin və indi, siz bu copyright orada əlavə indi bilərsiniz və yalnız bir təsadüfi post etmək, və sonra, yenidən, siz müəllif hüquqları səhifə çox altında olduğunu görəcəksiniz. Great. Mən sizə uşaqlar göstərmək istəyirdi bütün var. [Alqış] Hər hansı bir sualınız? [CS50.TV]