>> [Seminar] [Kohana: A PHP Rangka Kerja Ringan]
[Brandon Liu] [Universiti Harvard]
[Ini adalah CS50.] [CS50.TV]
>> Hi semua orang. Nama saya Brandon.
Saya junior di sini di kolej melakukan sains komputer, dan hari ini kita akan bercakap mengenai
Kohana, yang merupakan rangka kerja PHP pembangunan web.
Hari ini akan menjadi seminar pengekodan secara langsung,
jadi saya pada dasarnya akan menghabiskan 5-10 minit menjelaskan apa Kohana adalah,
dan kemudian saya betul-betul akan membina sebuah blog sangat mudah
untuk anda di sini betul-betul dari awal.
Kami akan memuat turun kod dari laman web Kohana itu,
dan kita akan mula membina blog, dan diharapkan ia akan menjadi sangat instruktif,
kerana anda akan melihat mungkin mungkin saya akan membuat beberapa kesilapan,
dan anda akan melihat saya pulih daripada mereka,
atau anda akan melihat proses pemikiran saya kerana saya membina melalui blog ini,
dan sementara itu, anda juga akan mendapat biasa dengan rangka kerja itu sendiri.
Semoga ia akan menjadi satu usaha yang sangat instruktif.
>> Pertama, apa sebenarnya rangka kerja?
Jika anda telah mengambil CS50 setakat ini, anda tidak benar-benar bekerja dengan mana-mana
rangka kerja lagi, dan perkara yang adalah ini.
Anda mungkin telah melakukan 1 pembangunan web Serangga sudah,
dan katakan anda terus membina laman web dan menyimpan membina laman web.
Anda akan mula melihat beberapa perkara.
Perkara pertama yang anda akan notis adalah bahawa anda mungkin lakukan perkara yang sama
berulang-ulang kali sepanjang masa,
perkara seperti membersihkan data input pengguna,
perkara seperti menganjurkan fail anda dengan cara yang tertentu.
Perkara lain yang anda akan juga mungkin notis adalah bahawa kod anda
boleh mula menjadi sangat, sangat kotor,
dan anda boleh meninggalkannya kemas dan hanya mempunyai masa yang sangat keras mengekalkan ia,
atau anda boleh mula untuk menstrukturkan kod anda dan menjadikannya modular
dalam cara-cara tertentu untuk menjadikannya lebih dipertahankan.
>> Ini adalah di mana rangka kerja web pada dasarnya datang masuk
Orang-orang ini yang telah membina banyak laman web, mereka berkata,
"Kita tidak perlu buat semula ini setiap kali tunggal kami membina laman web."
"Mengapa kita tidak hanya membuat satu pakej yang melakukan semua perkara ini untuk anda
setiap kali anda mahu membina laman web? "
Dan supaya apabila anda membuat laman web baru,
anda hanya memberi tumpuan kepada apa sebenarnya laman web ini tertentu kira-kira.
Anda tidak perlu untuk mengulangi semua konfigurasi pelbagai
dan pemisahan kod dan menulis semula kod
yang sering anda perlu lakukan apabila anda membuat laman web.
Ideanya ialah rangka kerja yang membolehkan anda untuk menulis kod peringkat yang lebih tinggi
tanpa perlu bimbang tentang butiran-tahap yang lebih rendah.
Terperinci peringkat rendah mungkin sesuatu seperti
berurusan dengan pembersihan data input pengguna.
Itu sesuatu yang anda tidak harus benar-benar perlu bimbang tentang.
Anda perlu memberi fokus kepada apa peruntukan web anda adalah benar-benar tentang.
Ia menghapuskan banyak kod boilerplate.
Ia merupakan seni bina untuk projek anda.
>> Yang paling popular akan menjadi Model-View-Controller,
yang saya akan bercakap tentang di saat.
Dan banyak kali rangka kerja ini merangkumi satu set prosedur,
peraturan, dan amalan terbaik bagi anda untuk menggunakan
supaya apabila anda pakai rangka kerja web
anda perlu menulis kod anda dengan cara yang tertentu,
dan ia secara amnya yang telah dipersetujui set prinsip-prinsip
oleh masyarakat yang secara amnya diterima sebagai
cara yang baik untuk menulis kod.
Ia membuat kod anda lebih dipertahankan, lebih mudah untuk digunakan,
sebagainya dan sebagainya.
Dan akhirnya, perkara yang saya ingin menekankan mengenai rangka kerja
berbanding perpustakaan adalah idea ini kira-kira penyongsangan kawalan, dan perkara yang adalah ini.
Perbezaan antara perpustakaan dan rangka kerja ialah dengan perpustakaan
anda masih menulis program utama,
dan anda jenis atur menggunakan perpustakaan
dan memanggil perpustakaan untuk melakukan sesuatu untuk anda.
Perbezaan antara perpustakaan dan rangka kerja yang
adalah bahawa rangka kerja bermula dengan kawalan,
dan ia menyembah kod anda,
supaya anda boleh menganggapnya sebagai - ini adalah mengapa ia dipanggil rangka kerja -
rangka kerja menyediakan bingkai ini dan struktur bagi kod anda,
dan anda mengisi lubang-lubang,
dan ini akan menjadi lebih ketara dalam kedua
apabila anda melihat saya mula menulis kod dalam konteks rangka kerja tersebut.
Anda akan melihat bahawa saya mengisi jurang,
dan rangka kerja adalah jenis mengawal semua serpihan bergerak,
dan saya perlu meletakkan keping di tempat yang betul.
>> Hari ini kita akan bercakap mengenai Kohana,
yang merupakan salah satu daripada banyak rangka kerja PHP.
Terdapat rangka kerja web, dan ada yang dalam hampir setiap bahasa tunggal,
dan saya memilih Kohana kerana Kohana boleh dikatakan
dan secara amnya diiktiraf sebagai PHP rangka kerja yang paling mudah untuk mengambil.
Ia adalah yang paling ringan.
Ada yang lain di luar sana yang datang dengan banyak, banyak lagi ciri-ciri,
tetapi mereka cenderung untuk menjadi lebih sukar untuk meningkat.
Dan akhirnya, Kohana menggunakan seni bina MVC itu.
Ia cukup ringan yang kita benar-benar boleh membina projek
di sini betul-betul di depan mata anda, dan anda boleh cukup banyak
ikut bersama-sama cukup mudah.
>> Apakah seni bina MVC ini?
Ia bermaksud Model-View-Controller,
dan mungkin jika anda berfikir tentang kod yang anda telah menulis setakat ini
untuk beberapa psets pembangunan web anda
anda mungkin dapat melihat beberapa ini, tetapi biasanya apabila anda mula menulis
aplikasi web yang lebih kompleks,
bahagian ini antara 3 segmen menjadi semakin jelas.
Aku meletakkan keluar MVC sini jenis sebagai timbunan,
dan sering anda akan mendengar orang bercakap tentang susunan dalam pembangunan web,
dan ini adalah untuk menggambarkan idea bahawa
setiap lapisan, setiap komponen benar-benar cuba untuk hanya berkomunikasi
antara 2 komponen lain.
Seseorang mengakses laman web anda sebagai pelanggan atau pelayar.
Mereka berinteraksi dengan program anda melalui kod paparan.
Kod pandangan berinteraksi dengan pengawal.
Pengawal ini berinteraksi dengan model,
dan model yang berinteraksi dengan pangkalan data SQL.
Dan tidak ada melompat di antara jika anda menulis kod anda dengan betul.
>> Apa yang perkara-perkara ini lakukan?
Model ini pada asasnya adalah sekeping kod yang memperkatakan data anda.
Apa sahaja yang berkaitan dengan pangkalan data anda, dengan matlamat yang anda simpan,
atau mendapatkan semula objek dalam pangkalan data,
itu semua dikendalikan oleh model.
Mungkin anda mempunyai objek dalam pangkalan data anda.
Kami akan mewujudkan satu model mempunyai kaitan dengan jawatan,
supaya jawatan mungkin mempunyai beberapa sifat-sifat kepadanya.
Anda mungkin mempunyai fungsi seluruh menyimpan mereka tiang atau mendapatkan semula jawatan
atau menapis jawatan dan sebagainya dan sebagainya,
dan itu semua kod yang yang dikendalikan oleh model.
Pengawal ini adalah jenis logik permohonan itu,
dan banyak perkara yang berbeza boleh pergi dalam logik permohonan.
Jika anda bercakap dengan API yang berbeza,
yang mungkin di mana anda berurusan dengan logik permohonan.
Jika anda cuba untuk perlu membawa data dari pelbagai model yang berbeza
dan perlu menggabungkan mereka dalam beberapa cara, yang sering boleh dikendalikan oleh pengawal.
Sebagai contoh, di Facebook, jika anda kawan seseorang,
maka mungkin bahawa perbuatan mewujudkan hubungan yang
boleh dilakukan oleh pengawal.
>> Dan akhirnya, pandangan adalah kod yang yang menjana apa yang anda benar-benar melihat.
Banyak kali saya fikir dalam psets CS50
mereka tidak menggalakkan anda semua untuk memisahkan ini 3 perkara.
Anda mungkin akan mempunyai, fail ini panjang besar di mana di bahagian atas
anda membuat beberapa SQL query dan mungkin melakukan beberapa pemprosesan
pada data yang anda diambil dari pangkalan data,
dan kemudian anda mempunyai semua HTML anda di bahagian bawah.
Dan anda mungkin mendapati bahawa anda mewujudkan lebih banyak dan lebih banyak halaman
yang anda akan mempunyai kod beberapa pengulangan, dan juga,
benda itu adalah fail anda mendapat benar-benar besar dan panjang
dan menjadi susah dipakai untuk menguruskan.
Sebab mengapa MVC begitu juga dianggap
adalah untuk beberapa sebab.
Perkara pertama adalah sesuatu yang dinamakan pemisahan kebimbangan
yang merupakan idea bahawa apabila anda mempunyai -
ideal 1 sekeping kod perlu buat 1 perkara dan melakukannya dengan sangat baik,
dan anda tidak perlu menggabungkan keping kod yang melakukan perkara-perkara berbeza.
Sebagai contoh, melihat kod dan kod model,
mereka tidak benar-benar perlu yang berkaitan.
Mereka tidak perlu berada dalam fail yang sama, jadi apabila anda boleh, memisahkan mereka daripada
jadi ia mudah untuk mengekalkan.
>> Perkara yang lain adalah kod digunakan semula.
Anda mungkin mendapati diri anda menulis SQL pertanyaan yang sama atau melakukan
pertanyaan yang serupa yang boleh dibuat cabutan ke dalam 1 fungsi,
dan itulah idea di sebalik model dan pengawal,
mempunyai dalam majlis berasingan yang anda boleh menggunakan semula di tempat-tempat yang berbeza dalam projek anda.
Dan akhirnya, itu terikat kepada pengeringan kod anda,
atau tidak mengulangi diri sendiri, tidak mengulangi diri sendiri.
Ini amat difahami dalam pembangunan.
Setiap kali anda boleh, anda tidak mahu mengulangi diri sendiri, kerana jika anda mengulangi diri sendiri,
ia lebih mahal untuk mengekalkan.
Jika anda mahu mengubah 1 perkara, anda perlu mengubahnya di mana-mana,
dan yang membawa kepada pepijat, dan ia dahsyat.
>> Baiklah.
Apa-apa soalan setakat ini kira-kira Kohana pada semua?
Besar.
Sekarang kita akan menyelam ke dalam sesi pengekodan hidup,
dan diharapkan semuanya berjalan dengan baik.
Saya akan pada dasarnya membina laman web ini
pada salah satu pelayan jauh saya, dan dengan cara itu anda semua boleh juga
lihat laman web dan mengakses laman web ini,
dan juga alam sekitar adalah lebih baik daripada mesin dikonfigurasikan jauh saya,
kerana ia berjalan Linux dan bukannya OS X.
Kami betul-betul akan bermula.
KohanaFramework.org.
Saya akan memuat turun kod dari laman ini.
Saya akan menyalin alamat pautan,
pergi ke pelayan saya, muat turun,
dan saya akan mendapatkan ia.
>> [Pelajar] Apa yang terbesar anda boleh membuat teks?
[Brandon Liu] Adakah yang lebih baik?
[Pelajar] Adakah yang boleh dilakukan? >> [Brandon Liu] Ya, itu baik.
Saya memuat turun fail ZIP dan unzipped itu ke dalam direktori yang dipanggil Kohana,
dan kita akan menukar nama yang CS50-Kohana,
dan mari kita pergi masuk
Awesome.
Di sini anda melihat sekumpulan fail yang berbeza.
Kebanyakan anda boleh mengabaikan - Sign In Register New tidak akan melalui setiap fail yang di sini
kerana kekangan masa,
tetapi secara umumnya apabila anda memasang Kohana, perkara pertama yang anda lakukan
adalah anda pergi ke direktori,
dan anda pada dasarnya akan melakukan beberapa ujian persekitaran dan barang kecil
memastikan persekitaran anda dengan betul bersedia untuk menjalankan Kohana
dan memastikan bahawa segala-galanya adalah hak semua.
Anda boleh melihat kebanyakan perkara berlalu, tetapi secara umumnya anda sentiasa menghadapi masalah ini 1
di mana ia mengadu bahawa beberapa direktori tidak boleh ditulis,
dan itu kerana beberapa kebenaran.
Saya tidak tahu berapa banyak yang anda lelaki telah belajar mengenai kebenaran fail dalam CS50,
tetapi jika anda melakukan pembangunan web, anda akan berjalan ke dalam isu ini banyak.
Saya akan membuat ia ditulis
dan saya rasa saya juga perlu - ada kita pergi.
>> Okay, jadi sekarang anda boleh melihat semua berlalu,
dan kini ia akan memberitahu anda untuk menukar nama fail install.php ini.
Saya akan memindahkan fail install.php untuk installed.php,
dan kini jika saya menyegarkan,
ia memberi saya beberapa kesilapan, dan di sinilah debugging itu masuk
Ini adalah di mana anda boleh melihat apa yang sebenarnya akan berlaku.
Masalahnya, secara lalai, Kohana menganggap bahawa
projek anda pada direktori akar domain anda,
jadi ia mengharapkan anda berada di demo.brandonkliu.com.
Kita perlu beritahu bahawa itu sebenarnya dalam subfolder.
Ada dalam subfolder yang dipanggil CS50 Kohana.
Masalahnya, ia memutarkan CS50-Kohana
sebagai sesuatu yang lain, yang saya akan menjelaskan kepada anda dalam satu saat.
Tetapi saya perlu memberitahu anda bahawa sesuatu itu dapat dijangka.
Apa yang kita akan lakukan ialah kita akan pergi ke dalam folder ini dipanggil bootstrap.php,
yang merupakan folder konfigurasi di mana banyak perkara yang berbeza ditubuhkan.
Saya membuka bahawa sehingga.
Maka mungkin salah satu perkara pertama yang saya akan lakukan ialah menukar zon masa.
>> Dan kemudian mari kita lihat.
Aha! Di sini.
Terdapat sekumpulan kata konfigurasi yang berbeza di sini,
tetapi yang saya cari adalah perkara ini dipanggil URL asas,
dan secara lalai saya mendapatkannya bersedia untuk Kohana,
tetapi saya akan mengubahnya untuk CS50-Kohana,
dan saya rasa yang perlu membaikinya.
Ya, hebat.
Secara lalai, untuk melihat bahawa ia bekerja, ia berkata, "Hello World."
Di manakah yang datang dari? Bagaimana kita dapat Hello Dunia?
Di mana sebenarnya kod yang sebenarnya menulis itu?
Untuk memahami bahawa, saya akan memperkenalkan konsep ini dipanggil laluan.
Hampir semua rangka kerja web mempunyai konsep yang dipanggil laluan,
yang merupakan perisian yang akan memetakan URL tertentu
kepada sekeping tertentu kod dalam rangka kerja anda.
Sebagai contoh, jika anda mempunyai beberapa URL dan anda pergi ke beberapa URL seperti foo.com / blog / semua
maka apa yang rangka kerja akan melakukan - atau sekurang-kurangnya apa Kohana akan lakukan -
ia akan mencari kelas yang dipanggil pengawal blog,
dan ia akan menjalankan tindakan fungsi menamakan semua.
Saya tahu saya bercakap tentang kelas dan fungsi,
dan saya tahu anda semua tidak dilindungi kelas dan fungsi
dalam CS50 lagi, tetapi untuk sekarang,
anda boleh berfikir kelas-kelas sebagai hanya sekumpulan fungsi,
satu cara kumpulan fungsi bersama-sama.
Itu benar-benar semua yang anda perlu tahu.
>> Sekarang jika kita melihat struktur folder kita,
di dalam folder permohonan itu terdapat folder lain yang dipanggil kelas,
dan folder lain dikenali sebagai Pengawal dan Model.
Jika anda lihat di dalam folder Pengawal,
kita melihat bahawa terdapat fail yang dipanggil Welcome,
dan anda boleh lihat di sini adalah kelas yang dipanggil Pengawal Welcome,
dan terdapat fungsi yang dipanggil Indeks Tindakan,
dan apa yang ia adalah ia menetapkan badan respons anda kepada Hello World.
Itulah di mana kod ini sedang ditulis.
Persoalan lain adalah, baik, saya tidak pergi ke
blah, blah, blah, / welcome / index.
Bagaimana saya berakhir di sini?
Baik, itu semata-mata kerana
di sini di bahagian bawah fail bootstrap kami
di mana kita menetapkan laluan kami
anda boleh melihat bahawa mereka menetapkan beberapa mungkir untuk anda.
Pengawal lalai adalah Selamat Datang. Tindakan lalai ialah Indeks.
Itulah sebabnya apabila kita meletakkan apa-apa di sana ia secara automatik pergi ke pengawal Selamat Datang
dan indeks Tindakan.
>> Semua masuk akal setakat ini?
Sekarang, anda boleh melakukan lebih daripada sekadar pergi ke Pengawal
dan tindakan tertentu.
Anda juga boleh lulus dalam parameter kepada.
Sama seperti contoh,
Saya akan menambah tindakan lain untuk pengawal ini untuk menunjukkan kepada anda.
Mari kita panggil tindakan ini Echo, kerana ia akan memberitahu anda apa sahaja yang anda memberikan,
dan jadi saya pada dasarnya akan merebut
parameter yang akan dihantar melalui saya untuk program laluan,
dan seperti yang anda lihat di sini,
baris ini di sini, anda dapat melihat bahawa
ini pada dasarnya bermakna anda mempunyai pengawal, dan anda mempunyai / a,
dan anda mempunyai tindakan, dan anda mempunyai / yang lain,
dan itu akan menjadi parameter, dan kerana kami mempunyai ID nama ini
dalam kurungan sudut, ini bermakna bahawa kita menamakan ID parameter ini.
Kemudian dalam kod controller saya jika saya mahu merebut memegang parameter itu,
Saya boleh menggunakan kod yang saya menulis, mencari parameter yang dinamakan ID.
Itulah apa yang saya lakukan di sini, dan saya akan kembali dan berkata,
"Anda berkata" itu.
Dan sekarang jika saya pergi ke laman web kami,
Saya pergi ke cs50-kohana/welcome/echo/Helloooo--
oh, betul.
Terdapat 1 langkah saya ketinggalan.
Ini adalah sebahagian daripada idea pengekodan hidup.
>> Berikut adalah 1 perkara. Mari kita lihat.
Jadi biasanya secara lalai dengan banyak aplikasi web
anda perlu termasuk perkara index.php ini dalam URL anda,
kerana idea itu index.php adalah jenis pintu masuk
permohonan anda, tetapi sudah tentu,
itulah jenis menjengkelkan untuk mempunyai.
Anda tidak mahu mempunyai index.php muncul dalam URL anda,
dan cukup banyak setiap rangka kerja web di luar kotak
mempunyai masalah index.php ini,
dan jadi anda perlu mengambil beberapa langkah untuk dapat keluarkan itu.
Dan sebagainya dalam kes ini,
apa yang kita akan lakukan ialah kita akan menggunakan fail yang dipanggil. htaccess,
dan ini adalah sesuatu yang khusus kepada web server Apache,
dan ia boleh melakukan perkara-perkara seperti menulis semula URL
dan mengarahkan URL dan sebagainya dan sebagainya,
dan Kohana cukup bagus untuk menyediakan template. htaccess yang boleh kita gunakan.
>> Seperti yang anda lihat, terdapat satu fail ada dipanggil example.htaccess,
dan kita akan menyalin itu. htaccess.
Saya akan membuka ini dan mengeditnya,
dan pada dasarnya ia sekumpulan perkara yang berbeza.
Garis utama anda mungkin mahu melihat yang tepat di sini.
Idea ini adalah bahawa ini menetapkan satu peraturan yang mengatakan,
"Okay, apa sahaja yang anda taip, Prepend index.php dengan itu."
Anda boleh melihat bahawa.
Ini. * Bermaksud apa-apa, sepadan dengan apa-apa,
dan kemudian bahagian kedua adalah index.php / $ 0,
dan $ 0 merujuk kepada apa sahaja yang telah dipadankan sebelum ini.
Adakah ini masuk akal?
Tetapi perkara yang benar-benar utama Saya ingin menukar adalah menukar pangkalan menulis semula ini,
yang merupakan pangkalan URL.
Ia semacam menganggap mana anda hendak pergi bekerja dari.
Saya akan menambah CS50 Kohana itu,
dan cara yang sekarang jika saya mengeluarkan index.php itu,
ia harus bekerja, dan saya akan menambah beberapa nombor
menunjukkan bahawa ia memang melakukan kerja-kerja.
Bunyi yang baik.
>> Sebarang pertanyaan setakat ini?
[Pelajar] Bagaimana ia tahu untuk membuat 123?
Adakah itu hujah?
Tepat sekali. Anda boleh berfikir ia hanya seperti pertengkaran.
Tetapi perkara yang pelik, walaupun, adalah bahawa cara Kohana melakukannya
adalah mereka tidak melakukannya sama seperti pertengkaran.
Anda perlu merebut ia seperti ini.
Anda perlu merebut objek permintaan itu dan meminta parameter yang dinamakan ID,
dan ID nama datang daripada fail bootstrap
bahawa saya menunjukkan lebih awal, dan ID nama itu dalam mereka kurungan sudut,
dan bagaimana anda merebut mereka parameter.
Awesome.
Apa-apa soalan lain?
Seperti saya katakan, pengawal, mereka mengendalikan logik aplikasi,
jadi itu 1 contoh di mana anda boleh melihat that's -
ia sangat asas, tetapi ia masih logik aplikasi,
idea meraih parameter dan mewujudkan rentetan baru
yang mengatakan, "Anda berkata blah," dan kemudian meludah yang kembali kepada anda.
Dan secara amnya apa yang anda lakukan adalah anda membuat pengawal yang berbeza.
Anda membuat pengawal yang berasingan bagi bahagian yang berlainan di laman web anda.
>> Hari ini kita akan membuat laman web yang sangat mudah,
dan ia akan menjadi satu blog yang sangat asas.
Kami akan membuat pengawal baru hanya untuk catatan dalam blog.
Tetapi jika saya juga menambah komen kepada blog post,
maka saya mungkin akan ingin pengawal baru bagi mereka komen.
Jika saya mahu menambah pengguna, saya mungkin akan menambah pengawal baru bagi mereka pengguna,
dan secara amnya, idea adalah bahawa setiap kali anda mempunyai model baru,
objek data baru yang anda hadapi,
anda mempunyai pengawal tunggal bagi objek data.
Hari ini kita hanya akan bekerja dengan 1 objek data,
dan itu akan menjadi jawatan,
dan juga anda boleh berfikir objek data sebagai bersamaan dengan jadual.
Secara amnya setiap meja sepadan dengan 1 jenis objek data,
jadi jadual pos akan mempunyai 1 post model,
yang akan mempunyai 1 post pengawal bersamaan dengan,
dan yang sama untuk komen, yang sama untuk pengguna, dan sebagainya dan sebagainya.
Dan itu adalah satu peraturan umum biasa.
Terdapat akan menjadi kes-kes khas di mana anda mungkin berbeza daripada itu,
tetapi 90% daripada masa itu yang anda akan lakukan,
dan saya akan menunjukkan kepada anda bahawa apa yang kita akan lakukan hari ini.
1 lebih banyak konsep sebelum kita menyelam ke dalam kod,
idea ini objek pemetaan hubungan.
>> Kalian telah melakukan pembangunan Serangga web,
dan anda telah melihat bahawa anda membuat pertanyaan SQL,
dan apa sahaja yang kembali kepada anda adalah baris.
Anda mendapatkan baris ini, dan indeks anda mereka dengan beberapa nama,
nama lajur dan meja,
dan bagaimana anda bekerja dengannya,
dan ia boleh agak rumit.
Tetapi tambahan pula, jika anda mempunyai hubungan dalam pangkalan data anda,
seperti contohnya jika saya mempunyai komen dan jawatan,
maka mungkin saya mahu merebut jawatan induk komen.
Jika saya menggunakan hanya baris dalam SQL, maka semua saya boleh mendapatkan adalah ID
selepas ibu bapa dan tidak pos sebenar itu sendiri.
Tetapi apabila kita pengekodan, apa yang kita benar-benar mahu ialah untuk benar-benar merebut
induk pos itu sendiri kadang-kadang.
Apa objek pemetaan hubungan tidak adalah
ia mengambil keputusan pertanyaan pangkalan data
dan meletakkan ke dalam objek untuk anda, yang jauh lebih bagus untuk bekerja dengan
daripada tatasusunan kosong dan baris.
>> Sebagai contoh, kini apabila saya mempunyai komen mungkin,
dan saya mahu merebut jawatan induknya,
dan saya mungkin comment arrow pos,
maka ia benar-benar akan memberikan saya objek jawatan
bersamaan dengan jawatan ibu bapa sebenar, bukan hanya beberapa ID,
yang saya jika tidak perlu menggunakan dan membuat satu lagi pertanyaan SQL untuk merebut jawatan itu,
yang rumit dan tidak perlu.
Dan tambahan pula, dengan pemetaan semua baris data ke dalam objek,
anda juga boleh melampirkan satu fungsi kepada objek,
jadi sebagai contoh, saya bercakap tentang bagaimana kelas dasarnya pengelompokan fungsi.
Anda boleh berfikir seperti itu.
Sebagai contoh, mungkin saya mempunyai objek pos ini,
dan mungkin saya ingin mempunyai beberapa jenis fungsi yang melekat padanya
yang pada dasarnya memberitahu saya baru-baru ini telah ia posted?
Adakah ia dihantar dalam minggu terakhir, benar atau palsu?
Dan itu adalah satu fungsi saya boleh melampirkan ke objek itu,
dan ia benar-benar mudah untuk memilikinya di tempat yang sama,
dan terdapat pelbagai fungsi yang berbeza anda boleh membuat
untuk objek ini, dan ia benar-benar bagus untuk dapat lampirkan ia ke kelas,
untuk objek, manakala jika anda hanya mempunyai baris yang datang dari pangkalan data anda,
maka anda tidak boleh benar-benar menghubungkan apa-apa fungsi untuk itu.
Ia benar-benar hanya data.
Sebarang soalan mengenai bahawa pada semua?
ORMs adalah pembangunan web yang biasa,
dan terdapat banyak jenis ORMs,
dan Kohana mempunyai PRO sendiri.
Ia amat asas, tetapi anda akan mendapatkan rasa apa yang kelihatan seperti.
>> Mari kita mewujudkan satu model untuk posting blog kami,
dan perkara pertama yang seharusnya perlu lakukan adalah untuk mewujudkan jadual sebenar
dalam pangkalan data kami untuk benar-benar menyimpan data kami bagi mereka jawatan.
Perkara pertama yang saya akan lakukan adalah pergi ke phpMyAdmin.
Adakah anda lelaki digunakan phpMyAdmin sebelum ini?
Okay, hebat, jadi anda semua sudah tahu apa yang,
dan saya akan membuat jadual baru dipanggil Kohana Posts,
dan ia akan menjadi benar-benar mudah.
Saya akan mempunyai untuk log masuk kembali masuk
Semua kita akan lakukan hari ini adalah mempunyai penulis dan badan,
hanya menyimpan ia mudah.
Saya akan buat jadual itu,
dan kini kita mempunyai jadual yang mewakili posting kami
dengan 2 bidang bagi pengarang kita dan badan kita.
Perkara lain yang saya akan lakukan sekarang ialah
mengkonfigurasi aplikasi web saya supaya ia tahu bagaimana untuk menyambung kepada pangkalan data,
dan ini, sekali lagi, adalah sesuatu yang anda perlu lakukan dengan semua aplikasi web.
Anda perlu beritahu nama pengguna dan kata laluan
dan nama pangkalan data dan sebagainya dan sebagainya
memikirkan bagaimana untuk benar-benar menyambung kepada pangkalan data anda.
>> Dalam Kohana, kami mempunyai sesuatu yang dinamakan modul pangkalan data,
dan dalam folder konfigurasi yang kita ada folder ini dipanggil Pangkalan Data,
dan seperti yang anda lihat, terdapat sekumpulan tetapan yang anda perlu ditetapkan di sini
beritahu apa nama pengguna dan kata laluan
untuk pangkalan data, jadi saya benar-benar boleh menyambung kepadanya.
Dan kerana saya tidak mahu anda semua untuk benar-benar tahu
Nama pengguna dan kata laluan pangkalan data saya,
Saya mempunyai fail di mana saya telah ditetapkan daripada itu, dan saya akan copy dan paste ke atas.
Awesome.
Okay. Saya rasa itu sahaja konfigurasi yang saya perlu lakukan,
tetapi mari kita lihat.
Kami akan terus bekerja di dalamnya, dan jika sesuatu kemalangan,
maka kami akan membaikinya.
Sekarang apa yang saya akan lakukan adalah saya akan membuat pengawal baru.
Atau sebenarnya, maaf.
Pertama yang saya perlu mewujudkan satu model baru.
Saya akan mewujudkan satu model baru yang dipanggil Post.php,
dan apa yang kita akan lakukan ialah kita akan memanggilnya kelas Model_Post.
Dapatkan beberapa sintaks highlight,
dan sebagainya apabila saya berkata, "memanjangkan PRO," yang pada dasarnya
beberapa objek berorientasikan pengaturcaraan yang lebih,
yang malangnya kamu tidak belajar di CS50 lagi,
tetapi ia cukup mudah untuk mengambil.
Ia memberi saya semua fungsi tambahan ini yang datang dalam pakej PRO ini,
dan saya mendapatkan sekumpulan fungsi tambahan dan barang kecil secara percuma,
yang anda akan melihat sedikit dalam satu saat.
>> Sekarang sebenarnya semua saya perlu lakukan ialah mewujudkan kelas ini.
Saya tidak perlu membuat apa-apa fungsi atau apa-apa,
tetapi saya telah mencipta kelas yang mewakili meja,
dan kerana saya telah dilanjutkan kelas PRO ini,
Saya mendapat sekumpulan perkara secara percuma, jadi untuk sekarang anda tidak perlu untuk menetapkan apa-apa lagi ke atas.
Dan kini apa yang saya akan lakukan adalah saya akan membuat pengawal baru,
yang saya akan menamakan blog.php,
dan saya akan menyalin lebih pengawal Selamat Datang
jadi saya tidak perlu menaip beberapa perkara,
dan kini saya mempunyai untuk menukar nama ini.
Sekarang apa yang saya akan lakukan untuk menguji untuk memastikan semuanya bekerja di luar,
Saya akan merebut jawatan itu pertama dari pangkalan data saya
dan mencetak tubuh jawatan pada skrin.
Untuk melakukan itu apa yang saya akan lakukan pertama adalah saya akan menyimpan kiriman
kepada pembolehubah supaya apa yang kita akan lakukan ialah -
dalam Kohana apa yang anda lakukan adalah untuk merebut objek jawatan
ia adalah jenis rumit, tetapi anda perlu melakukan perkara ini dipanggil PRO :: kilang,
dan kemudian anda lulus dalam nama model yang anda mahu,
dan ia mengembalikan objek PRO yang mewakili model itu.
Dan kemudian, seperti saya katakan, apabila kita melanjutkan objek PRO yang,
kita semua kaedah ini secara percuma, jadi sebagai contoh,
kita akan mendapat fungsi baru ini dipanggil "mencari semua,"
yang secara automatik akan kembali setiap masa tunggal dalam pangkalan data,
yang cukup mudah.
>> Dan kini dalam badan saya akan kembali
post yang pertama dan kembali tubuhnya.
Dan sudah tentu, saya perlu buat pengumuman,
jadi mari kita memasukkan jawatan baru.
Saya akan berkata, "Brandon, post saya yang pertama."
Awesome.
Dan sekarang kita akan pergi ke blog
dan jika semua berfungsi dengan baik - oh, ini adalah beberapa perkara kebenaran fail bisu lain lagi.
Berpegang 1 saat. Ia adalah jenis yang tidak masuk akal.
Di sana kami pergi. Okay.
Saya tetap bahawa masalah kebenaran.
Ia telah cuba untuk membuat beberapa fail dan beberapa log,
dan kebenaran, sekali lagi, tidak dipasang dengan sempurna, jadi saya membuat ia
supaya fail-fail telah ditulis dan boleh laku
jadi ia sebenarnya boleh log kepada perkara-perkara.
Kini ia memberi saya satu lagi pepatah pengecualian, "kelas PRO tidak dijumpai,"
dan itu kerana saya terlupa satu lagi langkah.
Itu terlalu buruk.
Dalam fail folder Bootstrap, terdapat modul ini di sini,
mana anda boleh memilih untuk menghidupkan atau mematikan.
Ini adalah sekumpulan ciri-ciri yang berbeza yang anda boleh memilih untuk menggunakan
dalam Kohana, yang merupakan jenis bagus.
>> Sebagai contoh, mereka mempunyai modul pengesahan
yang anda boleh gunakan untuk mengesahkan pengguna.
Mereka mempunyai modul caching jika anda mahu untuk melaksanakan
semacam caching kembali akhir untuk membuat kerja permohonan dengan lebih cepat dan barang kecil.
Kita perlu membolehkan pangkalan data dan modul PRO yang,
kerana seperti yang saya katakan, kami menggunakan pangkalan data ini, jelas,
dan kita juga perlu untuk membolehkan modul PRO yang,
kerana kami ingin mempunyai fungsi tambahan, yang bagus untuk mempunyai.
Apa yang saya perlu lakukan adalah komentar mereka 2 baris,
dan kini jika saya menyegarkan, ia memberikan saya satu lagi kesilapan.
Ia berkata, "Kelas Model_Post tidak dijumpai."
Sekarang ini adalah masalah yang baik untuk mempunyai.
Mari kita lihat.
Jadikan ia awam.
No Berpegang.
Oh, sayang.
Saya tidak tahu mengapa ia tidak dapat mencari itu.
Itu benar-benar aneh.
Saya mempunyai kelas ini di sini.
Saya rasa saya mungkin perlu - oh.
Saya sangat dalam keadaan sihat. Saya terlupa untuk menambah tag PHP.
Itulah sebabnya.
Sekarang saya mempunyai untuk membatalkan bahawa 1 perubahan saya hanya melakukan.
>> Okay. Di sana kami pergi.
Yang benar-benar bodoh. Saya tidak mempunyai pembukaan PHP tag.
Tetapi seperti yang anda lihat, kini ia berfungsi dengan betul, bukan?
Kami mempunyai 1 post.
Kami meraih post yang pertama, dan kini kami dicetak tubuhnya.
Besar. Hebat.
Apa-apa soalan setakat ini?
Nope? Apa-apa soalan?
Okay, jadi kita mencipta model jawatan itu, yang sangat asas,
dan kita akan menambah beberapa fungsi di kemudian hari.
Kita boleh menambah pengesahan dan penapisan.
Pengesahan adalah salah satu perkara yang
bahawa rangka kerja menyelesaikan untuk anda benar-benar, benar-benar baik,
dan saya tidak fikir anda semua terpaksa melakukan ini untuk Serangga CS50 anda,
tetapi jika anda melakukan pembangunan web untuk projek akhir anda,
anda mungkin akan mahu melakukan beberapa jenis pengesahan,
seperti tidak mempunyai nama-nama pengguna kosong,
mungkin mempunyai kata laluan yang mempunyai sekurang-kurangnya beberapa panjang, perkara-perkara seperti itu.
Dan ia benar-benar rumit untuk melaksanakan perkara-perkara ini dengan diri kita sendiri,
dan cukup banyak setiap rangka kerja web tunggal tidak untuk anda
dan membolehkan anda untuk melakukannya dengan cara yang sangat bersih.
Dan model adalah di mana anda biasanya menyatakan kaedah-kaedah pengesahan,
kerana ia mengesahkan sama ada model adalah sah atau tidak.
>> Tetapi untuk sekarang, kita akan meletakkan sehingga kemudian,
dan sekarang ini kita akan bekerja pada sebahagian yang lain,
dan kita akan cuba membuat pandangan baru
yang menyenaraikan semua jawatan.
Langkah-langkah yang terlibat dalam membuat tindakan baru bagi penyenaraian semua jawatan
adalah untuk menarik senarai semua jawatan
dan kemudian menyebabkan senarai semua jawatan melalui pandangan.
Di sini, nasib baik cukup, kita sudah meraih semua jawatan
menggunakan baris pertama ini, mencari semua fungsi,
dan sekarang apa yang kita akan lakukan adalah setakat ini
Saya telah secara langsung menetapkan badan sambutan
dengan melepaskan tali, tetapi sekarang saya mahu menggunakan pandangan,
dan perbezaan antara pandangan dan hanya melakukan ini
adalah dengan tujuan yang boleh terima yang bagus, template HTML besar,
dan apa yang boleh saya lakukan adalah lulus faktor tertentu yang
dan kemudian telah berpendapat secara automatik mengisi template yang
menggunakan pemboleh ubah.
Apa yang saya akan lakukan adalah saya akan mewujudkan satu pandangan baru,
dan saya akan menamakan sesuatu pandangan seperti "blog / index,"
dan saya akan pada dasarnya mengikat ini - oh, apa yang saya menulis?
Otak saya di tempat lain.
Saya akan mengikat jawatan ubah kepada pandangan,
jadi cara bahawa pandangan itu mempunyai akses kepada pos ini berubah-ubah.
>> Dan jadi sekarang saya perlu membuat pandangan ini,
jadi di sini kita mempunyai folder ini dipanggil "Pandangan,"
dan pertama, saya akan membuat folder baru di bawah yang dipanggil "Blog."
Ini adalah bagus. Dengan cara itu kita boleh mempunyai hierarki yang bagus untuk pandangan kita.
Dan kemudian saya akan mencipta fail lain di sana yang dipanggil "index.php."
Awesome.
Sebenarnya, mari kita mempunyai mereka kedua-dua di sini.
Membuat fail view yang mungkin bahagian yang paling mudah semua ini,
dan ini mungkin perkara yang anda sudah biasa dengan.
Kita akan melakukan sesuatu yang benar-benar mudah,
mula berkata, "Senarai saya posting blog."
Kemudian kita boleh pergi melalui,
dan kita boleh melelar melalui pelbagai jawatan yang,
merebut setiap masa tunggal dan berkata sesuatu seperti -
mungkin menambah baris
dan kemudian mencetak pengarang dan badan.
Yang masuk akal setakat ini?
Dan mari kita lihat jika ia berfungsi.
Tiada apa yang berlaku.
Saya tertanya-tanya mengapa.
Oh, saya tidak hadir 1 langkah. Sangat bodoh saya.
Saya telah mencipta pandangan, tetapi saya tidak menetapkan pandangan sebagai tindak balas,
jadi anda perlu untuk melakukan perkara 1 lagi.
Anda perlu melakukan "ini badan sambutan" dan menetapkannya sebagai paparan.
Di sana kami pergi.
Kami mempunyai tajuk kita, dan kemudian kita mempunyai jawatan,
dan hanya untuk tendangan, mari kita memasukkan jawatan lain
supaya kita dapat melihat senarai.
Dan memasukkan ini 2 jawatan,
dan kini jika saya muat semula halaman,
kita lihat semua jawatan-jawatan ini di sini.
>> Adakah yang masuk akal setakat ini?
Ya, satu soalan? Oh, okay.
Seperti yang anda boleh lihat, kita telah dapat memisahkan semua kod ini di luar
kepada bahagian-bahagian yang berlainan, dan kemudian anda boleh melihat ia adalah yang paling jelas dengan kod paparan.
Gambar ini di sini yang mewakili pandangan,
ia hanya mengambil berat tentang mewakili data, memaparkan data.
Ia mendapat lulus beberapa jenis data, dan semua ia hanya menunjukkan kepada anda.
Dalam kesemua bahagian-bahagian kod anda, anda tidak perlu bimbang tentang apa-apa itu,
dan begitu juga, kod pandangan anda tidak perlu bimbang apa-apa mengenai
bagaimana untuk mengakses pangkalan data dan sebagainya dan sebagainya,
yang benar-benar baik dan membuat kod anda lebih banyak dipertahankan.
Seperti saya katakan, pandangan, mereka dinamik dalam yang
ia 1 fail, tetapi ia akan menghasilkan pandangan yang berbeza
berdasarkan pembolehubah anda sebenarnya lulus dalam,
dan tambahan pula, terdapat banyak fungsi yang berbeza pembantu
yang anda boleh gunakan untuk membantu anda menulis kod anda lebih cepat,
yang saya akan menunjukkan kepada anda dalam hanya satu saat.
Yeah.
>> [Pelajar] Jadi $ 0 adalah pengawal, betul?
Bahawa perkara kedua.
Persoalannya ialah adalah $ 0 pengawal?
$ 0 adalah pembolehubah saya mencipta di sini.
Saya telah mencipta pandangan yang pertama. Saya diberikan kepada beberapa pembolehubah.
Kemudian saya berlalu ke dalam fungsi ini, menetapkan ia sebagai badan sambutan.
Adakah ini masuk akal?
[Pelajar] Jadi adalah pandangan :: kilang, pandangan seperti kelas
atau [didengar] fungsi kilang perpustakaan?
Persoalannya ialah mengenai fungsi pandangan :: kilang,
dan pada dasarnya ini adalah beberapa objek berorientasikan pengaturcaraan yang lebih asasnya.
View adalah kelas pandangan, dan ia mempunyai kaedah yang dikenali sebagai "Kilang,"
dan itu adalah satu cara untuk merebut objek yang dinamakan "blog / index."
Dan itu lebih berorientasikan objek-barangan pengaturcaraan beberapa
bahawa saya tidak akan pergi ke sini terlalu banyak.
Sekarang jelas, kita mahu membuat siaran baru,
tetapi kita tidak mahu perlu melakukannya melalui pangkalan data,
jadi kita akan mewujudkan satu tindakan baru bagi mewujudkan jawatan baru,
dan terdapat banyak barangan yang perlu kita lakukan.
>> Perkara pertama yang kita akan lakukan - mari kita menangani perkara-perkara ini satu demi satu.
Perkara pertama yang kita akan lakukan ialah kami ada untuk mewujudkan bentuk yang
untuk memasukkan jawatan baru,
tetapi saya juga akan menambah tindakan baru pertama,
jadi menambah tindakan baru adalah semudah
menambah fungsi baru dengan pengawal anda,
dan untuk sekarang saya akan melakukan sesuatu yang sangat asas,
hanya merebut pandangan ini dan pengeposan, hanya memaparkannya untuk anda.
Dan maka sekarang saya akan membuat fail pandangan baru,
dan saya akan mula menulis beberapa perkara.
Apa yang baik tentang Kohana ini ialah mereka memberikan banyak fungsi yang berbeza pembantu
untuk anda untuk menulis kod pandangan yang lebih mudah,
dan 1 fungsi-fungsi atau modul pembantu pembantu
adalah sekitar menulis bentuk.
Untuk menulis borang, saya tidak benar-benar mempunyai untuk terus menulis apa-apa HTML diri saya.
Anda semua telah menulis bentuk HTML.
Anda tahu bagaimana ia boleh menjadi benar-benar, benar-benar menyakitkan dan rumit untuk menulis bentuk.
Ia tidak menyeronokkan, jadi nasib baik,
kita pada dasarnya boleh menulis bentuk yang menggunakan ini Kohana
membentuk fungsi pembantu untuk melakukannya untuk kita.
Kami akan pada dasarnya mempunyai bidang untuk setiap perkara yang kita ada,
jadi satu untuk penulis dan satu untuk badan-badan.
Kita akan mempunyai label, dan kita akan mempunyai input.
>> Dan akhirnya, kita akan mempunyai penyerahan.
Dan seperti yang anda lihat, ini adalah lebih bersih untuk menulis
daripada semua yang HTML tidak kemas, yang jenis baik.
Diberikan, terdapat rangka kerja web lain yang mempunyai ia lebih bersih daripada itu,
tetapi sekurang-kurangnya ini adalah lebih baik daripada menulis HTML ini sendiri.
Awesome, jadi ini adalah apa yang anda lihat.
Itu memang tidak kemas,
jadi saya akan menambah satu baris ada
untuk membuat yang kelihatan sedikit lebih bagus.
Nah, sudah tentu, ia masih kelihatan benar-benar, benar-benar buruk, tetapi kami hanya memberi tumpuan
pada fungsi untuk sekarang dan bukan pada estetika.
Tiada masa untuk melakukan segala-galanya.
Dan seperti yang anda lihat, sekarang kita mempunyai bentuk super asas,
yang jenis baik.
Kod ini saya akan berkata lebih bersih daripada cuba untuk menulis HTML membentuk diri sendiri,
jadi itu bagus.
Apa yang akan datang?
Sekarang kita perlu melakukan perkara-perkara dengan tindakan itu.
Biasanya apabila anda menulis bentuk HTML,
anda perlu beritahu di mana ia akan menghantarnya ke mana.
Lalai di dalam rangka kerja web yang paling,
ia mengemukakan kepada URL yang sama, jadi perkara itu,
jika anda menghantar permintaan mendapatkan ke / blog / baru,
ia harus memaparkan anda borang,
tetapi jika anda menghantar permintaan pos ke / blog / baru dengan data,
ia sebenarnya harus cuba untuk menyelamatkan jawatan itu
dan melakukan sesuatu dengannya.
>> Apa yang kita akan lakukan ialah
pada dasarnya semua perlu kita lakukan untuk memeriksa sama ada ia adalah satu permintaan pos atau permintaan mendapatkan
adalah untuk menyemak apakah pembolehubah pos anda boleh menetapkan.
Dan jika post pembolehubah ditetapkan, maka kita akan cuba membuat siaran baru.
Sekali lagi, kita hanya melakukan ini,
dan yang mencipta satu jawatan baru, dan kami betul-betul akan
ditetapkan bidang seperti ini,
dan kemudian kita akan menyimpannya.
Dan kemudian saya akan mengarahkan
Ke halaman indeks supaya mereka boleh melihat senarai jawatan lagi.
Mari kita cuba itu.
Saya akan berkata, "Brandon,"
dan kemudian mengemukakan jawatan itu, dan jika semua berjalan lancar,
seperti yang anda lihat, ia diarahkan saya untuk halaman indeks,
dan jika saya tatal ke bawah, kami mempunyai jawatan yang baru dimasukkan.
Yay!
Ya, soalan.
>> [Pelajar] Bagaimana jika anda telah memasuki perkara yang sama
anda masukkan sebelum ini?
Adakah ia periksa untuk memastikan anda tidak ditiru
penyerahan yang sama?
Menjadi lalai, tidak, kerana secara lalai -
maaf, soalan itu jika anda memasukkan dalam data yang tepat sama dalam bentuk yang
dan mengemukakan hujah bahawa, ia akan membolehkan anda untuk memasukkan objek salinan,
satu salinan catatan, pada dasarnya?
Sekarang, ya, ia akan membolehkan anda untuk berbuat demikian,
kerana di dalam pangkalan data itu dengan sempurna yang sah untuk mempunyai baris sepenuhnya salinan,
tetapi jika itu adalah satu kebimbangan, maka anda boleh menambah pengesahan, sebagai contoh,
memastikan bahawa jika ini adalah sama seperti sesuatu yang sudah wujud,
kemudian mengatakan bahawa ia adalah satu objek yang tidak sah,
dan kemudian anda juga boleh menentukan mesej ralat anda
dan berkata, "tidak sah kerana ini telah wujud" atau sesuatu seperti itu.
Tetapi dalam kes ini, saya hanya boleh mencipta sesuatu salinan.
Sekarang mari kita cuba dan menambah beberapa pengesahan.
Masalahnya ini sekarang ialah
Saya benar-benar boleh menyerahkan hantar siaran sepenuhnya kosong.
Saya boleh klik butang ini sekarang, dan di sana kami pergi.
Anda tidak boleh benar-benar melihatnya, tetapi garis ini tambahan di sini
menunjukkan bahawa saya benar-benar mempunyai jawatan baru.
Ia hanya mempunyai seorang pengarang kosong dan badan yang kosong,
dan kita tidak mahu membenarkan orang ramai untuk berbuat demikian.
Ini adalah di mana pengesahan datang masuk
>> Saya boleh pergi ke objek model saya,
dan kini saya boleh menambah fungsi baru yang menentukan
apa peraturan pengesahan saya perlu menambah kepada model ini
memastikan bahawa ia adalah sah atau untuk menentukan apakah maknanya menjadi jawatan yang sah?
Dan saya mahu untuk mengatakan ia hanya jawatan yang sah jika kedua-dua pengarang dan badan
tidak kosong, dan ini adalah bagaimana anda melakukannya dalam Kohana.
Anda membuat satu fungsi baru yang dinamakan "Peraturan,"
dan kemudian anda pada dasarnya kembali pelbagai bersekutu
yang mentakrifkan kaedah-kaedah pengesahan untuk objek ini.
Kita akan kembali array, dan kemudian apa yang kita akan lakukan ialah
berkata "pengarang," ia pergi ke array,
yang pergi ke pelbagai lain yang dipanggil "tidak kosong."
Dan kemudian saya akan berkata "tubuh."
Okay, dan sintaks untuk ini dan struktur untuk ini
mungkin kelihatan rumit sedikit dan sedikit rumit.
Jika anda membaca dokumentasi, ia agak mudah untuk memikirkan,
Tetapi pada dasarnya ini adalah apa yang anda perlu lakukan untuk menentukan
beberapa peraturan pengesahan, dan terdapat banyak peraturan yang berbeza
yang Kohana akan memberikan anda secara percuma, seperti anda boleh menambah kaedah-kaedah untuk mengatakan
ia mesti sekurang-kurangnya panjang ini.
Mungkin ia telah menjadi nombor. Mungkin ia perlu angka alfa.
Mungkin ia telah menjadi paling panjang ini, sebagainya dan sebagainya.
Terdapat banyak kaedah-kaedah yang berbeza yang Kohana menyediakan untuk anda,
dan anda boleh pergi di laman web mereka, melihat dokumentasi,
dan anda boleh melihat semua perkara yang berbeza yang boleh anda lakukan.
>> Tetapi ini semua saya perlu lakukan,
dan sekarang mari kita lihat apa yang berlaku
jika saya menyerahkan hantar siaran kosong.
Apa yang akan berlaku? Oh, tidak, saya mendapat ralat.
Saya mendapat pengecualian pengesahan.
Nah, ia adalah baik.
Ia memberitahu saya bahawa model saya adalah tidak sah,
tetapi saya tidak mahu memaparkan pengecualian
untuk pengguna saya apabila mereka cuba untuk mengemukakan sesuatu yang tidak sah, bukan?
Saya mahu memberikan mereka beberapa jenis mesej ralat mesra
apabila sesuatu berlaku.
Apa yang kita akan lakukan ialah kita akan
membalut segala-galanya dalam gelung cuba menangkap.
Sebenarnya, saya rasa ini adalah juga sesuatu yang anda tidak belajar yet
dalam CS50, kerana C, bahasa pengaturcaraan C,
tidak mempunyai pengecualian, tetapi hampir setiap bahasa lain tunggal
mempunyai pengecualian, jadi benar-benar, benar-benar secara ringkas,
pengecualian adalah sesuatu yang sekeping kod boleh
membuang pengecualian apabila ada masalah,
tetapi mungkin beberapa bahagian lain kod lebih tinggi
boleh menangkap pengecualian itu dan melakukan sesuatu dengannya.
>> Sebagai contoh, dalam kes ini,
sekeping kod yang cuba untuk menyelamatkan model,
ia memperkukuh model itu, dan jika ia berkata, "Baiklah, model ini adalah tidak sah,"
ia akan membuang pengecualian, dan ini adalah jenis bersamaan dengan
dalam C anda mungkin mengembalikan -1 atau sesuatu seperti itu.
Dan kemudian bagi saya, fungsi ini, kod saya
pada tahap yang lebih tinggi, saya boleh cuba dan menangkap pengecualian yang
dan pada dasarnya berkata, "Baiklah, jika saya menangkap pengecualian, apa yang saya akan lakukan?"
Atau saya boleh memilih untuk tidak menangkap pengecualian itu dan membiarkan orang lebih tinggi
menangkap pengecualian, atau jika tiada siapa yang menangkap ia,
maka keseluruhan program crash dan berkata,
"Sesuatu telah berlaku, dan saya tidak boleh menghadapinya."
>> Tetapi apa yang kita lakukan adalah anda balut sekeping kod dalam blok cuba,
dan kemudian anda juga menambah sesuatu yang dinamakan blok menangkap,
yang merupakan jenis kod yang akan cuba dan menangkap pengecualian yang mungkin berlaku.
Dan jadi jika saya menangkap pengecualian ini tertentu
atau pembatalan pengecualian, maka apa yang saya akan lakukan ialah
Saya akan menetapkan kesilapan - saya rasa itulah bagaimana saya melakukannya -
dan saya akan menetapkan kesilapan untuk beberapa objek.
Dan kemudian apa yang saya akan lakukan ialah jika ia mencecah pengecualian ini,
ia tidak akan mengubah hala, dan jika ia tidak mengubah hala
ia akan keluar dari jika blog
dan memukul blog ini / baru, yang mahu saya mahu lakukan.
Jika terdapat kesilapan, maka saya ingin kembali kepada bentuk yang
dan memaparkan kesilapan-kesilapan tersebut.
Sekarang apa yang saya mahu lakukan adalah saya mahu lulus dalam kesilapan-kesilapan tersebut
untuk paparan.
Okay, saya fikir saya mempunyai pandangan yang betul di sini,
dan pada dasarnya saya ingin memaparkan kesilapan-kesilapan tersebut jika wujud.
Sebelum saya menulis HTML untuk itu, saya akan benar-benar cepat
menunjukkan kepada anda apa struktur kesilapan ini kelihatan berubah-ubah suka,
dan ini adalah satu amalan yang baik secara umum.
Banyak kali anda mendapat sesuatu kembali dari kaedah tertentu,
beberapa fungsi dalam rangka kerja web,
dan anda tidak tahu apa yang berubah-ubah yang kelihatan seperti,
supaya anda tidak tahu bagaimana untuk bekerja dengannya.
Saya akan menggunakan kaedah cetak r pada dasarnya mencetak.
>> Dan seperti yang anda lihat, ia memberitahu saya ia pelbagai bersekutu,
dan anda mempunyai kunci, pengarang, mata kepada tali ini,
penulis tidak boleh kosong, dan utama yang lain, badan,
mata kepada satu lagi rentetan, badan tidak boleh kosong.
Saya seperti, okay, sejuk.
Kemudian saya boleh melelar melalui array dan mencetak setiap mesej.
Ia pada dasarnya seperti pelbagai bersekutu dengan sekumpulan mesej.
Apa yang saya akan lakukan ialah "jika kesilapan,"
dan saya akan membuat senarai tidak tertib,
dan saya akan melelar melalui semua kesilapan.
Dan ini, dan kini saya akan cuba mengemukakan ini lagi,
dan mari kita lihat apa yang kita dapat.
Sekarang kita mendapatkan senarai ini bagus kesilapan,
dan ini masih cantik hodoh, tetapi ini jelas boleh diformat untuk kelihatan bagus,
tetapi idea asas adalah hanya dalam beberapa baris kod,
kami dapat mengesahkan model kita,
memastikan bahawa bidang-bidang tertentu tidak kosong,
dan jika sesuatu yang salah, kemudian kembali beberapa jenis mesej ralat
Saya kemudian boleh mengemukakan kembali kepada pengguna.
Anda juga boleh menyesuaikan pengesahan anda
supaya anda benar-benar boleh mempunyai mesej ralat
yang lebih khusus kepada permohonan atau sesuatu seperti itu anda.
Semua yang umumnya disesuaikan.
>> Malangnya, kami kehabisan masa,
jadi saya akan mempunyai untuk memotong sesi pengekodan hidup di sini.
Terdapat sekumpulan ciri-ciri lain yang saya mahu untuk menunjukkan untuk anda
dalam contoh ini.
Sebagai contoh, anda boleh menambah template untuk laman web anda,
jadi mungkin terdapat beberapa jenis kod HTML yang anda ingin memohon
untuk setiap halaman tunggal di laman web anda, dan bukannya menampal yang
dalam setiap fail view yang tunggal anda mempunyai, yang jelas akan menjadi amalan yang tidak baik,
anda pada dasarnya boleh menentukan bentuk ini,
dan kemudian dalam pengawal anda berkata, "Baiklah, saya menggunakan template ini."
"Adakah semua pandangan saya menggunakan template ini."
Dan salah satu perkara terakhir yang saya mahu untuk menunjukkan kepada anda juga
bahawa kita tidak mempunyai masa untuk adalah cross-site scripting,
dan pada dasarnya saya fikir anda semua mungkin telah lihat dalam CS50 -
Saya rasa David Malan mungkin bercakap tentang bagaimana anda biasanya boleh menyuntik
JavaScript kod ke - adakah anda bercakap tentang ini?
Mungkin? Mungkin tidak?
>> Tetapi banyak kali anda boleh menyuntik kod JavaScript yang berniat jahat
ke dalam pangkalan data seseorang, dan jika mereka tidak melarikan diri yang betul,
kemudian apabila mereka membentangkan data yang kembali kepada pengguna,
maka ia boleh menjalankan beberapa jenis kod JavaScript rawak yang anda tidak mahu berlaku,
dan saya akan menunjukkan bagaimana anda akan melakukannya dalam Kohana.
Ini sebenarnya benar-benar, benar-benar mudah.
Saya boleh melakukannyasekarang di 2 saat betul-betul.
Apa yang anda perlu lakukan adalah pada dasarnya balut perkara-perkara ini
dalam perkara ini dipanggil entiti HTML.
Dan yang secara automatik akan terlepas semua watak-watak dengan betul
dan pastikan anda tidak mendapat masalah ini.
[Pelajar] Anda dieja ujian pertama dengan tidak betul.
[Brandon Liu] Oh, oops.
>> Okay, itu sahaja saya terpaksa berkongsi dengan anda untuk hari ini.
Ini slaid akan diposkan, tetapi ini adalah secara amnya
satu-satunya sumber yang anda benar-benar harus perlukan untuk bermula dengan Kohana.
Anda boleh pergi ke laman web. Mereka mempunyai panduan pengguna, dan mereka juga mempunyai explorer API.
Kita boleh meneroka semua fungsi yang berbeza dan fungsi pembantu mereka ada untuk anda.
Mereka umumnya mempunyai maklumat yang cukup di laman web
yang boleh anda gunakan untuk memulakan dan mendapatkan pergi dengan Kohana.
Tidak ada yang banyak tutorial, saya fikir, untuk Kohana, di luar
apa yang mereka ada di laman web di sini, jadi ini mungkin taruhan terbaik.
Tetapi jika anda mahu pergi dengan rangka kerja web
dan anda tidak mahu perlu memilih satu bahasa baru,
dan anda mahu sesuatu yang agak ringan dan mempunyai keluk pembelajaran yang mudah,
Saya pasti akan mencadangkan Kohana.
Itu mungkin menawarkan yang terbaik untuk itu.
Perkara yang melucukan, walaupun, adalah jika kita telah menggunakan Ruby on Rails,
kita boleh ditiru apa yang kita hanya melakukan
dan mungkin lebih di bawah 3 minit.
Jenaka tidak, tetapi belajar Ruby on Rails mengambil masa yang lebih lama
daripada ia akan mengambil masa untuk belajar Kohana.
Ia pada dasarnya pilihan anda pada apa yang anda mahu untuk memilih untuk belajar,
tetapi jika anda mahu untuk bangun dan berjalan dengan cepat,
Kohana pastinya pilihan yang sangat baik.
>> Apa-apa soalan terakhir sebelum kita berakhir? Ya.
[Pelajar] Bagaimana kita akan mengintegrasikan yang
dalam kerangka CSS seperti anda telah menggunakan apabila anda mengarahkan?
Persoalannya ialah bagaimana kita akan mengintegrasikan dengan rangka kerja CSS?
Apa yang kita mungkin akan lakukan ialah kita mungkin akan termasuk
folder baru di mana kita akan membuang semua fail CSS kita,
dan kemudian kami juga akan menambah templat baru.
Dalam template kita akan termasuk fail-fail CSS
untuk memastikan mereka dirujuk pada setiap halaman tunggal,
dan kemudian apabila anda sebenarnya menulis HTML,
anda hanya menambah kelas dan barang kecil yang sesuai,
dan sebagai contoh, apabila anda menggunakan sesuatu seperti borang yang
fungsi pembantu, anda boleh menambah lebih banyak parameter selepas itu
untuk menentukan apa yang kelas anda mahu yang akan dikenakan pada pelbagai perkara
supaya mereka boleh gaya dengan betul, dan itulah asasnya bagaimana anda akan pergi.
>> Sebarang pertanyaan lain?
Awesome.
Terima kasih untuk masa anda, dan terima kasih kerana datang.
Saya tidak akan menambah sangat banyak yang lain,
tetapi 1 perkara benar-benar cepat adalah kita tidak mempunyai pautan
dengan borang ini.
Benar-benar dalam keadaan sihat.
Mari kita menambah - sebenarnya dalam pandangan, blog, indeks,
mari kita benar-benar cepat menambah link yang masuk ke laman baru,
Laman di mana kita boleh memasukkan jawatan baru.
Kami akan melakukan ini.
Apa yang baik adalah terdapat kumpulan ini seluruh fungsi pembantu HTML
yang melakukan perkara-perkara yang berbeza untuk anda, jadi anda sudah menyaksikan entiti
berfungsi di sini, tetapi mereka juga mempunyai fungsi yang dipanggil "anchor,"
yang anda boleh menaip blog / baru
dan berkata, "Post blog baru."
Dan ia akan mewujudkan bahawa link untuk anda,
dan ini seolah-olah benar-benar remeh untuk dilakukan, tetapi ini adalah bagus,
kerana menganggap bahawa anda sedang bergerak laman web anda daripada 1 domain yang lain.
Dan jika anda hanya menulis daripada URL yang diri sendiri,
maka anda akan perlu menukar semua URL.
Atau mungkin anda berpindah dari 1 subfolder untuk subfolder lain.
Anda perlu menukar semua URL diri sendiri,
dan itu tidak menyeronokkan.
Anda boleh menggunakan sauh ini di sini,
dan anda boleh menukar domain atau awalan subfolder
dalam fail konfigurasi sekali,
dan kemudian ia akan dikenakan di mana-mana, dan ini adalah, sekali lagi,
satu contoh yang baik tidak mengulangi diri anda, pengeringan kod anda keluar.
Di mana sahaja anda mengulangi diri anda, cuba dan keluarkan dalam beberapa jenis fail konfigurasi
atau fungsi yang berbeza dan telah ia mengendalikan untuk anda.
>> Dan perkara yang terakhir yang saya ingin menunjukkan kepada anda adalah
andaikan kami kembali di pos ini, dan saya telah terdiri beberapa esei benar-benar panjang,
tetapi saya terlupa untuk memasukkan pengarang saya.
Sekarang apabila saya klik "Submit Post,"
Saya hilang segala-galanya.
Tidak! Benar-benar sedih.
Jadi bagaimana anda berurusan dengan itu?
Ini adalah apa yang kita lakukan.
Apa yang kita lakukan di sini untuk input dan kawasan teks fungsi-fungsi ini,
jika kita termasuk parameter kedua, maka nilai yang parameter kedua
akan menjadi apa bidang itu akan pada mulanya penduduk dengan.
Apa yang kita boleh lakukan ialah dalam pengawal blog kami,
kita boleh mengikat pembolehubah lain.
Memanggilnya "nilai-nilai" mungkin.
Dan lulus dalam jawatan array, harfiah.
Ini bermakna bahawa jika pengesahan gagal,
lulus kepada saya pelbagai jawatan yang saya dikemukakan dari permintaan terakhir,
dan cara yang saya boleh menggunakan nilai-nilai dari penyerahan terakhir saya
repopulate bidang.
Sekarang saya boleh melakukan sesuatu seperti nilai-nilai pengarang
dan menghargai badan, dan cara bahawa sekarang jika saya melakukan beberapa perkara rawak
dan klik "Submit Post," maka ia kekal di sana.
Tetapi kita akan menghadapi masalah lain.
Bahawa kerja-kerja, tetapi jika saya pergi ke halaman yang kali pertama,
ia akan crash, dan itu kerana kali pertama
kita pergi ke halaman, jawatan ini berubah-ubah tidak ditakrifkan yet.
Ia null. Ia tidak wujud.
>> Dan apa yang kami mahu katakan adalah jika kunci ini wujud,
kemudian kembali nilai array ini,
tetapi jika kunci tidak wujud, kemudian kembali rentetan kosong.
Itulah fungsi kita mahu di sini.
Kami mahu untuk memeriksa jika kunci wujud sebelum mencuba untuk mengakses pelbagai,
dan nasib baik cukup,
Kohana juga memberikan kita satu fungsi pembantu untuk itu.
Mereka mempunyai suite ini keseluruhan fungsi
di bawah ARR nama, pendek untuk pelbagai,
dan mereka mempunyai 1 fungsi dipanggil "mendapatkan,"
dan anda boleh lepaskan pada array,
dan anda boleh lepaskan pada nama kekunci.
Kemudian pada dasarnya apa yang akan berlaku adalah ia akan cuba untuk mendapatkan kunci itu,
tetapi jika kunci yang tidak wujud dalam tatasusunan,
maka ia akan kembali kosong, atau kita juga boleh menentukan lalai, saya percaya,
yang bagus.
Sekarang jika kita melakukan perkara yang sama sekali lagi,
maka anda lihat sekarang ia berfungsi kali pertama sekitar,
dan sekali lagi, jika kita taip beberapa barangan rawak
dan cuba mengemukakan, maka ia kekal di sana.
>> Dan saya rasa saya juga boleh menunjukkan kepada anda bagaimana untuk menambah template yang benar-benar cepat.
Apa yang boleh kita lakukan pertama adalah kita boleh menambah pandangan baru yang dipanggil "template.php"
dalam folder Views itu,
dan apa yang saya akan lakukan adalah saya akan mencetak sesuatu yang dinamakan "kandungan,"
yang akan menjadi kandungan utama saya.
Dan mungkin sekurang-bawah saya akan menambah, katakan,
hak cipta.
[Soalan pelajar didengar]
[Brandon Liu] Mungkin ini adalah template super asas saya hendak gunakan.
Saya mahu mempunyai folder dengan hak cipta saya pada setiap halaman,
dan sekarang apa yang saya akan lakukan dalam pengawal saya
kini daripada berkata, "memanjangkan Pengawal"
Saya akan berkata, "memanjangkan Controller_Template,"
dan sekarang daripada berkata, "badan tindak balas adalah sama dengan pandangan ini,"
Saya akan berkata, "kandungan template ini adalah -"
dan saya rasa - saya meletakkan tanda sama?
Saya terlupa. Ya, saya fikir begitu.
Dan sekarang saya menetapkan bahawa pemboleh ubah kandungan menyamai pandangan.
Yang boleh saya melakukan perkara yang sama di sini.
Dan kini jika saya menyegarkan, anda boleh lihat sekarang hak cipta ini ditambah di sana,
dan hanya membuat beberapa jawatan rawak,
dan kemudian, sekali lagi, anda akan melihat bahawa hakcipta adalah di bahagian paling bawah halaman.
>> Besar. Itu sahaja yang saya mahu menunjukkan kepada anda semua.
[Tepuk tangan]
Apa-apa soalan?
[CS50.TV]