DOUG LLOYD: Kadang-kadang apabila kita pengaturcaraan kami melakukan perkara yang begitu biasa, jadi kerap, dan begitu ramai orang melakukan idea-- yang sama atau yang sama perkara, bahawa ia mempunyai nama. MVC betul-betul satu perkara itu. Ia dipanggil paradigma pengaturcaraan. Ia semacam suka amalan terbaik yang telah disuling ke bawah oleh orang yang cuba untuk melakukan sesuatu. Dalam kes ini, melaksana sistem laman bahawa pengguna berinteraksi dengan di laman web yang lebih kompleks. Dan ia dilakukan supaya biasa yang ia disyorkan sebagai standard bahawa orang lain mungkin suka untuk diikuti, dan ada satu set yang sangat khusus cara salah satu yang boleh mengikuti paradigma ini. Jadi, MVC adalah paradigma, dan sebab kami menggunakannya adalah untuk butiran abstrak jauh daripada pengguna. Beberapa perkara yang pengguna tidak benar-benar perlu untuk melihat. Mereka hanya mahu mempunyai pengalaman pengguna yang baik, dan kita tidak perlu mempunyai mereka mengakses setiap fail tunggal yang wujud pada pelayan web kami, mungkin. Mungkin terdapat beberapa fail yang hanya digunakan untuk menyokong pengalaman pengguna, dan dengan itu kita boleh abstrak yang jauh. Kita boleh semacam menyembunyikan mereka supaya pengguna tidak boleh bekerjasama dengan mereka, tetapi kami pages-- pages-- kami tahu bagaimana untuk berurusan dengan mereka dan memanggil mereka atau mungkin memerlukan, mahu mereka, atau sesuatu seperti itu. Motivasi utama untuk MVC adalah keselamatan data, kerana MVC biasanya datang dalam konteks bekerja dengan pangkalan data. Dan dalam kita khususnya hendak menghalang pengguna dari secara langsung memberi kesan kepada pangkalan data. Kami hanya mahu melakukannya secara tidak langsung, melalui penapisan kami. Atau memastikan bahawa segala-galanya OK oleh kita melakukan sedikit semakan ralat atau kerja semakan keselamatan sebelum kita hantar ke pangkalan data, di mana perkara-perkara yang boleh berlaku, mungkin benar-benar salah, jika kita tidak berhati-hati. Jadi MVC bermaksud Model View Controller. Apa yang masing-masing bermakna? Pada asasnya, model adalah pangkalan data anda. Ia adalah di mana semua data penting untuk laman web anda nama pengguna lives--, login, kata laluan. Dan anda boleh mengemas kini, merujuk kepadanya, hampir semua yang seperti itu. Anda akan query pangkalan data, anda akan bertanya maklumat dari pangkalan data. Itulah model-- semua data di mana laman web anda hidup. Pandangannya adalah jenis seperti pengalaman pengguna. Ia adalah halaman yang mereka lihat selepas mereka telah meminta maklumat. Jadi mungkin mereka mengemukakan information-- log masuk mereka yang mereka akan lakukan dalam pengawal, yang kita akan bercakap tentang dalam satu saat. Mereka mungkin hantar mereka maklumat log masuk, dan pangkalan data disoal. Maklumat diminta dan ditarik dari pangkalan data. Dan kemudian sekali pengguna yang log dalam, mereka melihat halaman utama mereka. Itulah pandangan yang, OK? Dan kemudian pengawal adalah apa yang dipanggil logik perniagaan laman web anda. Dan logik perniagaan adalah salah satu istilah yang adalah jenis plin-washy-- suka, apakah logik perniagaan bermakna? Pada asasnya perniagaan anda logik adalah PHP anda. Pengguna anda tidak perlu untuk terus melihat PHP anda, tetapi PHP anda mungkin apa yang berlaku untuk membuat permintaan kepada pangkalan data. Oleh itu, input kehendak pengguna maklumat dalam pandangan, yang akan mengintegrasikan pengawal. Seperti, mereka akan menaip ke dalam borang. Bagaimana bahawa proses bentuk maklumat pengawal. Itulah PHP yang sebenarnya membuat permintaan itu kepada model. Kemudian model yang memberikan maklumat kepada pandangan, yang memberikan ia kepada pengguna, mungkin paling digambarkan seperti berikut. Jadi di sini kita berada. Berikut kami di sebelah kiri, dan Model kami Lihat Pengawal susunan paradigma. Bagaimanakah ia berfungsi? The us-- user-- membuat meminta kepada pengawal. Kami mengemukakan maklumat seperti dengan bentuk HTTP. Berdasarkan itu, pengawal ini tugasnya adalah untuk memastikan bahawa apa yang pengguna itu telah diberikan tidak sesuatu yang akan merosakkan model. Dan sebagainya pengawal akan memastikan bahawa segala-galanya OK. Ia akan kelihatan sangat berhati-hati. Jika ada sebarang kesilapan, ia akan menghentikan perkara sehingga pengguna tidak boleh sampai ke model. Tetapi menganggap semua ini OK dan ia pertanyaan sah, pengawal akan query model-- yang ia akan meminta ia untuk memberikan maklumat. Model ini akan memperuntukkan bahawa maklumat ke laman itulah pandangan, ia akan menghantarnya yang cara, dan kemudian pandangan akan mengisi maklumat yang diminta daripada model. Jadi, sebagai contoh, jika kita berbicara tentang log masuk ke laman Facebook anda, contohnya. Pandangan ini akan menjadi data yang keluar dari model yang merujuk kepada rakan-rakan anda dan berita memberi makan atau barangan seperti itu, bukan? Tetapi anda tidak akan melihat orang lain. Anda akan dapat getting-- supaya anda mengemukakan pertanyaan, anda log masuk ke alasan model-- saya, anda log masuk ke laman. Kegunaan pengawal maklumat log masuk anda untuk membuat permintaan untuk model untuk membuat memastikan bahawa anda adalah yang anda mengatakan anda berada. Seperti model, OK, ya, anda adalah yang anda mengatakan anda berada, jadi biarlah saya memberikan anda berita anda. Saya akan memberikan anda data mentah untuk berita anda kepada pandangan, dan maka pandangan menjadikannya cantik, memproses dengan cara yang yang kita digunakan untuk, memaparkan maklumat tersebut kepada pengguna. Perhatikan sambungan itulah tidak sedia ada pada gambar rajah ini. Tidak ada sambungan terus antara anda dan model. Selalu ada penampan ini pengawal di sebelah input, dan ada penampan daripada melihat di sebelah output. Mungkin anda seorang yang baik orang, dan jadi mungkin anda tidak akan melakukan apa-apa kerosakan kepada model, tetapi mungkin anda tidak. Atau mungkin ada seseorang yang yang pengguna yang berniat jahat yang akan mungkin mahu merosakkan pangkalan data anda, mungkin memadam segala-galanya daripada pangkalan data anda, yang boleh menjadi sangat mahal. Jelas sekali, yang mempunyai pengguna data is-- ada nilai untuk mempunyai data pengguna. Dan jadi jika kita tidak meletakkan penampan ini zon antara pengguna dan database-- yang pengguna dan perkara-perkara model-- mungkin tidak akan begitu baik untuk kita. Dan oleh itu adalah penting untuk mempunyai paradigma ini di mana pengguna boleh berinteraksi dengan pangkalan data, pasti, tetapi mereka perlu pergi melalui kami untuk melakukannya. Dan itu pada dasarnya idea dengan MVC. Ia cuba untuk melaksanakan keselamatan data. Ia cuba untuk melindungi model dari secara tidak sengaja atau dengan sengaja pengguna berniat jahat. Jadi apa yang berlaku apabila kita memohon paradigma ini? Nah, kita memisahkan data diperlukan dari website-- kami model-- dari logik yang melaksanakan laman web kami ini functionality-- yang controller-- dan dari estetika mudah dan halaman template yang terdiri daripada kami pengguna experience-- pandangan. Apakah ini bermakna? Baik, ia bermakna anda boleh membuat views boleh dilihat oleh pengguna. Anda boleh menyembunyikan model yang jauh. Dan controllers-- pengguna tidak mungkin terus memanipulasi. Mereka tidak perlu untuk mengakses kod PHP anda. Mereka hanya perlu melihat bentuk yang di mana mereka boleh menaip barangan masuk. Jadi mungkin borang adalah pemandangan, pengawal PHP adalah bahawa bentuk mengemukakan kepada, pengawal membuat pertanyaan kepada model, model yang memberikan maklumat lanjut pandangan yang berbeza yang memaparkan maklumat kepada anda. Program anda boleh mengakses semua logik perniagaan anda, tetapi pengguna anda tidak boleh terus mengakses logik perniagaan anda. Dan salah satu khususnya, mungkin, ilustrasi kelihatan ini adalah anda pernah menerima ralat 403 Larangan. Adakah anda pernah pergi ke web yang halaman dan dilihat 403 Larangan? Ia adalah jenis seperti 404 Not Found. 403 Forbidden bermakna anda cuba mengakses halaman yang anda tidak mempunyai akses kepada. Mungkin tapak yang menggunakan MVC pemisahan untuk menyembunyikan logik perniagaannya yang perlu wujud pada pelayan supaya untuk halaman untuk bekerja, tetapi tidak mahu anda untuk terus mengaksesnya. Jadi, anda mungkin mendapat ralat 403 Larangan. Dan ia akan tidak kira jika anda log masuk. Tiada pengguna boleh menyentuh fail ini PHP titik. Mereka hanya boleh menyentuh satu ini, dan one-- ini yang mereka dapat touch-- mungkin boleh berinteraksi dengan fail yang dikunci ke bawah lebih tidak langsung daripada pengguna. Jadi, kadang-kadang kita melihat kebenaran ini ralat, ini 403 Larangan. Bagaimana kita mengubah keizinan supaya barang-barang yang boleh atau tidak boleh dilihat? Apabila kita melakukan ini biasanya adalah dengan menggunakan Arahan Linux dipanggil chmod-- C-H-arena. Untuk melakukan ini, format yang cukup simple-- chmod, kebenaran, dan apa sahaja fail yang anda hendak untuk memohon bahawa perubahan kepada. Jadi, mungkin anda akan melihat sesuatu seperti this-- chmod 600 helpers.php. Atau mungkin anda lihat chmod this-- yang x campur yang termasuk direktori. Adalah adakah ini bermakna walaupun? Jadi, ada dua cara yang berbeza bahawa keizinan adalah biasanya digunakan dengan menggunakan chmod. Yang pertama dipanggil kaedah nombor perlapanan. Ini biasanya terpakai kebenaran kepada tiga kategori yang berbeza pengguna pada masa yang sama. Jadi chmod 711 fail akan membolehkan anda hak untuk membaca, menulis, dan melaksanakan fail anda, akan membolehkan others-- khusus kumpulan anda dan world-- yang hanya melaksanakan fail. Itulah yang ini diterjemahkan kepada. Nombor pertama yang terdapat adalah apa yang anda boleh lakukan, yang kedua ialah apa yang kumpulan anda boleh lakukan, dan yang ketiga adalah apa yang dunia boleh lakukan. Sesiapa sahaja yang yang melawat anda halaman, itu dunia. Apakah nombor-nombor sebenarnya diterjemahkan kepada walaupun? Jadi ini pada dasarnya menterjemahkan seperti ini. Jika kebenaran adalah sifar, tiada apa yang boleh berlaku. Jika ia adalah salah satu, anda boleh melaksanakan file-- jika itu kebenaran anda. Jika ia dua, anda boleh menulis fail tetapi anda tidak boleh berbuat apa-apa. Jika ia tiga, anda boleh menulis dan melaksanakan. Dan sebagainya, seperti yang anda lihat. Dan tujuh bermakna anda boleh melakukan segala-galanya. Jadi mengapa ini dipanggil nombor perlapanan? Nah, jika anda berfikir tentang hal itu, di sini adalah seperti noes dan yeses, dan jika kita berfikir tentang mereka peti merah dan hijau, mungkin yang menjadikan ia sedikit lebih jelas. Tetapi jika kita berfikir tentang mereka kotak merah sebagai sifar dan kotak hijau sebagai orang-orang, ini sebenarnya hanya set nombor perduaan, bukan? 000 diterjemahkan kepada perpuluhan 0; 001, perpuluhan 1; 010 adalah perpuluhan 2, dan sebagainya. Dan jadi kita panggil perlapanan ini nombor kerana terdapat lapan kemungkinan yang berbeza. Terdapat lapan digit yang berbeza jika kita bercakap mengenai tiga cebisan information-- sedikit membaca, menulis bit, dan sedikit yang melaksanakan. Jadi sekarang anda boleh bercakap binari, perpuluhan, hex, dan perlapanan. Jadi, anda tahu bagaimana untuk berkomunikasi dengan komputer dalam empat nombor yang berbeza sistem, jadi itu agak sejuk. Jadi, selain perlapanan yang skim kebenaran, ada juga kebenaran simbolik skim, yang sedikit berbeza dan biasanya digunakan terbaik untuk memohon atau mengeluarkan kebenaran secara menyeluruh. Jadi chmod x fail ditambah mungkin menambah kanan untuk melaksanakan kepada ketiga-tiga kategori users-- diri sendiri, kumpulan anda, dan dunia. Ditambah yang merupakan bahagian yang menambah. Hak untuk melaksanakan, itu x. Dan hakikat bahawa ia terpakai kepada semua tiga kumpulan dari pengguna akan menjadi itu. Jadi this-- tambah x-- mungkin akan menjadi sama seperti chmod 711 memfailkan, kerana jika anda kembali dan melihat skim nombor perlapanan, satu dan tujuh pasang memberi kita hak untuk melaksanakan fail. Jadi ini mungkin yang sama. Dan anda boleh menggunakan ini panduan untuk apa pelbagai perkara dalam simbolik struktur chmod-ing berada. Perkara-perkara yang hijau di sini akan menjadi di mana semua contoh berwarna hijau adalah kedua yang lalu. Biru itu akan menjadi biru. Oren akan menjadi oren. Jadi, anda boleh memohon perkara yang perlu anda kumpulan, kepada orang lain, kepada pengguna, atau kepada semua orang. Anda boleh memberi mereka membaca, menulis, dan melaksanakan akses, dan anda boleh menambah atau membuang atau menyerah hak tepat set kebenaran menggunakan model ini. Bagaimana kita menyemak apa yang skim kebenaran fail itu? Sebelum kita mengubahnya, ia mungkin baik untuk benar-benar tahu apa keizinan fail berada. Salah satu cara untuk melakukan ini adalah untuk menjalankan ls tetapi hanya tweak sedikit. Jadi, jika saya menaip ls melontarkan l-- itu adalah satu huruf kecil l-- mungkin Saya akan melihat sesuatu seperti ini. Ia kelihatan sedikit samar, tetapi bahagian yang kita benar-benar mengambil berat tentang adalah bahan yang di sebelah kiri di sana. Yang benar-benar menentukan skim kebenaran fail. Dan anda mungkin boleh memberitahu kerana ia adalah mendapat r ini, w, dan x berselang. Mereka three-- pertama mengabaikan yang pertama yang kedua, yang kami akan menggandakan kembali ke. Ketiga-tiga pertama selepas first-- supaya kedua, ketiga, dan watak-watak keempat itu rentetan 10 watak adalah kebenaran yang anda ada. Jadi nampaknya saya boleh membaca, menulis, dan melaksanakan PHP. Saya boleh membaca, menulis, dan melaksanakan PHP WebDev, dan saya boleh membaca dan menulis test.php. Kumpulan saya boleh melakukan ini. Jadi nampaknya dengan PHP dan direktori PHP WebDev, kumpulan saya boleh menulis kepada mereka, tetapi apa-apa lagi. Dan dunia ini tidak boleh berbuat apa-apa. Jadi fail-fail ini tidak diakses oleh orang awam dan jika saya cuba mengaksesnya dan saya tidak berjalan Apache membolehkan mereka dicapai, maka saya akan mendapat ralat 403. Ia adalah seorang yang gagal. Saya cuba untuk mencapai fail tetapi saya tidak mempunyai keizinan untuk melakukannya. Dan apa yang bahawa watak pertama? Nah, anda mungkin boleh membuat anggaran di sini bahawa d's merujuk kepada direktori dan melontarkan yang merujuk kepada apa yang dipanggil "fail biasa." Dan mungkin anda telah melihat ini apabila anda telah cuba untuk mengeluarkan fail menggunakan rm. Anda telah melihat mesej samar "mengeluarkan fail biasa" - dalam kes ini, ia akan menjadi test.php. Fail biasa sahaja sesuatu itu bukan direktori. Terdapat beberapa orang lain di sini, tetapi secara umumnya anda akan melihat d'kerana direktori dan tidak ada bagi elemen pertama. Tetapi itu benar-benar semua yang ada padanya. Anda boleh menyemak fail kebenaran menggunakan ls dash l, anda boleh menukar mereka menggunakan chmod. Dan, sudah tentu, gunakan these-- mengubah keizinan untuk menguatkuasakan ini paradigma MVC untuk melindungi data di laman web anda dan tidak membenarkan pengguna untuk mengakses segala-galanya, tetapi hanya barangan yang mereka perlukan untuk mengakses dalam usaha untuk laman anda untuk bekerja dengan cara yang anda mahu ia untuk bekerja. Saya Doug Lloyd. Ini adalah CS50.