>> [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]