DOUG LLOYD: Kelkfoje kiam ni programado ni faras aferojn tiel komune, do ofte, kaj tial multaj homoj fari same idea-- aŭ la saman afero, ke ĝi havas nomon. MVC estas akurate unu tia afero. Ĝi nomiĝas programado paradigmo. Ĝi estas ia kiel bonaj praktikoj kiuj estis distilita malsupren de homoj provas fari ion. En tiu kazo, apliki sistemo de paĝoj ke uzanto interagas kun sur pli kompleksa retejo. Kaj ĝi estas farita tiel ofte ke ĝi estas rekomendita kiel normo ke aliaj homoj eble ŝatus sekvi, kaj tie estas tre specifan aron de manieroj ke oni povis sekvi tiun paradigmon. Do, MVC estas paradigma, kaj la kialo ni uzu ĝin estas abstrakta for detaloj de la uzanto. Iuj aferoj la uzanto ne vere bezonas vidi. Ili nur deziras havi bonan sperton de uzanto, kaj ni ne bezonas havi ilin aliri ĉiu unuopa dosiero, kiu ekzistas sur nia ttt-servilo, eble. Tie povus esti kelkaj dosieroj kiuj estas nur uzita por plifortigi la sperton de uzanto, kaj tiel ni povas abstraktajn tiuj for. Ni povas ordigi de kaŝi ilin tiel la uzanto ne povas labori kun ili, sed nia pages-- nia pages-- scias kiel trakti ilin kaj nomi ilin aŭ eble postulas, volas ilin, aŭ io simila. La primara motivado por MVC estas datumoj sekureco, ĉar MVC kutime venas supren en la kunteksto de laborante kun datumbazoj. Kaj precipe ni volas malhelpi uzantoj el rekte efikanta datumbazoj. Ni nur volas fari ĝin nerekte, tra nia filtración. Aŭ certigante ke ĉio estas en ordo per ni faras iomete de eraro kontrolanta aŭ sekureco proofing antaŭ ni sendi ĝin al la datumbazo, kie aferoj povus iri malbone, eble vere erara, se ni ne estas singarda. Do MVC staras por Modelo Montri Controller. Kion ĉiu el tiuj signifas? Esence, tiu modelo estas via datumbazo. Ĝi estas kie ĉiuj grava datumo por via retejo lives-- salutnomoj, ensalutoj, pasvortojn. Kaj vi povas ĝisdatigi ĝin, nomas ĝin, preskaux cxion tiel. Vi ŝatus konsulti datumbazon, bonvolu peti informoj el la datumbazo. Jen la model-- ĉiuj datumoj kie via retejo vivas. La vido estas ia kiel la uzanto sperto. Estas la paĝoj ili vidas post ili petis informon. Do eble ili prezenti ilia salutnomo information-- kiun ili farus en controlador, kio ni parolos pri en sekundo. Ili eble submeti siajn salutinformon, kaj la datumbazo estas konsulti. Informoj petas kaj tiris el la datumaro. Kaj tiam tuj la uzanto ensalutinta en, ili vidas sian ĉefpaĝon. Tio estas vido, OK? Kaj tiam la regilo estas kio estas vokis la negoco logiko de via retejo. Kaj negoco logiko estas unu el tiuj terminoj kiuj estas ia wishy-washy-- ŝatas, kion signifas negoco logiko signifas? Esence via negoco logiko estas via PHP. Via uzanto ne bezonas por rekte vidi via PHP, sed via PHP estas probable kio okazas esti farante petoj al la datumbazo. Do la uzanto volo enigo informo en vido, kiu integros controlador. Kiel, ili tajpas en formon. Nome, formo procezoj informo estas la regilo. Tio estas la PHP kiu fakte farante la peton al la modelo. Kaj tiam la modelo donas informon al la vido, kiu donas al la uzanto, eble plej bone bildigita kiel sekvas. Do jen ni estas. Jen ni sur la maldekstra, kaj nia modelo Montri Controller paradigmo aranĝon. Kiel ĝi funkcias? La user-- us-- faras peti al la regilo. Ni submetas informo kiel ekzemple per HTTP formo. Bazita sur tiu, la regilo la laborposteno estas fari certe ke kion la uzanto donis ne iu kiu damaĝus la modelo. Kaj tial la regilo tuj certigi ke estas en ordo. Ĝi tuj rigardi tre atente. Se estas eraroj, ĝi ĉesos aferoj Do la uzanto ne povas akiri al la modelo. Sed supozante ĉio OK kaj ĝi estas valida query, la regilo estos konsulti la model-- ĝi petos lin por havigi informon. La modelo provizos ke informo al paĝo kiu estas vido, gxi devos transdoni ĝin ke maniero, kaj tiam la vido popolos la informo petis de la modelo. Do, ekzemple, se ni parolas pri arbohakanta en via paĝo de Facebook, ekzemple. La vido estus la datumoj kiu eliris el la modelo kiu rilatas al viaj amikoj kaj novaĵojn nutri aŭ da tio, ĉu ne? Sed vi ne vidus alies. Vi estus getting-- tiel vi submetas konsulto, enŝalto al la model-- ekskuzo mi, vi aliĝu al la paĝo. La regilo uzoj via salutinformon fari peton al la modelo por fari certas ke vi estas kiu vi diras vin estas. La modelo estas kiel, okej, jes, vi estas kiu vi diras vin estas, tiom mi donos al vi vian datumstrion. Mi donos al vi la krudan datumon por via datumstrion al la vido, kaj tiam la vido faras belaj, procesas ŝin en maniero ke estas kutimitaj, montranta tiun informon al la uzanto. Rimarku la rilaton tio ne ekzistanta sur tiu diagramo. Mankas rekta ligo inter vi kaj la modelon. Ĉiam ĉi buffer de la regilon sur la eniga flanko kaj jen mia buffer de la vidi sur la eligo flanko. Eble vi estas bona persono, kaj do eble vi ne farus ajnan damaĝon al la modelo, sed eble vi ne estas. Aŭ eble tie estas iu kiu estas malica uzanto kiu farus eble volas damaĝi vian datumbazon, eble forviŝi ĉion de via datenbazo, kiu povus esti tre altekosta. Evidente, havi uzanto datumoj is-- ekzistas valoro al havanta uzanto datumoj. Kaj do se ni ne metas ĉi buffer zono inter la uzanto kaj la database-- la uzanto kaj la model-- aferoj eble ne iris tiel bone por ni. Kaj tial gravas havas tiun paradigmon kie la uzanto povas interagi kun la datumbazo, Certe, sed ili devas iri tra ni fari ĝin. Kaj tio estas esence la ideo kun MVC. Ĝi provas apliki datumoj sekureco. Ĝi provas protekti la modelo el preterintence aŭ intencite malicaj uzantoj. Do kio okazas kiam ni aplikas tiun paradigmon? Nu, ni disigi la datumojn postulata nia website-- la model-- el la logiko kiu implementa nia retejo la functionality-- la controller-- kaj el la simpla estetiko kaj paĝo ŝablonoj kiuj formas parton de nia uzanto experience-- la vido. Kion tio signifas? Nu, tio signifas ke vi povas fari rigardas videblaj al la uzanto. Vi povas kaŝi la modelo for. Kaj controllers-- la uzanto ne povas eble rekte manipuli. Ili ne bezonas aliri vian PHP-kodo. Ili nur bezonas vidi formo kie ili povas tajpi havajxoj en. Do eble la formo estas viditaj, la controlador estas la PHP kiu formo submetas al, la controlador faras informpeto al la modelo, la modelo donas pli informo al malsama vidpunkto ke vidigas informojn al vi. Viaj programoj povas aliri ĉiujn viajn negoco logiko, sed viaj uzantoj ne povas rekte aliri vian negocon logiko. Kaj unu aparte, eble, videbla ilustraĵo de ĉi Estas vi iam ricevis a 403 Malpermesita eraro. Ĉu vi iam iris al TTT paĝon kaj vidis 403 Malpermesita? Ĝi estas speco de kiel 404 Not Found. 403 Malpermesita signifas vi provis aliri artikolo, kiun vi ne havas aliron al. Eble ke loko estas uzante MVC disiĝo kaŝi for lia negoco logiko bezonas ekzisti sur la servilo por por la paĝo labori, sed ne volas vin rekte aliri ĝin. Do vi ekhavos 403 Malpermesita eraro. Kaj ĝi eĉ ne gravas se vi ensalutis. Neniu uzanto povas tuŝi tiun punkton PHP dosiero. Ili povas nur tuŝi ĉi tiu, kaj tiu one-- kiu povas touch-- eble povas interagi kun la ŝlosita-malsupren dosieron pli malrekte ol la uzanto. Do, oni foje vidas ĉi permesojn eraro, ĉi 403 Malpermesita. Kiel ni ŝanĝu permesojn tiel ke aĵoj povas aŭ ne povas vidi? Kiam ni fari tion ĉi tipe estas uzi Linuksa komando nomis chmod-- C-H-mod. Por fari tion, la formato estas sufiĉe simple-- chmod, permesojn, kaj kion ajn vi volas dosiero apliki tiun ŝanĝon al. Do, eble vi vidus ion kiel this-- chmod 600 helpers.php. Aŭ eble vi volus vidi this-- chmod alpago x kiu inkludas dosierujon. Estis tio signifas kvankam? Do, ekzistas du malsamaj manieroj ke permesoj estas kutime aplikita uzante chmod. La unua nomiĝas octal nombroj metodo. Tio kutime validas permesojn al tri malsamaj kategorioj de uzantoj samtempe. Do chmod 711 dosiero permesus vin la rajto legi, skribi, kaj ekzekuti via dosiero, permesus others-- specife via grupo kaj la world-- nur ekzekuti la dosieron. Tion ĉi tradukas. La unua numero tie estas kion vi povas fari, la dua numero estas kion via grupo povas fari, kaj la tria estas kion la mondo povas fari. Iu, kiu estas vizitanta vian paĝo, kiu estas la mondo. Kio estas tiuj nombroj fakte traduki al tamen? Do tiuj esence traduki ŝatas tion. Se la permeson estas nulo, nenio povas okazi. Se ĝi estas unu, vi povas ekzekuti la file-- se tio estas via permeso. Se ĝi estas du, vi povas skribi la dosieron sed vi povas fari nenion alian. Se ĝi estas tri, vi povas skribi kaj ekzekuti. Kaj tiel plu, kiel vi povas vidi. Kaj sep signifas vin povas fari ĉion. Do kial tiuj nomitaj octal nombroj? Nu, se vi opinias pri ĝi, jen kiel noes kaj yeses, kaj se ni pensas pri ili kiel ruĝaj kaj verdaj kestoj eble tio faras ĝin iom pli klara. Sed se ni pensas pri tiuj ruĝaj skatoloj kiel nuloj kaj la verda skatoloj kiel tiuj, tiuj estas fakte nur aroj de duumaj nombroj, dekstra? 000 tradukiĝas al dekuma 0; 001, dekuma 1; 010 estas dekuma 2, kaj tiel plu. Kaj do ni nomas tiujn octal nombroj ĉar Estas ok malsamaj ebloj. Estas ok malsamaj ciferoj se ni estas parolas tri bitojn de information-- la legado bito, la registran bita, kaj la ekzekuti iom. Do nun vi povas diri duuma, dekuma, deksesuma, okuma kaj. Do vi scipovas komuniki kun komputiloj en kvar malsamaj nombro sistemoj, tiel ke estas sufiĉe freŝa. Do, krom la octal permeson skemo, ekzistas ankaŭ la simbola permeson skemon, kiu estas iomete malsama kaj kutime estas uzata plej bone apliki aŭ forigi permeso trans la tabulo. Do chmod alpago x dosieron povus aldoni la dekstra ekzekuti al ĉiuj tri kategorioj de users-- mem, via grupo, kaj la mondo. Tio plie estas la aldono parton. La rajton ekzekuti, jen la x. Kaj la fakto ke ĝi aplikas al ĉiuj tri grupoj de uzantoj estus la de. Do this-- alpago x-- estas probable tuj esti ĝuste la sama kiel chmod 711 fajliloj, ĉar se vi reiros kaj rigardi la okuma nombro skemo, bonaj kaj jarsepoj doni nin la rajton ekzekuti dosieron. Do tiu estas probable la sama. Kaj vi povas uzi tiun referenco gvidas por kio la diversaj aferoj en la simbola chmod-ing strukturo estas. La verda erojn tie estus kie ĉiuj verdaj koloraj ekzemplo estis dua antaŭ. La blua estus la blua. La oranĝo estus la oranĝo. Do vi povas apliki tion al via grupo, al aliaj, al la uzanto, aŭ al ĉiuj. Vi povas doni ilin legi, skribi, kaj ekzekuti aliro, kaj vi povas aldoni aŭ forpreni aŭ atribui ĝuste aro de permesoj uzi ĉi tiu modelo. Kiel ni kontrolu kiom dosiero permeson skemo estas? Antaŭ ni ŝanĝas ĝin, ĝi estas verŝajne bonan al efektive scias kion la dosiero permesoj estas. Unu maniero fari tion estas kuri ls sed nur tweak ĝin iomete. Do se mi tajpas ls interfrapigos l-- jen minusklan l-- eble Mi vidas ion kiel tiu. Aspektas iomete kripta, sed la parto kiu ni vere zorgas pri estas la aĵoj sur la maldekstra tien. Ke reale Specifas dosiero permeson skemo. Kaj vi verŝajne povas diri ĉar estas akiris r a, w, kaj x-oj intermetita. Tiuj unuaj three-- ignorante la unua por sekundo, kio ni duobligi dorson al. Tiuj unuaj tri post la first-- do la dua, tria kaj kvara karakteroj de tiu 10 signoĉenon estas la permesojn kiuj vi havas. Do ŝajne mi povas legi, skribi, kaj ekzekuti PHP. Mi povas legi, skribi, kaj ekzekuti PHP WebDev, kaj mi povas legi kaj skribi test.php. Mia grupo povas fari tion. Do ŝajne kun la PHP kaj PHP WebDev dosierujoj, mia grupo povas skribi al ilin sed nenion alian. Kaj la mondo ne povas fari nenion. Tiuj dosieroj ne estas publike alirebla kaj se mi provus aliri ilin kaj mi ne kurante Apache fari ilin atingebla, tiam mi ricevus 403 eraro. Ĝi estas fiasko. Mi provis aliri dosieron sed mi ne havas permesojn por fari ĝin. Kaj kio estas tio unuan karakteron? Nu, vi versxajne povas extrapolar ĉi tie ke la D's rilati al dosierujoj kaj la haltostreko rilatas al tn "regulaj dosierojn." Kaj eble vi vidis tion kiam vi havas provis forigi dosieron per rm. Vi vidis la kamufla mesaĝon "Forigi regula dosiero" - en tiu kazo, Estus test.php. Regula dosiero estas nur io tio ne estas dosierujo. Estas paro de aliaj tie, sed ĝenerale vi estas tuj vidos d's por subdosierujoj kaj nenio por la unua elemento. Sed tio vere ĉiuj estas al ĝi. Vi povas kontroli dosiero permesojn uzante ls haltostreko l, vi povas ŝanĝi ilin uzante chmod. Kaj, kompreneble, uzi these-- ŝanĝi la permesojn observigi tiun MVC paradigmo por protekti la datumojn sur via retejo kaj ne permesos uzantoj aliri ĉio, sed nur la aĵoj kiujn ili bezonas aliri en ordo por via paĝo labori la vojo vi deziras ĝin funkcii. Mi Doug Lloyd. Jen CS50.