>> Először áthidalni milyen lehet az egyetlen élmény
A webes programozás, amit gondoltam volna tennie, hogy lopni egy pár
A példa, amit Lehet, hogy látott 50
ha volt is a múltban vagy két év, vagy nem rendelkezik
ha volt, hogy néhány évvel ezelőtt
, amelyek a baba lépéseket a piridin ismert MBC,
Model View Controller, és mit jelent ez?
Ezt majd meglátjuk megint talán csak egy módja a kiindulási
hogy tisztítsák meg a tervezés néhány web-alapú szoftver,
vagy lehet kliens oldalon alapú is, de majd használni
összefüggésben a PHP-t, hogy mi lehet kezdeni
hogy a bonyolultabb projektek és sort
külön különböző típusú kódot a keresetet;
különösen így van, hogy amikor több ember dolgozik
a projekt, hogy ez egy nagyon könnyebb felhívni a sorok.
Tehát először vessünk egy nézd meg a szuboptimális módon
végrehajtási valamit.
Tegyük fel, hogy én akartam, hogy egy szuper egyszerű kurzus honlapján 50
vagy bármely más osztály, és hogy az osztály a dolgok
mint előadások és a tananyag.
Tudnék tenni valamit, mint egy H1 tag tetején oldalam
és egy rendezetlen lista li lista elemeket annak érdekében,
hogy csak egy felsorolás az menüpontok, így szuper egyszerű.
Szóval, hogyan lehet, hogy mi ez?
Nos, hadd menjen be a terminál ablak van,
és vegyük észre, hogy van egy olvasási én és mi hivatkoznak erre a kódot
A kurzus honlapján egy kicsit,
és vegyük észre, hogy kaptam index dot htm - index pont php.
Hadd megy előre, és nyissa meg hogy az, és persze elég, hogy ez a fajta
buta, hogy ez a még az úgynevezett php
mert minden van egy php megjegyzés
és minden más csak nyers html kódot.
De ismétlem ez a verzió nulla,
így a lépés valami sokkal érdekesebb,
de észre én hard kódolt CS50 mint a cím, CS50 a h1,
és most már a előadások hivatkoznak,
most már a tananyag kapcsolatot.
Rendben, hogy nem Úgy tűnik, minden ésszerűtlen
amíg el nem követ egy link, mint előadások, és rájössz,
Rendben van ez más tartalom, de ez a fajta
ugyanazt a dolgot; ez a cím A lap és a rendezetlen listát.
Rákattintok hét nulla a az elmúlt évben, és ez a fajta
az ugyanaz a dolog, H1 tag, és egy rendezetlen lista
majd végül kattintson ezt, és kapok néhány levél,
amely a diák az adott előadás.
Tehát valami azt súgja, Mindjárt megalázkodik.
Ha nyit előadások dot php értesítés
hogy ez nagyjából a másolás és be a korábbi file;
Most megváltozott a címet H1, és mik ezek a kapcsolatok.
Még ennél is rosszabb, ha elmegyek a hét nulla pont php,
ez ugyanaz a másolás beillesztés feladatot
csak egy kicsit tartalmat csípett.
Tehát biztosan van egy lehetőség van, hogy javítsa,
és biztosan ez egy jó ökölszabály;
bármikor úgy érzi, magát másolás
és beillesztés valamit több, mint talán egyszer,
vörös zászlókat kell remélhetőleg kezd kialszik.
De hogyan megy hogyan javítható ez?
Nos, van néhány módszer, és A technika segítségével
A php alakultak ki az , de próbáljuk meg ezt.
Hadd menjek be Version egyetlen, így a következő iteráció ezt,
és hadd próbálja tisztítsa meg egy kicsit.
Igaz, egy PHP legegyszerűbb mechanizmusok
A probléma megoldására az old school szükséges funkció
ami nagyjából nem másolat és beillesztés a tartalom
Néhány fájl itt, mint a C éles közé,
és más nyelvekre nagyon hasonló konstrukciók.
Így néz ki egy kicsit Furcsa most,
ez biztosan nem a teljes látszó weboldal,
de feltehetően mi belső fejléc dot php.
Az összes többi dolog, jobb, A html tag, a fej tag,
a cím, az összes cuccot amely felett volt a fő lényege
Az oldal, amely vitathatatlanul csak a rendezetlen lista,
és a lábléc valószínűleg mint a zárt body tag,
A zárt html a tag; elég érdektelen
de kettős dolog.
Rendben, és persze elég, ha elmegyek
a header dot php ez csak milyen az árva töredék
a felső, és ha bemegy lábléc dot php,
ez az árva fragmens az alsó,
és én vagyok a ugyanezen töredékek a másik kép,
mint előadások pont php.
Rendben, mi a jobb erről mondanál?
Igen?
>> Egyszerűség.
>> Egyszerűség?
Nem tudom, ez a fajta megjelenés sokkal félelmetesebb nekem, igaz?
>> Ha akartam változtatni a header, akkor nem lenne
hogy változtassa meg az összes korábbi, mint a fájlokat.
Csak változtatni a fejléc.
>> Pontosan, így talán Ilyen értelemben ez egyszerűbb,
talán azt keretbe, mint ez csak könnyebb frissíteni.
Ez talán egy kicsit tisztább
mert frissíti ez csak egy helyen.
Szóval ez elég kényszerítő; mi a hátránya
E megközelítés vagy milyen probléma továbbra is fennáll
hogy nem igazán megoldott?
Igen?
[Off Mic Megjegyzés]
Igen, pontosan, úgy értem, még a másolás és beillesztés;
ez egy kicsit kevésbé, de én csak húzta fel két ilyen fájlt,
és nagyjából még mindig látszott azonos.
Volt szükség a felső, előírják az alján,
és rendezetlen A középső listából
ami nem volt még Szerkezetileg ugyanaz.
Sőt, észre, ha valójában láthassuk a példát,
hadd menjen Version egyet,
és észre kaptam CS50 előadás tematikája.
Uh oh, CS50 hét Zero hét Egy és CS50 szerda péntek,
Már a fajta vágott egy sarokban.
Mi volt - mi volt ezeket a címeket korábban?
[Off Mic Megjegyzés]
Olyanok voltak, mint előadások Hét Zero, mintha ez a fajta
a szexisebb, és ez valóban volt némi dinamizmust is,
és ez a fajta - én csak egyfajta ladikozás már
és csak feltételezve, hogy Az egész honlap CS50
és jól működik, de biztosan nem olyan elegáns,
vagy a fajta egyenes továbbítja, mint valaha volt,
hanem, hogy van értelme, mert a ha megnézi index dot php
és előadások pont php és hét nulla pont php,
ők mind, beleértve a ugyanazt a fájlt,
Szóval hogyan lehet javítani ezen?
Mi a következő iteráció ezt a kódot valószínűleg fog csinálni?
[Off Mic Megjegyzés]
Igen, pontosan, így ha - és hadd foglaljam össze
A mi alapvetően akarjuk kell paraméterezni, hogy fejléc
úgy, hogy igen, van még egy hard kódolt h1 tag, de a dolgok
között, a nyílt és a szoros tag,
feltehetőleg dinamikus és jön valami más.
Lehet, hogy a "get string", vagy a dolog után kérdőjel
az URL-ben valahol mást, ezért vessünk egy pillantást.
Tehát, ha bemegyek Verzió kettő,
most már észre, hogy én már Van egy további fájlt,
úgy néz ki, mint a segítők pont php.
Nem igazán tudom, hol kezdődik, így fogom kezdeni, csak
az index, mint ahogy mindig is, és most észre, hogy ez egy kicsit más,
így kaptam a szükséges vezeték
a tetején igénylő segítők pont php,
de meg tudom nevezni amit akarok,
de most észre vonal három van egy függvényhívás
tétele fejléc, ami Érdekes csak annyiban
ahogy mi is telt el Úgy tűnik, az egyéni cím
mert az adott oldal.
Közben ott teszi lábléc alul,
és nem kell semmilyen paraméterezés van ez csak
a lábléc, de most úgy tűnik,
hogy egy lépés a jobb megoldás, render fejléc kerül,
és mit csinál a tér zárójelek számára
akik nem látták php valaha, vagy egy kicsit?
[Off Mic Megjegyzés]
Igen, ez egy tömb.
Ez egy asszociatív tömb, vagy a hash társulásának gombok
értékekkel; ez olyan, mint a Java Scripts, kifogást jelölés,
vagy más nyelven, hasonló syntaxs.
Rendben, akkor mi is A segítők pont php?
A segítők pont php ez csak egy pár funkciót,
teszi fejléc és lábléc teszi.
Tehát egy-két részletet ha a kevésbé ismert,
Tehát először is az a tény,
amelyek miatt header vesz adatok érv, hogy ez látszólag
hozzárendelve üres array ott mit jelent?
Mit jelent az, hogy nem egyenlők nyitó zárójel zárva tartó
paraméterként a php?
Ez az alapértelmezett érték.
Tehát, ha nem adja át a tömbben vagy érvelés nélkül
Az teszi fejléc vagy a vakolat lábléc funkció
Azt legalább a bizalom, mint a szerzője említett funkció
hogy az adatok minimálisan egy üres tömböt;
nem lesz definiált, vagy hamis, vagy valami ilyesmi,
lesz pontosan milyen Odaadtam az alapértelmezett.
Most ez egy kicsit egyfajta a Hackish a berakodás módja szimbólumok
be a névtér hogy úgy mondjam,
de működik elég jó felé ebből a célból
végrehajtási saját fajta szegény ember template engine.
Rendben, van egy csomó szerszámok odakinn a Python Ruby
és a php, hogy Önnek sablon képességek
és pontosan ez az, amit mi akarunk.
Szeretnénk egy sablont, hogy van egy h1 nyitott tag, H1 zárt tag,
és egyfajta helyen tartó a közepén,
és azt akarjuk, hogy töltse ki az helyre tulajdonosai útján ezt a funkciót,
így ez a funkció kivonat csak azért történik,
hogy megadja a következő képességeit.
Ha már van egy asszociatív A tömb kulcs érték párok
mint a foo értéke bar, kivonat létrehoz egy helyi változót
úgynevezett hatékonyan dollár jel foo és adja meg a értéket bar
így felrobban az asszociatív tömböt kulcs érték párok
új változók a megfelelő értékeket.
És akkor van szükség dot header dot php ugyanaz, mint korábban,
Tehát mi vagyunk valószínűleg lesz hogy belülről fejléc dot php?
Ez talán van az a h1 tag és a záró tag; mi folyik itt
hogy belsejébe valószínűleg közte?
[Off Mic Megjegyzés]
Pontosan, ott valószínűleg néhány említése dollárjel cím
és persze elég, ha nagyítani ez itt az én title tag,
ott van a H1 tag, és a belső Az ez egy dinamikus beillesztési
A dollárjel cím, de csak a jó intézkedés,
Én ezt html speciális díj atrociously neve
funkciót, de hasznos; mit csinál
vagy mit véd?
Ez valójában egy megoldást a fenyegetés akkor céloz;
akkor vezetett volna bennünket.
[Off Mic Megjegyzés]
Pontosan, így ha egy rosszindulatú felhasználó vagy a gyanútlan áldozat
Egy adathalász támadás kattintott egy linkre
hogy ön volt a kérdőjel és valami hasonló foo értéke,
és akkor az érték az ize valójában
mint a nyitó zárójel script, zárt konzol,
majd néhány JavaScript-kódot;
ha nem hívja ezt a Hosszú fő funkciója,
akkor valóban fertőző nyers html be a weboldal,
az eredménye, amely hogy lehet, hogy becsapott.
Lehet, hogy ha a megtévesztett felhasználó futtatását JavaScript kódot
hogy ő tette valójában nem áll szándékában.
És bár általában te csak fáj magad,
mintha csak tudod egy idióta fog típus
nyitott zárójel script, zárt konzol, és azt mondják, figyelmeztető
vagy valami ilyesmi és nem saját maga
a néhány furcsa eredmény, Ha nem kap becsapott
a hivatkozásra kattintva, amely nyers JavaScript ágyazott meg
az érték az, hogy a jellemző,
akkor többek között lopni valaki cookie-kat
mert van egy ingatlan nevezett dokumentum dot süti
JavaScript, amely lehetővé teszi megragad a felhasználó session cookie,
és ha arra, amit a munkamenet eltérítés támadás,
hosszú történet rövid, az egy módon valóban becsapó valaki
be így, hogy a virtuális pecsét, majd vesz
felett Facebook számla vagy valamilyen más típusú számla.
Rendben, ez a egy kicsit hosszú,
de ez csak a nyers html kódot.
Ez felel a hívó echo
vagy nyomtassa ki hatékonyan, és mi alapvetően behelyezése
hogy dinamikusan.
Tehát mi még itt marad?
Nos, hadd menjen Verzió Three itt
és majd meglátjuk egy kicsit más -
pontosan ugyanazt a fájlt elrendezés de értesítést
hogy ez alkalommal fogunk általánosítani a fejléc és a lábléc
sablonokat, akkor mi értek ez alatt?
Mi az az egy dolog hogy itt más a helyzet?
Mi változott azóta az utolsó változat?
Finom, de vitathatatlanul csak a jobb tisztább design.
Igen?
[Off Mic Megjegyzés]
Igen, van csak egy szabványos teszik funkció;
Én nem különleges eset teszi fejléc vagy lábléc teszi,
mindkettő, ha visszahívás segítők pont php,
vagyunk nagyjából azonos kivéve a nevüket
és a sablonokat ők is.
Miért nem csak paraméterezni a vakolatot funkció
és hogy egy érv, ami a nevét a sablon,
és a második, opcionális paraméterként , melyek a legfontosabb érték párok
kívánt dugja be
Tehát, ha most megnézzük segítők pont php értesítés
, hogy én vagyok, hogy egy kicsit cifrább most.
Én tényleg ellenőrzése nem a fájl létezik, és ha így megy előre,
és szüksége van rá; csak abban az esetben a felhasználó véletlenül típus
Néhány hamis sablon nevét nem akar dobni egy hiba
A programban így tudjuk minimálisan meg őket ebben a
előnyben van.
Rendben, de nem igaz ezt egy lépéssel tovább?
Ebben a verzióban itt értesítést a következő.
Én csak gépelt ls, és mi azonnal ugrik
ki, egy kicsit más.
Tehát van két könyvtár, jobb,
és így ez most egy lépés mi lesz végül egy
a megfelelő keretet.
Ez a fajta hanyag tőlem, hogy dobott minden
én tartalmat a belsejében a nyilvánosan elérhető könyvtárba
hogy a szó szoros értelmében az úgynevezett nyilvános.
És annak ellenére, hogy sajnos, Sok keretek,
régiek különösen és még néhány internetes hozzászólás,
Álom Host köztük erők meg, hogy az összes fájlt
az egyenértékű egy nyilvános könyvtár is
Ha a fájlok esetleg közé adatbázis jelszavakat
és a felhasználói neveket vagy más hasonló adatait,
ez egyáltalán nem jó design.
Sokkal jobb, csak fel
A nyilvános könyvtár amit feltétlenül van
hogy felhasználó által hozzáférhető, és minden mást
hogy te, beleértve a mint segítők pont php,
nincs oka, hogy kell a web elérhető a
böngésző URL.
Lehet, hogy teljesen ártalmatlan ha a felhasználó szeretné látni, talán
aki pár, de ez csak az elvet is,
és Isten ments, hogy valójában mire egy felhasználónevet és jelszót;
ha nem akarjuk, hogy a felhasználó véletlenül
vagy szándékosan, hogy tud hozzáférni.
Tehát nem vagyunk egészen egy tökéletes megközelítés van,
de értesítést a következő most.
Index dot php, észreveheti, hogy Még mindig szükség segítők,
de én csinálom, oly módon, , hogy én vagyok a fajta rendezhetnek
A fájlok része lesz
egy alkönyvtárba nevű hagyományos tartalmazza,
majd hívom teszi a fejléc és lábléc, mint korábban.
Így az egyetlen dolog, Tettem a fajta
A átszervezi a könyvtárak hogy egy kicsit anális
a fájl szerkezetét.
De ha most megy az ötödik példát,
észre, hogy itt most egy trió mappák,
és ez egy kicsit félrevezető abban a pillanatban
mivel az egyszerűség kedvéért kedvéért az osztály,
Épp most dobott mindent
a John Harvard Nyilvános könyvtár csak
így tudjuk navigálni keresztül egy böngésző, hanem felhívás -
figyelmen kívül hagyja ezt a részt egy pillanatra,
az a tény, hogy én vagyok ott.
Figyeljük meg, hogy van három alkönyvtár: nyilvános,
sablonokat, és magában.
Az ötlet most az, hogy a megfelelően konfigurált webszerver I
azt mondja Apache, hogy ez a honlap nyilvánosan hozzáférhető
fájlok itt, és sehol máshol.
Szóval mit fájl gondolsz Fogom látni belülről
nyilvános ha azt írja ls?
Mi legalább egy fájlt hogy talán van?
[Off Mic Megjegyzés]
Oké index dot php, és milyen fájlt nyilvánvalóan nem
ott többek között?
Mint segítők pont php, fejléc dot php, lábléc dot php;
az összes töredékek, az összes funkciót
, hogy nem igazán kell nyilvánosan hozzáférhető,
szükséges, hogy használható legyen A fájlok
, amely nyilvánosan hozzáférhető, de ők maguk,
Nem felhasználónak kell látni, vagy kórus egy URL-címet segítők pont php.
Vegyük észre, hogy ahelyett, hogy ha elmegyek
a magában van segítők pont php,
és ha bemegy sablonok,
van lábléc és header dot php.
Őszintén szólva, nem tudtam volna őket ugyanabban a könyvtárban,
de próbálok még többet anális megmarad kép
, amelyek csak egyfajta statikus sablonok különböző
funkcionális fájlok mint segítők pont php,
és én csak azért, hogy néhány meglehetősen gyakori egyezmények
hívja a könyvtárak tartalmaz és sablonok.
Tehát az egyetlen dolog, ami megváltozott, akkor ismét az út.
Ha megyünk itt észre hogy most csak
hogy tartalmazza a relatív könyvtár,
dot dot slash tartalmazza segítők pont php,
vagy én is egy kicsit megfelelő és valóban tenni valamit
mint ez, a PHP és sok
A nyelvben ezek a speciális szimbólumok
hogy képviselje a aktuális fájl könyvtár,
így aláhúzás aláhúzás dir aláhúzás aláhúzás jelöli
a könyvtárban az ezt a fájlt,
és így, ha csak összefűzni A pont operátor, hogy
lenne elérni ugyanazt az eredményt,
és inkább egy kicsit erős, mert akkor kap
a helyzet relatív könyvtárak is csak azt mondom dot
vagy dot dot is valójában hozza meg, hogy a rossz helyen,
így ez általában a egy kicsit erős.
Rendben, akkor mi bár továbbra is?
Mit is Nem tetszik ez?
Mi lehetne javítani, és kommentálta, hogy korábban azt hiszem
hogy van még néhány kérdést?
[Off Mic Megjegyzés]
Igen, biztosan nincs hogy kezdjük el írni, mint a telek
hogy néz ki, nem?
Ez nem érzi minden, ami sokkal jobb,
még mindig másol tészta.
Még mindig megvan a szükséges sort a tetején.
Még mindig teszi fejléc teszi lábléc.
Van egy csomó átfedések.
Igen?
[Off Mic Megjegyzés]
Igen, pontosan, ezért vettünk egy lépést felé a fajta felosztása
fel a "c" a "v", így MVC Model View Controller;
vezérlő sort a agyában az alkalmazást.
Modell hajlamos lesz az adatok vagy valamilyen közös funkciók,
és nézd bizonyul a esztétika, a sablon,
így már tett egy lépést szétválasztották a "c" a "v"
mert most legalább van ez a sablon könyvtár,
de még ott is alapvetően egy vezérlő egy fájlt.
Nem úgy néz ki, mintha ott sok logika folyik itt,
de index dot php gyakorlatilag egy vezérlő.
Amikor meglátogat egy URL-t, és végződő index dot php,
minden a logika végrehajtja ezt az oldal jobb
index dot php, és azonos előadások pont php.
Ugyanazon a héten nulla pont php.
Így már olyan strone a logika az egész hely,
és úgy érzi, mint ez nem megy
a skála nagyon jól, ha van nem négy, hanem negyven oldalt
ha minden oldalon kezdődik nekem másolása egy régebbi verzió
a fájl, és csak csípés néhány
A tartalmat a belsejében is.
Így már csak akkor veszi Egy lépés ez,
és az egyik az eszközöket fogjuk be
szerdán egy framer úgynevezett "Laravel"
és ez nagyon népszerű PHP keretrendszer,
más is szerepel a "Fuelphp."
Van egy régebbi úgynevezett "CodeIgniter."
Van egy úgynevezett "torta".
Van egy úgynevezett "szimfónia."
Úgy értem, ha a Google php keretrendszerek,
van egy kegyetlen száma, mint a keretek
hogy az emberek, hogy végre.
Laravel az egyik több és belépők;
ez az egyik, a tisztább is, és megtalálod
, hogy végső soron ez segít menteni egy kicsit
időt még akkor is egy kicsit a tanulási görbe,
de hogy mi fog irányítani akkor több mint szerdán.
Sőt, akkor be az úgynevezett a "ORM."
Ebben az esetben fogjuk használni valami, ami
ezt a keretet nevű Laravel.
Ezt hívják "Beszédes" és ez csak egy réteg kód
, amely lehetővé teszi, hogy többek között a dolog beszélni adatbázisok.
És itt is, hadd ellopni egy például azt, hogy az vagy friss
vagy a primitivizmus a néhányan 50.
Ha nem tart 50 és te "CS50 Finance,"
talán felidézni fájlokat írsz vagy Átírta úgy néz
mint ez, ez volt login dot php, és abban az időben,
különösen azért, mert nem töltenek sok időt
A php alapjait korán,
ez talán magának is meglehetősen nehéz,
és így tettük, sőt, próbálja meg, hogy egyszerűsítse a design.
Nem igazán külön "M" A "V" a "C", hogy sok minden
a problémák "Hét CS50 Finance,"
de észre az egyetlen dolog, hogy remélhetőleg kezdeni
hamarosan dörzsölje meg a rossz Így olyan, mint ez.
Úgy értem, nem csak ez volt be dot php a vezérlő.
Azt is beszél közvetlenül
az adatbázis külön a folytatást, ami nem megy
a skála nagyon jól, ha elkezd dolgozni egy
két vagy három partner.
Például, ha az egyik A partnerek a felelős
létrehozása a adatbázis táblákat, és jön
fel az indexek és kitalálni
, hogy mi a legfontosabb legyen, a elsődleges kulcs, az idegen kulcsokat,
és minden adott, döntés A táblázat nevét és az egésznek.
Most a másik személy A csoport tudnia kell az összes
A tervezési döntéseket ő vagy ő tette, és most meg kell
kemény code e határozatok be a fájlt, így most
vagy ő elég sok korlátozott
hogy soha többé nem változnak ezeket a tábla neveket.
Soha többé változtatni ezek benyújtott neveket
nélkül tájékoztat.
Sőt, akkor nem igazán egyszerűen működik ugyanazt a fájlt
ütközés nélkül egymással, ha ő
vagy ő folyamatosan változó nevek,
és még a régi változatok és így tovább,
így ez csak hívogató sok-sok fejfájást.
Sőt, amint azt majd lásd nemsokára,
annak ellenére, hogy nem kell
tenni, különösen bonyolult lekérdezések itt
ha egyszer elkezd miután több asztal, két asztal, három, öt,
Tíz táblázatok a MySQL vagy általában egy relációs adatbázis,
van, hogy csatlakozzon e táblázatok Gyakran, ha ismerős, és van
össze az adatokat az egyik a másikkal,
és őszintén szólva a folytatást lekérdezések kezdenek egyre hosszabb és hosszabb,
és hosszabb, és így tovább bonyolult, és ez csak elindul
, hogy sokkal könnyebb hibázni
és sokkal nehezebb a dolgok jobbra.
És így eszközök, mint a Sokatmondó és ORM megy
hogy segítsen nekünk modellezni az adatok és ez is hatékonyan fog
generálni a kódot, amit kell kezdeni lekérdezése adatbázisok
A kifinomultabb módon.
Tehát, ha van egy elsődleges kulcs ide és egy idegen kulcs
itt csak annyit kell tennie, hogy azt tanítják, hogy ORM,
Objektum kapcsolat Mapper, mi ez a kapcsolat
és ez lesz kitalálni, hogy mi lekérdezéseket, hogy végre az Ön számára.
És csak ritka esetben van szüksége
feltétlenül írni folytatást kódot magad.
Ha azt szeretné, hogy finomhangolása valamit,
de a legtöbb, akkor csak elkezd kezelő szervezetek
az adatbázisok valódi objektumok és nem ezek a lapos sorokat
, hogy valahogy meg kell rekonstruálni és de normalizálódik.