[Powered by Google Translate] [Week 8]
[David J Malan] [Harvard Universiteit]
[Hierdie is CS50.] [CS50.TV]
>> Welkom terug.
Dit is CS50, en dit is die begin van die week 8.
'N paar geleenthede hierdie week,
onder hulle praat hier, by watter kos sal bedien word.
Vir meer besonderhede check die skyfies wat aanlyn is.
En ook 'n ander geval hierdie week deur ons eie Thomas Carriero.
Hy is een van CS50 se voormalige hoof onderrig genote wat nou by Dropbox,
en hy is die man wat ons hooked up met die jy weet wat,
so as jy meer wil weet van daardie kop na hul gesprek vanmiddag vir Dropbox en nog baie meer.
CS50 middagete is hierdie Vrydag.
Doen by ons aansluit as jy in staat is om, 1:15, soos gewoonlik, op Fire and Ice.
>> En nou het ons duik in iets genaamd Seminare.
Ons CS50 Seminare, onthou, is hierdie opsionele klasse gelei deur die onderrig genote
en natuurlik assistente en vriende van die kursus,
mense van 'n groep op die kampus genoem ABCD, wat is 'n groep van
technophiles op die kampus, sowel as 'n groep met die naam HCS,
die Harvard Computer Society, voorgraadse studente wat insgelyks geïnteresseerd in rekenaar.
Hierdie jaar se rooster van seminare sluit seminare op Android en IOS en JavaScript
en PHP, Unix, Vim, en nog baie meer, so besef dat hierdie seminare kom.
As jy wil om te RSVP vir enige van hulle kop na die URL daar.
Ons sal dan die tye en plekke plaas op die kursus se webblad sodra dit gefinaliseer is.
Maar weet daar is 5 jaar se moeite werd van vorige seminare aanlyn beskikbaar,
baie van wat nog baie stroom in terme van tegnologie jy dalk
wil om te speel met jou finale projekte, sodat daar kop vir 'n paar beskikbare video's daarvan.
>> CSS, diegene van julle wat reeds vertroud is met CSS,
Wat is dit in 'n neutedop?
Wat is CSS?
Dit is Cascading Style Sheets, en wat beteken dit?
Wat beteken dit vir ons doen, CSS?
Alle reg, laat opwarm met 'n makliker een, HTML, HyperText Markup Language.
Wat beteken dit vir ons kan doen?
Enigeen by almal?
Dit is regtig ongemaklik om hierdie vrae te vra.
HTML, HyperText Markup Language.
Ja? Nie?
[Onhoorbaar student reaksie]
Goed, goed, dit stel ons in staat om te merk teks te vertoon in 'n webblaaier.
Dit is nie 'n programmeertaal.
Dit is inderdaad 'n opmaak taal, wat beteken dat dit die leser hoe om te vertoon opdrag
inligting, sodat die eenvoudigste inkarnasie van hierdie as ons gesien het
is iets super eenvoudig soos boldfacing, oop bracket b gesluit bracket sê
hierdie teks vet maak, en dit is eintlik net een van baie maniere
waarin ons dit kan doen, en inderdaad, hierdie dae 'n beter benadering
jou web bladsy, stylizing om dinge te maak vet en kursief
en gesentreer en geregverdig en dies meer, is nie gedoen nie alleen via HTML tags
maar eerder met 'n tegniek genaamd CSS, Cascading Style Sheets.
Dit is 'n taal op sigself.
Dit is ook nie 'n programmeertaal, maar-
almal, dit is Dan, wat hou by ons vandag.
'N paar tegniese probleme. Nie 'n probleem.
>> CSS stel ons in staat om 'n bladsy te stiliseren
deur die instelling van die sogenaamde eienskappe, so laat ons neem 'n blik op hierdie
deur middel van 'n paar basiese voorbeelde.
Laat my gaan vandag in die toestel.
Ek het die bron 8 Maandag directory in hier,
en ek gaan om te gaan na 'n gids met die naam van CSS waar ons 'n hele klomp
van lêers wag vir ons hier,
en ons het in hierdie gids, byvoorbeeld, search0.html van die laaste tyd.
Nou, onthou ons vertrek met search0 op hierdie nota
deur soort van die implementering van Google of eintlik net die front-end vir 'n week of so gelede,
en let op dat ons het 'n paar nuwe tags daar.
Ons het h1 vir 'n groot, vet opskrif,
vorm, wat ons toegelaat het om werklik 'n HTML-vorm vir die toevoer van die gebruiker.
Aksie, wat was die betekenis van 'n aksie attribuut
op die HTML-vorm tag?
Wat was die betekenis van hierdie aksie?
Ek sal net doen dit vandag.
Aksie is die bestemming waar die vorm gaan ingedien word.
Die feit dat sê action = "google.com / search"
beteken dat wanneer die gebruiker op die submit-knoppie of die ekwivalent
watter vorm velde wat hulle ingevul gaan word nie aan ons bediener gestuur
of ons toestel maar eerder om daardie spesifieke URL by Google.
En die metode wat dit gaan gebruik word genoem kry,
en kry, vir nou, is net 'n tegniek vir die inligting deurgee saam na 'n web-bediener
deur middel van die URL, so laat ons neem 'n vinnige blik op hoe dit werk.
>> Let daarop dat daar is 'n inset wie se naam is q
wie se soort teks en dan 'n tweede inset van die tipe '
waarvan die waarde is CS50 Soek, en inderdaad, as ons hierdie lêer oop te maak,
search0.html, dit is 'n super eenvoudige vorm,
en as ek soek vir iets soos rekenaarwetenskap
en dan druk Enter of kliek op CS50 Search
sien dat wat gebeur is buite om te Google
Ek het spesifiek op hierdie URL beland op die top,
google.com / search q =? rekenaar + wetenskap,
en rekenaarwetenskap is natuurlik wat ek getik.
Die + beteken net dat is waar 'n spasie karakter was,
en dit is gedoen deur die leser net om seker te maak dat daar geen
verwarring en wit spasie in die werklike URL.
En dan q, natuurlik, is die parameter naam.
Ons het nie gesien hoe ons, die programmeerder, kan eintlik toegang q nog.
Ons kan aanneem dat Google weet wat om te doen met dit hier,
maar ons sal daar vandag op die regte tyd.
>> Maar laat my toe om 'n blik plaas by search1.html,
wat lyk 'n bietjie anders, want ek het besluit dat hierdie vorm hier was net 'n bietjie lam.
Ek bedoel, dit is by die boonste linkerhoek.
Daar is regtig geen estetika, en so ek wil om dit te stileer
'n bietjie meer soos Google, wie se tuisblad, onthou,
selfs al is jy nie dit wat dikwels besoek, lyk vandag soos hierdie op Halloween.
As ons plaas weergawe 1 van hierdie lêer, soek 1.html oopmaak, het ek dit gesentreer.
Nog redelik lelik nie, maar ten minste nou het ek begin om die estetika van hierdie bladsy te beheer,
nie net die nasien daarvan.
Kom ons neem 'n blik op soek 1, en daar is regtig net een verskil hier,
wat kan spring uit by jou, of miskien nie,
maar wat is die een lyn of uit van die verskil?
>> Daar is hierdie styl kenmerk, so dit blyk dat in HTML
die meeste elemente, kan die meeste tags 'n styl kenmerk op hulle,
en binnekant van daardie styl kenmerk is 'n aangehaal string,
en dat aangehaal string CSS.
Jy kan cascading style sheet daar
deur dit as 'n eiendom se naam te spesifiseer
gevolg deur 'n dubbelpunt, gevolg deur 'n waarde.
Dit is 'n soort van 'n ongelukkige ontwerp-besluit 'n paar jaar gelede
dat CSS is 'n taal op sigself,
maar dit is sintakties baie verskil van HTML.
In hierdie geval, sien ons dat die binnekant van my webblad, wat geskryf is in HTML,
Ek het CSS binnekant van hierdie aanhalings, en die Konvensie vir CSS
is dat jy wat 'n eiendom, gevolg deur weer 'n kolon genoem word,
gevolg deur die waarde van daardie eiendom, dus is daar geen gelyke teken.
Daar is geen addisionele aanhalings.
Dit is net hierdie dubbelpunt geskei sleutel waardepaar,
en teks lyn doen presies wat dit sê.
Dit lijnt jy die teks in die liggaam van die bladsy, wat is regtig die guts van die bladsy,
in die middel.
>> Okay, die eindresultaat, om duidelik te wees, is dit.
Nie alles wat sexier, maar ten minste is dit gesentreer en 'n bietjie meer soos die ware Google.
Maar wat as ek plaas oopmaak weergawe 2 van hierdie
en wys hier onder om 'n nuwe tag altesaam?
Nou in die kop van my bladsy, wat voorheen het net wat tag
in alle vorige voorbeelde?
Dit moes net die titel.
'N Oomblik gelede het die kop tag kyk soos hierdie.
Nou in plaas dit het 'n styl tag binnekant van dit,
en dit ook, ek is jammer, lyk sintakties baie verskillende van HTML,
maar jy daaraan gewoond te raak, waardeur binnekant van die styl tag
Ek kan nou faktor wat 'n oomblik gelede
'n kenmerk van die styl kenmerk, en ek kan sit dit op die top van my bladsy.
>> Hoekom?
Wel, dit is 'n stap in die rigting van die skoonmaak dinge, net soos in die C-kode te skryf
sou ons soms skryf funksies faktor gemeenskaplike funksionaliteit.
Dit is net 'n bietjie skoner factoring te begin uit dinge soos die estetika
na 'n sentrale plek eerder as om dit alles deurspek regdeur jou HTML.
Dit beteken ook wat dit sê, selfs al is daar is 'n bietjie van die nuwe sintaksis.
Dit is hier om 'n keurder, en liggaam beteken net kies die liggaam element
en die volgende eienskappe toe te pas om dit te.
Wel, die eiendom is presies dieselfde.
Vir 'n goeie maatreël Ek het bygevoeg 'n kommapunt aan die einde,
wat geneig is om te wees konvensie, en ek het hierdie hele eiendom toegedraai
kode tussen krulhakies, want ek kan eintlik verskillende dinge hier.
Ek kon eintlik sê iets soos kleur: blou;
>> Nou dit is ook nie van plan om 'n stap in die rigting van enigiets alles wat mooier,
maar as ek nou terug gaan na die weergawe 2 het ten minste het ek nou die liggaam van my
bladsy se teks al die blou.
Die knoppie dieselfde bly, want dit is 'n inset. Dit is nie suiwer teks.
Maar alles wat teks, soos CS50 Search tot bo, is in werklikheid blou.
Weer, al het ons nou gedoen verwyder uit die liggaam tag, kennisgewing,
die styl kenmerk, en ons het ingereken dit hier.
Dit is nie 'n groot verbetering, maar as ons hierdie een stap verder neem
Let op wat ons kan doen in die derde weergawe hier.
>> In search3.html die webblad is byna identies
behalwe vir dit wat nuwe tag nou?
Link, so hierdie een is baie gepas nie genoem
omdat jy nie met 'n skakel in die sin van 'n klikbare skakel.
Nee, jy is soort van die doen van die ekwivalent van # sluit in C
waardeur die link tag met 'n href kenmerk
en 'n rel kenmerk sê gaan voort
en 'n afskrif plak die inhoud van 'n lêer genaamd search3.css reg hier, in wese.
Dit maak nie regtig doen nie, maar dit is die gees van dit.
Dit sê gaan oop lêer, search3.css,
en behandel dit asof die gebruiker ingetik dit reg hier in die kop van die bladsy
net soos ek gedoen het in die vorige voorbeeld.
Search3.css, intussen, is redelik eenvoudig.
Dit is regtig bevat presies wat was 'n oomblik gelede
in die styl tag, maar ek ingereken dit hier na sy eie lêer.
>> Selfs al het ons nie spandeer baie tyd in HTML of web ontwikkeling op alle
net intuïtief wat is die motivering, miskien, vir factoring uit
hierdie klein brokkie selfs van CSS in sy eie lêer
en dan dit met hierdie link tag hier?
[Onhoorbaar student reaksie]
Goed, dit is makliker om te lees in die sin dat jy jou CSS in 'n CSS-lêer.
Jy het jou HTML-kode in jou HTML-lêer, dus is dit meer leesbaar in daardie sin nie.
Wat anders kan wees dwingende? Ja.
[Onhoorbaar student reaksie]
Ja, so jy kan sluit dit baie keer, so nou het ons doen hierdie
basiese voorbeelde met individuele lêers, maar dink jy werklik jy maak
'n ware webwerf soos jy sal vir pset 7 of jou finale projek miskien,
en jy wil verskeie webblaaie te hê, is so seker algemeen op
die World Wide Web, en dit sou soort van kreupeles
om te kopieer en plak dieselfde blou kleur
en dieselfde teks in lyn sentrum in elke een van hierdie bladsye.
Inteendeel, dit maak meer sin om faktor, baie soos ons gedoen het in C
met die h-lêer, sit dit in 'n sentrale plek,
in hierdie geval search3.css, en dan toelaat dat enige lêer
in om jou webwerf te sluit in dat lêer deur middel van hierdie tag hier in lyn 16.
Soos gewoonlik die geval is, het ons begin met weergawe 0, watter soort van werke
maar is nie noodwendig die beste, en met elke stap,
soek 1, soek 2, en nou soek 3 het ons hierdie baba stappe geneem
na ontwerpe wat is 'n bietjie skoner en meer voorbereidende
vir meer komplekse bladsye wat ons kan doen in die pad af.
>> Laat my een laaste voorbeeld hier oop te maak net om te wys
'n selfs meer gestileerde bladsy, maar laat ons kyk na die HTML.
Dit is search4.html, en let op dat dit struktureel is amper dieselfde
behalwe vir die bekendstelling van 'n nuwe tag, DIV.
Div is 'n tag wat stel 'n afdeling van die bladsy.
Jy kan dink van hierdie as 'n onsigbare reghoek.
Dit skep soort van 'n strook van die gebied in die webblad
wat jy kan stiliseren alles op een slag.
Wat ek hier gedoen is, is soos volg.
Binnekant van my liggaam tag, wat is daar almal saam,
Ek sê 'n afdeling van die bladsy hier via lyne 45 deur 47,
en dit beteken in wese gee vir my 'n onsigbare reghoek langs die top van die bladsy.
Gee my dan 'n tweede reghoek, alhoewel onsigbaar, onder,
en identifiseer dit deur die naam inhoud, en dan laastens,
gee my 1/3 afdeling aan die onderkant van die bladsy
genoem ID.
Ons sal sien hoekom ek dit gedoen het in net 'n oomblik,
maar konseptueel Ek het 'n kop-afdeling.
Ek het 'n inhoud-afdeling, en ek het 'n footer afdeling van die bladsy
selfs al is dit net in opmaak.
Die gebruiker is nie van plan om 3 reghoeke om te sien,
maar soort van struktureel daar agter die skerms
hulle is eintlik teenwoordig.
>> Nou, wat omgee? Hoekom eintlik doen?
Alles anders op die bladsy is dieselfde as wat ons voorheen gesien het nie.
Hier is my vorm. Hier is my insette, my insette, 'n lyn breek en so meer.
Hier is 'n beeld, al is, so ons sal sien waar dit vandaan kom in net 'n oomblik.
Hier is 'n voet, wat is 'n nuwe, net omdat ek wou te voer
sommige meer inhoud.
As ons scroll up opmerk dat die ID van hierdie div kop.
Die ID van hierdie div inhoud, en die ID van hierdie een is footer.
En soos die naam aandui, wanneer jy 'n ID-attribuut
in HTML, moet dit per definisie identifiseer
een van die elemente, een van die tags in jou bladsy.
Die las is heeltemal op jou om te onthou dat jy 'n header ID reeds.
Jy het 'n footer. Jy het reeds 'n inhoud-ID.
Die rekenaar is nie van plan om uit te vind wat 'n beskikbare ID is vir jou,
sodat jy kan gee per ongeluk 2 tags 'n ID van die kop,
en dit sou net verkeerd wees.
>> Jy moet in gedagte te hou wat jy geskep het,
maar sodra jy dit gedoen het kennis wat ons hier doen.
Ek kan nou spesifiseer in my styl tag op die top
of gelykerwys in my CSS-lêer, as ek nog steeds met behulp van die weergawe,
# Header ek kan sê, en wat dit beteken, is dat alles wat tag
in hierdie webblad het 'n ID van die kop
en #, net deur menslike konvensie verteenwoordig ID.
Die skerp teken of hekje verteenwoordig ID.
Selected is die naam wat ek het dit.
Dit beteken dat hierdie CSS eiendom toe te pas
watter tag op hierdie bladsy 'n ID van die kop dra.
Dieselfde deal hier.
Dien hierdie eiendom, wat gebeur dieselfde te wees, aan enige element
wie se ID is inhoud, en dan af hier
sien ek het 'n bietjie Persoon met footer.
Enige element wie se ID is footer, waarvan daar kan net een per definisie,
gaan voort en maak sy lettergrootte kleiner,
sy font gewig vet, sy marge 20 pixels.
>> Wat beteken dit?
Dit is net 'n marge op die top, die onderkant, en die linker-en die reg.
Dit gee my 'n 20-pixel onsigbare marge rondom dit
net alles weg te stoot van dit 'n bietjie, net soos julle dit kan doen in Word,
Microsoft Word of bladsye of die wil.
En dan teks in lyn sentrum.
Kom ons sien die eind resultaat, en dan gaan ons terug tot die een oorblywende snippet van CSS.
Dit is weergawe 4, het ons vir die soektog voorbeelde, en dit is baie, baie sexier.
Nou, in regverdigheid, ek het net Googled "google font logo generator."
En dit het my toegelaat om 'n GIF, 'n beeld-formaat aan te bied, wat lyk soos dat daar te skep.
In feite, kan jy dit ook doen.
Ons het "google fonts logo generator."
>> Kom ons kyk of ons kan dit doen.
Okay, ek dink dit is die webwerf wat ek gebruik.
Ons kan sê Ec 10, byvoorbeeld, en hulle maak hul eie.
Jy kan speel met dit die hele dag lank en dan regs kliek op dit
en dan die werklike GIF, wat is al wat ek gedoen het.
En inderdaad, dit is die rede waarom in my HTML, onthou, hier
Ek het 'n beeld tag, wat ons kortliks verlede week gesien het
wie se bron is logo.gif.
En wat weer was die motivering vir die feit dat hierdie alt attribuut,
hierdie alternatiewe kenmerk?
Ja.
[Onhoorbaar student reaksie]
Goed, so 2 redes regtig, as die leser kan nie trek die beeld
want jy het 'n stadige netwerk verbinding, of die beeld is korrup
of iets soos dit ten minste die mens kan sien "CS50 soek,"
en dan ook vir toeganklikheid redes.
As jy 'n gebruiker wat blind is en is met behulp van 'n skermleser
en daarom kan natuurlik nie beelde wat hulle kan ten minste sien
hoor teks indien hul rekenaar praat dit aan hulle.
>> In die algemeen, is dit die beste praktyk wanneer dit kom by die toeganklikheid van bladsye
sodat selfs gebruikers in daardie situasie kan hoor of sien, om so te praat,
wat dit is wat op jou bladsy.
Daar is 'n ander ding wat ek het hier
wat is 'n bietjie interessant, en ons sal sien meer hieroor in probleem gestel 7
via een van die kortbroek gelei deur een van die onderrig-genote.
Maar # inhoud verwys na die tag
wie se ID is inhoud, maar dan is daar 'n spasie karakter, en dan is daar die woord insette.
Wel, wat is interessant oor CSS is dat jy kan
verwys na die tags in 'n bladsy soort hiërargies,
en wat hierdie brokkie CSS manier is om te vind die tag
wie se ID is inhoud, en dan pas die volgende eienskappe
aan al die inset tags wat afstammelinge van die inhoud,
dit is wat ingekeep binnekant van dit.
Inkeping, weer, is net belangrik om die rekenaar, nie na die mens nie,
maar deur die konvensie het ons streepje dinge as ons gaan dieper in 'n bladsy,
so dit beteken aansoek doen om 'n marge van 5 pixels aan enige inset element
wat is iewers in of geneste binnekant van
die element wie se ID inhoud.
>> Wat nie van toepassing?
Wel, daar is eintlik net hierdie 2 ouens hier.
Let op dat die binnekant van die vorm daar is 2 insette,
as daar is vir al hierdie voorbeelde.
Maar let op dat diegene wat 2 insette gebeur binne geneste,
hoewel 'n bietjie diep, 'n paar lae van inkeping,
binnekant van die tag wie se ID is die inhoud.
Wat beteken dit?
As ons na die leser hier kan jy ooit so iets sien
laat my zoom in dat daar 'n bietjie van die padding tussen die knoppie
en tussen die teks veld.
>> Laat my tydelik draai dit af.
Laat my gaan tot my CSS, en laat my voor en net gaan
verander hierdie marge van 5 pixels 0 pixels.
Laat my voort te gaan en dan die lêer stoor, gaan terug na die soek-enjin
en herlaai, en kyk na die middel van die bladsy.
Alles bymekaar gekom saamgepers, en toe ek die eerste keer geklopte hierdie voorbeeld
Ek het gedink dat kyk dom met die teks veld en dan die knoppie onmiddellik onder dit.
Ek wou pad dit 'n bietjie, sodat ek bekendgestel marges.
Wat sal ons doen nie in die lesing gaan deur middel van die paar dosyn
CSS eienskappe wat bestaan ​​nie, want, weer, daar is dinge soos lettergrootte,
font gewig, marge, teks sluit, en 'n paar dosyn ander,
en ons sal jou verwys in probleem gestel 7 aan verskeie tutoriale aanlyn
en verwysings wat u toelaat om hierdie dinge af te haal.
Maar wat is werklik belangrik is by die einde van die dag
>> is om te verstaan ​​hoe hierdie dinge toegepas word.
Weereens, as ons die styl tag binnekant van
kan gaan die keurders, die soort van identifiseerders wat spesifiseer
wie wil jy hierdie eienskappe toe te pas,
en dan kan jy die eienskappe as die sleutel waarde paar
geskei deur 'n dubbelpunt en wat op daardie datum geëindig het met 'n kommapunt,
of jy kan rip al wat uit en sit dit in 'n aparte CSS-lêer
op sigself.
Alle reg, enige vrae oor die konsepte
of die groot prentjie van CSS?
Jy sal weer te sien meer van dit in pset 7,
maar ons hou dit in die algemeen redelik eenvoudig.
Nie? Alles reg.
Dit is tyd vir 'n werklike programmeertaal,
en ons sal terug kom in die vorm van 'n voorbeeld om 'n bietjie van CSS.
PHP is eintlik 'n wonderlike toeganklike taal
in die sin dat dit is sintakties byna gelykstaande aan C.
Met ander woorde, as jy weet C, jy weet vir die grootste deel PHP,
ten minste sintakties, selfs al is daar 'n paar nuwe funksies
en 'n paar nuwe konsepte wat ons sal hê om na te kyk.
>> Maar vir die grootste deel, nou dat ons oorgang vanaf C na PHP
die meeste van die nuwe dinge is regtig in die groot prent,
hoe jy gebruik om 'n taal te program op die web, in teenstelling met
op die command line of in 'n flikkerende prompt as ons het tot dusver te doen.
Vir verwysing, veral met pset 7 en die finale projek af,
doen om voordeel te trek van hierdie URL hier as jy wil om te lees oor die formaliteite van PHP.
Dit is eintlik 'n gratis aanlyn-handboek effektief,
en jy sal ook vind dat wat is regtig mooi oor PHP
is dat daar honderde funksies wat kom met dit,
terwyl jy in C nie noodwendig toegang tot
meer funksies as in die wiskunde biblioteek, die CS50 biblioteek.
In PHP en het 'n baie van die moderne tale, Python en Ruby onder hulle,
kry jy toegang tot soveel meer funksies, wat beteken dat jy kry om te skryf
'n baie minder kode, want jy kan staan ​​op die skouers van ander mense
wat reeds geskryf is sekere dinge vir jou.
>> Kom ons neem 'n vinnige toer van die sintaksis van PHP en skryf dan 'n paar voorbeelde.
Wat is mooi oor PHP in die eerste plek
is daar is geen hooffunksie.
As jy wil om 'n program te skryf in PHP jy net begin skryf kode,
en jy hoef nie te bekommer oor die hoof.
Daar is geen int. Daar is geen terugkeer.
Daar is geen bevat SPASIES, argc wat nodig is wanneer jy die program skryf.
Eerder kan jy net begin kode skryf, en dit is in die deel
want PHP is wat genoem word 'n geïnterpreteer taal.
C is opgestel, en dit is saamgestel in die sin dat jy begin
met die bronkode, loop dit deur klang, wat is 'n vertaler,
en uiteindelik na 'n aantal stappe wat jy object code, 0'e en 1s.
PHP en Python en Ruby en Pearl en ander
is verskillende tipes van die tale in die sin dat jy dit nie stel nie.
Jy gaan nie van die bron-kode 0e en 1e.
Jy moet net hardloop die bronkode, en jy loop die bronkode
deur te skryf in 'n gewone teks lêer eindig. php in hierdie geval
in plaas van c, en wat die program nie op jou rekenaar
is dit interpreteer letterlik jou kode lyn reël vir reël.
>> Met ander woorde, eerder as om 'n program skryf en hardloop die program
jy direk in plaas skryf 'n program met 'n lêer wat eindig in. php.
Dan moet jy loop 'n werklike program genaamd php.exe, as jy op Windows,
of net PHP as jy op Mac OS of Linux,
en gee jou as inset tot die PHP-program jou eie bronkode,
en sy doel in die lewe is om jou kode bo na onder, links na regs te lees,
en doen alles wat jy vertel het om dit te doen.
>> Kom ons kyk wat dit gaan sintakties beteken.
In PHP ons voorwaardes.
Hierdie dia is identies aan wat jy gesien het, terug in week 1
omdat sintakties voorwaardes, ifs en anders ifs en anders in PHP
lyk presies soos hierdie.
Wanneer dit kom by Boolse uitdrukkings hulle gaan om presies te lyk soos hierdie.
Wanneer dit kom by die anding dinge saam as boolse dit gaan om presies te lyk soos hierdie.
Skakelaars dieselfde lyk, en jy kry die bykomende voordeel in PHP
dat skakelaars in C kan slegs op 'n kar of 'n int skakel.
Jy kan nie oorskakel op 'n string waarde.
In PHP jy kan eintlik 'n uitdrukking
dit is 'n veranderlike waarvan die inhoud is 'n string,
en jy kan eintlik doen string vergelyking in die werklike intuïtiewe manier,
nie wyser vergelyking, ten einde te besluit of die saak te doen i of j of iets anders.
Ons sal sien wat potensieel voor lank.
>> Loops te wonderlik is dieselfde.
Vir loops 'n inisialisering, 'n voorwaarde, en 'n paar van updates.
Terwyl loops ook bestaan ​​in PHP.
Doen terwyl loops ook bestaan ​​in PHP,
en skikkings bestaan ​​in PHP, maar hier is waar die sintaksis begin om te kry 'n bietjie anders,
maar die konsepte is dieselfde, en die begrippe werklik is dieselfde
soos hulle was in Week 0 met Scratch.
Die eerste plek is die $ teken.
Dit was 'n ontwerp-besluit in PHP waardeur enige veranderlike
deur ontwerp in PHP begin met $ teken.
Daar is nie meer X, Y, Z Dis nou $ X, $ Y, $ Z net omdat.
Dit is iets om in gedagte te hou, en nou op die regterkant
dit lyk soortgelyk aan 'n skikking,
maar ons gebruik vierkantige hakies hier.
In PHP en in JavaScript, soos ons sal uiteindelik sien,
'n skikking wat jy doen plein bracket en gesluit vierkante bracket te verklaar,
en dan moet jy 'n deur kommas geskei lys van waardes, of ints
of stringe of karakters, wat jy wil, binnekant van daardie uitdrukking daar.
>> Nou, hoe het ons doen iets soos hierdie in C?
Wat was die sintaksis vir staties waarby 'n verskeidenheid van bekende nommers?
Kode tussen krulhakies, Dit was so 'n klein verskil hier, maar in beide PHP
en uiteindelik JavaScript dit gebruik net tussen vierkantige hakies, so werklik
die enigste interessante detail hier is die $ teken vir die veranderlike naam
en ook die vierkantige hakies, en daar is 'n snaakse ding
wat sowel op die linkerkant van die = teken weggelaat.
Wat ontbreek wat ons het is wat vir weke nou? Ja.
[Onhoorbaar student reaksie]
Die grootte, dus is daar geen melding van die grootte van die skikking.
Om eerlik te wees, is daar geen melding van vierkantige hakies aan die linkerkant
van die = teken, en wat anders ontbreek van die lyn?
Ja >> [onhoorbaar student antwoord].
Die tipe, so wat is interessant in die besonder oor PHP
is dat dit nie is 'n sterk getikte taal as C is,
en dit is sterk in die sin dat jy moet sê char getik,
moet jy int sê, moet jy sê float.
>> Wanneer jy wil 'n veranderlike wat jy het geratel te vertel wat sy soort is.
PHP is 'n bietjie luier.
Dit is losweg getik in die sin dat
jy kan dryf en karakters en stringe
EN SY en so meer, maar die taal self
nie regtig omgee wat jy binnekant van 'n veranderlike.
Jy het dit nie vooraf in te lig watter datatipe
gaan in 'n veranderlike.
Dit is heeltemal aan jou, so dit is lekker
in die sin dat jy hoef nie te veel bekommerd wees oor die data te tik
en bekommer wat jou argumente is en so meer.
Dit beteken ook uiteindelik funksies in PHP gaan in staat wees om terug te keer
óf 'n int meeste van die tyd, en miskien een keer in 'n rukkie
hulle sal terugkeer 'n Bool, 'n boolean vals, byvoorbeeld, om aan te dui dat iets verkeerd geloop het.
Dit gee ons sommige upsides, maar dit sal ook maak ons ​​soort van ontwerp
'n bietjie luier wanneer dit kom by data tik.
>> Wat anders is daar om te hou in gedagte hier?
Veranderlikes lyk baie graag, so $ s = "hello, wêreld."
Dit is miskien inferable van die vorige voorbeeld,
en ons het 'n ander tipe van die lus.
Hierdie een sal ons eintlik een keer te sien in 'n tyd, want dit is baie handig,
'n foreach bou.
In hierdie geval, die foreach lus neem binnekant van sy hakies 3 woorde tipies,
$ Iets eerste, en dit is wat array doen wat jy wil om te itereer oor die lede van
dan letterlik die trefwoord as, en dan laastens,
'n ander veranderlike naam wat jy kry om te kies.
Dit kan wees foo, bar, of element,
en wat hierdie konstruk doen
is as die $ array bevat 10 elemente
op elke iterasie van hierdie array-jammer, op elke iterasie van hierdie lus
die veranderlike genaamd element gaan word opgedateer
na die eerste element in die skikking, dan is die tweede element in die skikking te wees,
dan die derde element van die skikking, en daardeur die wegneem van die behoefte
die effens irriterende vierkante hakienotasie te doen en
$ I ten einde na die indeks in 'n skikking.
PHP doen al daardie werk vir jou en op elke iterasie
oorhandig jy net die volgende element van die skikking
sonder dat jy om te weet oor of sorg oor die numeriese indeks plek.
>> En dan laastens, vir nou, daar is 'n ander kenmerk van PHP
wat gaan uiters nuttig wees, veral wanneer ons begin programmering op die web,
en dit is bekend as 'n associatieve array.
Die skikkings wat ons tot dusver weet van 20 sekondes gelede
en vir die afgelope 8 weke numeries geïndekseer skikkings,
soort van tradisionele skikkings waar die indekse is ints,
0, 1, 2, al die pad op tot.
Assosiatiewe skikkings is 'n baie meer kragtig.
Hulle toelaat dat jy 'n arbitrêre sleutels te hê,
arbitrêre indekse en arbitrêre waardes.
AANGESIEN dit in 'n tradisionele skikking dit is 0, 1, 2,
in 'n assosiatiewe skikking kan jy 'n indeks
of 'n sleutel van foo wie se waarde is bar.
Jy kan dan 'n ander sleutel wie se naam is Baz en wie se waarde is qux.
>> Weer, dom rekenaar wetenskap generiese veranderlike name hier,
maar die punt is dat die skikking nie bracket 0 of bracket 1.
Dit plaas gaan bracket foo en bracket Baz te hê.
Dit is 'n baie meer veelsydig is in die sin dat ons gaan om in staat wees om te assosieer
woorde met ander woorde, sleutels met waardes heeltemal arbitrêr,
en ons gaan in staat wees om hierdie waardes terug te kry in konstante tyd
want onder die kap wat 'n associatieve array
regtig is 'n hash tafel.
Onthou dat 'n hash tafel laat jou toe om te sit in sommige insette
graag in die woord Dawid as jy wil om Dawid te voeg in 'n soort van 'n woordeboek,
en dan kry jy 'n waarde tipies terug.
In die geval van speller, waar of vals is.
Dawid of wat ookal woord is of is nie in die woordeboek.
'N associatieve array is regtig net 'n hash tafel,
maar dit is 'n baie meer gebruikers vriendelik inkarnasie van.
Soos ons sal sien, gaan dit toe te laat ons 'n paar dinge om te doen
baie, baie maklik.
>> Kom ons neem 'n blik op 'n paar basiese PHP
voorbeelde en kyk wat ons kan doen met hierdie taal.
Laat my voort te gaan en maak vandag in ons bron directory
n lêer genaamd hello1.php.
Hierdie lêer is meer kommentaar as dit is 'n werklike kode,
so laat my eintlik al die kommentaar verwyder uit die lêer
en die hede jy miskien die eenvoudigste PHP program hier.
5 lyne, en sommige van hulle is wit spasie,
so 'n paar belangrike verskille opmerk hier.
Die lêer genoem hello1.php.
Die heel eerste lyn, al is, <? Php.
Similar in die gees na HTML,
dat die volgorde van die karakters vertel die rekenaar
"Hey, rekenaar, hier kom 'n program wat ons in PHP."
Dit maak seker dat dit nie verwar dat dit is 'n ander taal.
Lyn 2 is 'n interessante wit spasie.
Lyn 3 is ons ou vriend printf,
hierdie keer in die konteks van PHP.
PHP het sy eie weergawe van printf wat presies dieselfde optree,
So dit is net gaan om te druk "Hello, world."
En dan hierdie teenoorgestelde tag hier,>, beteken dat dit vir my PHP-kode.
>> Kom ons kyk hoe om dit uit te voer.
Ek gaan om terug te gaan na my terminale venster.
Ek gaan om te gaan in my PHP gids.
Let op dat ons het 'n hele klomp van lêers, die eerste een wat hello.php.
Laat my voort te gaan en uit te voer, hello1.php, tik.
Toestemming geweier. Okay.
Hoe het ons vasgestel dinge soos hierdie in die verlede?
Wat is dit >> [onhoorbaar student reaksie]?
Ons nodig het lees en skryf, maar laat my doen ls-l.
Onthou hierdie ietwat kripties uitset waardeur hello1
blyk te wees leesbaar en skryfbaar nie deur my
maar leesbaar is deur almal anders.
Dit blyk dit is eintlik nie 'n stap in die regte rigting.
Die verskil is weer met 'n geïnterpreteer taal
is jy loop nie die program direk.
Jy hardloop in plaas van 'n tolk en handig dit die kode
wat jy geskryf het sodat dit kan interpreteer dit reël vir reël.
In hierdie geval, die tolk of program wat ek eintlik wil uit te voer
genoem is letterlik PHP.
>> Iewers op hierdie hardeskyf van die toestel daar is 'n program
iemand anders geskryf genaamd PHP, of op Windows php.exe.
Wat ek gaan doen is ek gaan eintlik loop PHP
maar gee dit as 'n command line argument die kode wat ek geskryf het,
en dan sal ek zoom uit en druk Enter.
Dit loop my program vir my, van bo na onder, links na regs.
Laat my voort te gaan en maak 'n effense afwyking van hierdie.
In hello2.php kennisgewing dat dit ook
is meestal kommentaar, so laat my ontslae te raak van die mense as 'n afleiding,
en wat is nou duidelik anders oor hierdie lêer?
Daar is hierdie nuwe lyn, ietwat kripties aan die bokant.
Dit is in lyn 1 #! / Bin / PHP.
Bin is 'n konvensie op Linux en Mac OS vir binaries,
/ bin beteken dit is 'n gids met 'n klomp van die binaries
wat is geprogrammeer, waarvan een is PHP.
Die #! is die bynaam kaboedel,
wat is die vinnige manier om dit te sê, en wat dit beteken
is dat wanneer jy hierdie program nou daar is 'n wenk aan die top van die lêer
wat vertel die rekenaar wat die tolk te gebruik.
>> Dit raak 'n bietjie irriterend as jy moes jou gebruikers en jou kliënte te vertel
"Hey, ons hierdie program genaamd hello1.php geskryf het."
Al wat jy hoef te doen, is vir ewig loop PHP en dan die naam van hierdie program.
Om eerlik te wees, dit sou net lekkerder te voer hello1.php,
en inderdaad, kan ons as ons doen die volgende.
Laat my gaan voort en doen ls-l, en kennis in hello2 dit is net nog lees, skryf
en lees dan gelees, so ek kan nog nie dit doen, hello2.php.
Maar ons het hierdie ooit so kortliks die laaste keer, die chmod opdrag.
As ek dit doen chmod a + x, wat beteken dat alle plus executability,
en dan hello2.php en dan ls-l Let weer op wat verander het.
Een, is Linux wys my die lêernaam in die groen om die idee oor te dra
dat dit uitvoerbaar, maar meer belangrik, op die linkerkant
sien dat die bietjie wat x uitvoerbare nou.
Wat dit nou beteken, is ek ./hello2.php kan hardloop soos gewoonlik,
druk Enter, en as gevolg van die kaboedel op die top van die lêer
wat is 'n wenk, weer, na Linux wat sê
gebruik hierdie tolk om hierdie lêer uit te voer.
Moenie bekommerd wees oor te dwing om die gebruiker om werklik te tik dit.
>> En wat lekker is, is nou dit is soort van irrelevant vir my kliënte of my vriende
die taal wat ek geskryf het hierdie program in, so ek kan voortgaan met mv
en die naam van hierdie ding om te hello2, byvoorbeeld.
En as ek nou doen ./hello2
en uit te zoem my program gaan voort om te hardloop.
Hierdie lêer uitbreidings is 'n menslike konvensie wat nodig is
vir iets soos geratel en maak wat vir hulle kyk.
Maar vir PHP, kan ek hierdie lêer uitbreiding enigiets wat ek wil noem.
Ek kon die wêreld mislei om te dink dat ek regtig 'n goeie by Ruby,
en ek kon skryf hello2.rb en dan die uitvoering van hierdie,
en voila, nou het ek die Ruby-weergawe, wat is 'n volledige leuen.
Maar die lêer uitbreidings is betekenisloos
As die lêer is uitvoerbare en het hierdie spesiale wenk op die top van die lêer.
>> Nou, as 'n eenkant, laat ek jou wys jy vinnig weergawe 3,
wat is 'n soort van 'n nuttige truuk om te weet.
In hello3 het ek iets verkeerd gedoen het
dat ek sal werk om die bronkode aanlyn.
In weergawe 3 blyk dit dat op die meeste Linux-rekenaars
daar is 'n program genaamd env vir die omgewing,
en wat jy hier kan doen is as jy het geen idee waar PHP
op die plaaslike hardeskyf geïnstalleer word nie, want dit kan wissel op grond van die rekenaar
dat iemand gebruik, env sê net loop env,
wat is op die meeste stelsels, en uitvind waar PHP is.
Net 'n gemeenskaplike truuk, sodat jy nie hoef te bekommer oor om uit te vind waar 'n program is.
Maar as jy nie versigtig om uit te vind waar 'n program is en jy nie versorg tot dusver
jy kan gebruik om die wat opdrag.
>> Laat my uitzoomen en tipe wat php,
en let op dit vertel my dit is eintlik in usr / bin / PHP.
Dit is soort van 'n leuen. Dit is ook in die bin.
Dit is net wat my die eerste treffer.
As jy al ooit gewonder waar klang, klang, dit is in usr / bin / klang,
wat maak, usr / bin / maak, en wat dit beteken is al hierdie tyd
jy kon gewees het tik usr / bin / kletteren betree kletteren uit te voer,
maar dit is soort van saai dit te doen, sodat sommige dopgehou
soos usr / bin en bin word aanvaar dat die verstek
sodat die rekenaar weet om te kyk in dit vir jou.
Enige vrae oor die skryf van 'n super, super eenvoudige Hello World program
in PHP en dan loop dit?
Want nou sal ons begin meer dwingende sintaksis te stel.
Alle reg, hier gaan ons.
Hierdie programme het ons eintlik almal van hulle voor gesien.
>> As ek oop te maak, byvoorbeeld, laat ons doen beer1.php,
ons sal nie deur middel van verskeie weergawes van hierdie, maar wat ek gedoen het
het ek gaan sit en gooi dit of omgeskakel
my C-kode PHP-kode hier.
Die meeste van die top van die lêer is kommentaar hier.
Dit blyk uit daar is 'n nuwe funksie wat ons moet genoem read line.
GetString, onthou, van Week 0 af was 'n CS50 ding.
PHP kom met sy eie gebruikers-vriendelike funksie genoem read line
1 argument wat spesifiseer die vinnige
wat jy wil om te wys aan die gebruiker, en wat read line doen
is dit terug wat die gebruiker tipes.
In hierdie geval, ek verklaar 'n veranderlike genaamd $ n.
Ek stoor in die terugkeer waarde van read line
nadat waarna die gebruiker met hierdie string.
Net om te back-up, om werklik te loop hierdie ding, laat my gaan voort
en hardloop php beer1.php.
Hoeveel bottels sal daar wees? Laat ons net 2 hierdie tyd.
Enter. Dis al.
>> Die program is funksioneel identies aan die C-weergawe van weke gelede.
Maar sintakties laat ons sien wat anders is.
Nadat ek kry 'n int van die gebruiker kennisgewing dat ek 'n paar foutopsporing ek doen,
en as n minder as 1 Ek stop en ek druk
'n jammer boodskap aan die gebruiker en uitgang met 1.
Dit is ook 'n bietjie anders.
In C wat het ons te doen? In C is ons terug 1.
In PHP jy die uitgang met 1, wat eerlik is Ek dink 'n bietjie meer intuïtief
omdat jy letterlik die verlaat van die program.
Alles reg, en dan af hier om die irriterende liedjie is identies sintakties
behalwe vir die veranderlike, so af hier in die lyn 24 en verder
let my lus is amper dieselfde,
maar ek het $ in die voorkant van i en n
en wat ook ontbreek in lyn 26 wat ons gehad het in die verlede
wanneer 'n veranderlike i verklaar?
Daar is geen tipe.
Dit is verkeerd om te sê in PHP int.
Jy moet net nie wat om te doen.
Die rekenaar, die tolk PHP is slim genoeg om te besef
dat as jy 'n nommer in die $ ek dit sal hanteer dit
as 'n nommer vir jou.
En dan af hier is ons plug in $ i, $ i, $ i - 1.
Al wat dieselfde is, en dan af ons doen hier 'n "Sjoe, dit is irriterende" printf
en dan verlaat (0).
>> Weereens, die afhaal hier is dat alhoewel ons gaan om relatief spandeer
min tyd oor PHP, seker teenoor wat ons gedoen het op die C,
dit is amper dieselfde, en so wat ons sal vandag en volgende week doen
en verder is fokus regtig op 'n paar van die nuwe idees.
Net om te sien dat 'n ander ding nie vertaal van C,
dit was 'n super eenvoudige program wat ons gedoen het in Week 1
of 2 wat in blokkies gesny 'n waarde.
Maar wat was interessant aan die tyd oor hierdie program is dat dit
lei die idee van 'n persoonlike skriftelike funksie wat ons geskryf het.
Die sintaksis in PHP is byna dieselfde.
Hier is my program tot bo.
Let weer afwesig is enige idee van die belangrikste.
Ek begin skryf kode, en dit is wat gaan uitgevoer deur die tolk te kry.
Ek druk x is nou 2, vermoedelik.
Toe het ek beweer cubing ...
Dan roep ek die kubus funksie en slaag in $ x
en die toeken van die terugkeer waarde tot $ x.
Toe het ek beweer dat dit in blokkies gesny, en dan sê ek dit, wat hopelik
sal sê x is nou 8.
Die sintaksis vir die funksie in PHP is ooit so effens anders.
Weer ontbreek, is die terugkeer tipe.
Weer ontbreek, is die terugstuur tipe en het ook ontbreek is wat ander tipe?
[Onhoorbaar student reaksie]
Wel, okay, dis goed so. Kom ons kom terug na wat in 'n tweede.
>> Ons het nie, byvoorbeeld, hier int.
Ons nie, byvoorbeeld, hier, want weer int, in PHP
jy moet net nie en moet dit nie doen nie,
maar eerder daar is hierdie nuwe sleutelwoord genoem funksie.
In PHP dit is amper 'n bietjie duideliker, want wanneer jy wil 'n funksie
sê jy letterlik funksie, jy gee dit 'n naam en dan 'n komma geskei lys
indien enige van sy argumente.
Geen nietig of iets soos dit nodig om te sê, en dan opbrengs is dieselfde,
$ * $ * $ A.
Wat ook ontbreek? Sammy wys dit uit hier.
Op die top van die lêer heeltemal afwesig is in PHP is ook 'n prototipe.
Dit is ook deur die ontwerp.
Tale en tolke soos PHP is slimmer as C ooit was
in samestellers soos kletteren.
>> Onthou dat klang, as jy nie vertel dat kubus bestaan,
as jy nie vertel wat printf bestaan ​​soos met 'n prototipe
of met 'n # include, wel, was dit aan die gang te gil op jou, en selfs nie jou kode stel.
PHP en meer moderne tale is 'n baie slimmer wanneer dit kom by hierdie.
Hulle sal dit op hulself te lees deur al jou kode
en dan skree jy slegs indien dit vind kubus nêrens.
Dit maak nie saak as die kubus is aan die onderkant of die top of selfs in 'n aparte lêer.
PHP en soortgelyke tale is nou slim genoeg om vorentoe te kyk
alles voordat jy as 'n fout gemaak geagte.
Waar laat dit ons?
>> Kom ons doen 'n laaste voorbeeld hier in die voorwaardes,
en as ek oopmaak conditions2.php kennisgewing te
hier sintaks is byna dieselfde.
Ek gebruik read line in plaas van GetString, maar daardie lyn is dieselfde as voorheen,
"Ek wil graag 'n heelgetal asseblief."
Ek het toe 'n indien toestand, anders as, en dan 'n ander,
maar funksioneel hierdie program is ook identies aan wat ons gedoen het weke gelede,
so as ek hardloop hierdie ding, php van conditions2,
en ek gee dit 'n getal soos 23 -
Ek pluk 'n positiewe getal. As ek gee dit -1 ek opgetel het 'n negatiewe getal.
As ek gee dit 0 Ek inderdaad opgetel 0.
So, wat omgee oor al hierdie dinge?
Wel, een van die die prettige soort van oefeninge hier
vir my ten minste was om terug te gaan en kyk hoe vinnig ek kon pset 5 implementeer,
die spelfoute pset.
Onthou dat daar was hierdie lêer genaamd speller.c,
en daar was n lêer genaamd dictionary.c.
Wat ek gedoen het, was ek soort van 'n paar minute spandeer en ek die C-kode omgeskakel
PHP-kode, en ons sal nie spandeer baie tyd op speller
want net soos in pset 5 het jy nie regtig nodig het om te
spandeer baie tyd op die speller self omdat jou aandag was op die woordeboek.
>> Is dit voldoende om te sê dat as jy lees deur speller,
hierdie lêer hier, dit is pretty much gelykstaande aan die C-kode
ons vir jou gegee het vir pset 5.
Ek het net 'n paar $ in plekke.
Ek het sekere funksie name verander as hulle nie bestaan ​​in PHP.
Daar is een addisionele ding hier, preg_match,
wat is 'n bietjie liefhebber manier om iets te doen, maar ons sal terug te kom na wat uiteindelik.
Maar in kort, speller is byna identies, en as jy kyk na die heel onderste
wat dit uiteindelik uitspoeg, is dit hier,
woorde verkeerd gespel, woorde in die woordeboek, woorde in die teks.
Alle reg, sodat wat is interessant nou is die volgende.
Ek op die top van my lêer wat dictionary.php.
Net soos C # include PHP het 'n spesiale funksie genoem vereis
dat pretty much dieselfde ding, vereis 'n lêer genaamd dictionary.php.
Hoe kan ek gaan oor die uitvoering pset 5?
Laat my voort te gaan en open 'n lêer hier.
Laat my toe om 'n bietjie verwysing hier.
En laat my 'n nuwe lêer te skep en begin met die roeping van hierdie dictionary.php.
Laat ek dit in 'n ander gids, sodat ons kan doen om hierdie lewe.
En nou sal ek zoom.
Ek gaan my PHP lêer om te begin met 'n oop bracket php gesluit bracket.
En dan in hier en daar was 'n paar funksies wat ek nodig het om te implementeer vir pset 5,
so laat my begin met die implementering van sommige van diegene,
so funksie tjek, wat het 'n woord in 'n argument te neem.
Ons sal dit doen en kom terug na dit in 'n oomblik.
>> Daar was funksie las, wat het in wat as 'n argument?
Woordeboek, sodat die lêer wat ek eintlik wou om te laai.
Daar was funksie grootte, wat nie enige argumente
en daar was funksie wat was die ander?
Los, wat nie enige argumente.
Dit is die 4 funksies wat ek nodig sou wees om nou te implementeer in PHP,
en wat ek gaan om dit te doen gaan voort en doen dit.
Baie van julle gebruik om 'n hash tafel in pset 5,
so laat my gaan voort en die skep van 'n hash tafel in PHP.
Gedoen het.
Dit gee my 'n hash tafel. Wel, hoekom?
Een, is die veranderlike genaamd $ tafel, net die idee van 'n hash tafel te besweer.
Die vierkantige hakies, maar onthou, verteenwoordig wat?
'N skikking, maar in PHP skikkings nie numeries geïndekseer word.
Hulle kan ook assosiatiewe skikkings,
wat beteken dat jy arbitrêre sleutels en waardes kan hê.
>> Graag in pset 5, dié van julle wat hash tafel implementasies het
jy waarskynlik ingevoeg die woord en dan plaas dit in 'n ketting van geskakelde lyste,
of jy gestoor word die waarde van die ware êrens of iets te dien effekte.
Jy het een of ander manier gedink aan die feit dat die woord was daar.
Vir nou, wat gaan my hash tafel,
en so nou om te gaan oor die uitvoering van die tjek funksie
Ek hoef net na binne kyk van daardie hash tafel
en kyk of 'n woord is daar.
Wat ek gaan om dit te doen, is ek gaan om te sê indien-
laat ons sê isset, wat is 'n PHP funksie wat letterlik beteken net is die sleutel stel,
so isset ($ tabel [$ woord],
en indien wel terugkeer waar.
Dit is dit. Dit is pset 5 in PHP.
Wel, in regverdigheid, okay.
Anders return false, so dit is nie daar nie.
Wat is werklik gaan hier aan?
Wel, as tafel-of hash tafel hier meer in die algemeen
is 'n assosiatiewe skikking wat beteken dat jy kan indeks in dit
met 'n woord soos "woord", en jy het om terug te kry 'n bietjie waarde.
>> Ons is soort van die kry van 'n stap vorentoe van onsself.
Dit sou soort van lekker wees as ons werklik die lêer gelaai,
so las is nie heeltemal so eenvoudig nie, maar laat my gaan voort en sweep
'n baie vinnige implementering van die vrag.
Laat my gaan voort en sê woorde kry lêer woordeboek.
Die lêer funksie in PHP open 'n lêer
en opgawes aan u 'n verskeidenheid van al die woorde in die lêer,
gee dit net aan jou.
Dit was ook 'n groot pyn, dit is nie?
Nou foreach, dit is ons nuwe konstruk, foreach ($ woorde as $ woord).
Hierdie lus is gaan om te begin iterating oor die skikking woorde
en toewys aan die $ woord veranderlike elke woord in die lêer
vanaf die eerste tot die tweede na die derde na die vierde al die pad
so ek het nie die irriterende [i] notasie te doen en die wil.
En wat ek net gaan om te doen vir elk van hierdie woorde
word stoor dit in my tafel deur indeksering in tabel
en dan doen waar omdat om te onthou
dat 'n woord in my woordeboek is al wat ek regtig hoef te doen
is 'n soort van flip 'n bietjie en sê hierdie woord in my hash tafel daar, waar is.
En as dit nie daar is nie, kan ek nie sit uitdruklik valse,
anders het ek wil hê om vals te maak vir alle moontlike woorde in die heelal.
>> Dit is voldoende vir my net 'n indeks waarde in te stel
na ware as 'n woord in my hash tafel.
Nou het ek 'n paar van die hoeke te sny hier dat ek my hande sal beweeg vir nou,
maar nou die las funksie gedoen word.
Ek laai al die woorde van die lêer in 'n skikking.
Ek itereer oor daardie skikking, en vir elke woord in die skikking
Ek prop dit in my hash tafel met 1 lyn van kode.
Dit is pret. Jy weet hoe ons die grootte kan nou implementeer?
Wel, die grootte is altyd redelik maklik, in regverdigheid.
Hier kan ons net terug doen telling van tabel.
Dit is ook redelik maklik, tel die aantal van die dinge wat in die tabel.
Dit is eintlik soort van die mees doeltreffende.
Ek moet waarskynlik 'n veranderlike genoem grootte, sodat ons dit kan doen
in konstante tyd, maar dit is redelik maklik.
O, en dan los, as ons regtig wil om anale hier te wees
ons kan sê dit is hoe jy iets los.
Jy moet net die veranderlike gelyk aan 'n leë skikking,
en dit raak ontslae van alles wat daar was.
Hoef nie te bel gratis.
>> Weereens, ek sny sommige hoeke, en ek vra om verskoning vir toewys probleem stel 5
miskien in C, maar as ons nou voort te gaan en loop dit,
Ek gaan eintlik loop die weergawe wat ek geskryf het in advance
net so dat ek nie enige sintaktiese foute hoegenaamd.
Laat my voort te gaan en uit te voer speller. Die gebruik is dieselfde.
Hier is 'n woordeboek lêer wat net die woord cat bevat.
Hier is 'n tekslêer wat net foo bar bevat.
Kom ons spel kyk, so speller, die gebruik van hierdie woordeboek lêer op hierdie teks lêer.
Daar is een woord verkeerd gespel, bar, en voila.
Gedoen met pset 5.
Kom ons neem 'n 5-minute breek hier, en ons sal terug en meer kom op PHP.
Alle reg, ons is terug.
Kom ons haat my vir 'n rukkie.
Kom ons kyk nou eintlik kyk of dit was nie 'n positiewe
eintlik die uitvoering van hierdie ding in PHP.
Toegegee, dit het 45 sekondes om te implementeer.
>> Maar laat ons nou voort te gaan en uit te voer dinge.
Laat my voort te gaan en uit te voer 'n C-weergawe
speller, en ons sal dit op een van die grootste lêers hardloop,
wat is die King James Bybel.
En dit is hier in-laat ons gaan in ons C-gids,
speller op King James die 5de.
'N baie verkeerd gespelde woorde.
Okay, so wat is die uitset wat jy het waarskynlik selfs as die tye is 'n bietjie anders,
as jy het alles korrek werk, en so tyd in totaal gekorrigeerde
die King James Bybel was 0,38 sekondes, so redelik goed met behulp van dat die uitvoering.
Nou laat my gaan in die PHP weergawe, wat ons net geskryf.
Laat ek hardloop speller op King James.
Oeps, ignoreer daardie fout. Ek is in die verkeerde gids.
Speller op King James die 5de.
Amper klaar.
>> Okay, sal die slim waarnemer besef dit was meer as 3 sekondes daar.
Dit is die ware looptyd.
Dit blyk dat dit neem tyd baie van die teks uit te spoeg
as gevolg van buffering kwessies, maar lang storie kort,
wat was 3,15 sekondes van die masjien, CPU tyd,
versus wat was dit 'n oomblik gelede?
Soos 0,3.
Ek bedoel, dit is 'n orde van grootte stadiger, so waar is dat
belaglik verlangsaming vandaan?
Wel, soos die geval is met die meeste enige ontwerp besluit wat ons gemaak het
in die klas oor die afgelope 9 weke daar is byna altyd hierdie nadeel.
Soms tussen net ruimte, soms tussen ruimte en tyd,
ruimte, tyd en ontwikkelings poging, en wel hier, selfs al
het ons gered van 'n groot hoeveelheid van die tyd, miskien potensieel 10-20-30 uur
van die ontwikkeling tyd die uitvoering van die speltoetser
deur lyfstraf dit in net 45 sekondes met hierdie taal
die prys wat ons betaal, is dat dit 'n orde van grootte stadiger as 'n resultaat,
en dit is gewoonlik die geval met die meeste enige geïnterpreteer taal,
PHP, Python, Ruby, Pearl of ander waardeur
as jy gaan om dit te doen deur middel van 'n tolk en dit lees jou kode
reël vir reël, van bo na onder, links na regs,
dat die middelman is gaan 'n geruime tyd van sy eie te neem,
en wat jy voel in die 3 sekondes, in teenstelling met 0,3 sekondes
is die feit dat daar is hierdie middelman wat letterlik ons ​​kode te interpreteer
reël vir reël, en God verbied as jy binnekant van 'n lus
met 'n groot lêer met honderde duisende woorde.
>> Wat oorhoofse toe te voeg en voeg en voeg en voeg.
Vir 'n instrument soos hierdie is dit waarskynlik nie die beste taal om te gebruik vir die implementering van
'n speltoetser as onmiddellikheid is van belang is vir jou gebruikers en aan julle.
Maar die luukse wat ons het in 'n oomblik is, as jy
gebruik van 'n taal soos PHP of 'n baie van die geïnterpreteerde tale
in die konteks van die Web, for that matter, jy het die voordeel
dat die internet is 'n baie stadiger as die meeste rekenaars.
Jy het 'n GHz CPU in jou rekenaar, 2 GHz, miskien selfs meer hierdie dae.
Maar die werklikheid is op die internet daar is 'n hoë bedrag van die latency
waardeur vir 'n leser om te praat met 'n bediener, selfs al het ons verlede week gesien het
dat dit is redelik vinnig, die helfte van 'n millisekonde of so,
wat te voeg, en as jy die aflaai van dinge soos 'n beeld
of 'n Facebook-foto of om kitsboodskappe oor Facebook chatter,
Gchat of iets dergeliks, al van hierdie ronde-trip keer
tussen die leser en die bediener begin te voeg,
wat maak jou spesifieke keuse van taal in baie gevalle
nie almal wat betrokke, sodat jy boete van die gebruik van 'n effens stadiger taal
soos PHP of Python of Ruby
maar waarvoor daar groot upsides aan jou en jou kollegas
en jou vriende, omdat jy kan implementeer dinge so, so baie vinniger.
En bowendien, jy het 'n veel minder risiko van sekere sekuriteit foute.
Daar is geen verwysings in PHP.
Daar is geen seg foute wat jy maklik kan veroorsaak
in dieselfde manier wat jy kan in C.
Met C jy super naby aan die hardeware.
Met PHP en soortgelyke tale jy is soort van 'n hoër vlak, om so te praat,
met 'n baie van verdediging tussen jou en wat is eintlik aan die gang
binne-in die masjien, en dit is net 'n nadeel.
>> Ons het gekry tot op die punt van hierdie meer moderne, hoë vlak tale
soos PHP, omdat van die lesse wat geleer is in tale soos PHP in C.
Maar as jy nie verstaan ​​wat aan die gang is onder die kap al die tyd
jy kan seker nie die regte ontwerp besluite te neem,
en seker wanneer dit kom by die werk op 'n plek soos Facebook of Google
of enige van hierdie plekke wat toenemend speel met 'n groot data stel
selfs as jy terug gaan en doen premed en werk met 'n paar MD
op 'n paar groot data stel wat pasiënte en dokters
en soos die gebruik van die regte gereedskap is uiters dwingende
want anders jou ontleding van sommige datastel kan sekondes,
of dit kan letterlik ure neem.
Dit is maar net een voorbeeld, nie om jou te frustreer met hoeveel meer moeite
dit was in C, maar om jou te help verstaan ​​dat wanneer jy iets in C te implementeer nie
jy regtig verstaan, of in teorie, regtig verstaan
hoe alles is of moet werk, en jy het feitlik volle beheer
oor wat gaan aan onder die enjinkap, en met hierdie hoër vlak tale
het jy meer beheer af te staan ​​aan die mense wat hulle uitgevind
en is onderhewig meer aan hul ontwerp besluite as joune.
Maar as ons as vanselfsprekend aanvaar dat die prestasie
is nie heeltemal so belangrik op die web as gevolg van hierdie ander kwessies,
net netwerk spoed is 'n bietjie stadiger as die CPU spoed in elk geval,
sodat ons dit kan sorteer bekostig om 'n effens stadiger taal te gebruik
indien die upsides ons dinge kan ontwikkel 10 keer vinniger of selfs meer.
>> Kom ons kyk hoe ons kan begin met hierdie.
Laat my gaan in 'n gids
onder vandag se voorbeelde genoem frosh.ims,
en dit is eintlik persoonlik gemotiveer deur die feit dat die heel eerste ding
Ek geskryf het vir die Web jaar gelede na die neem CS50 en CS51
was 'n webwerf vir die Frosh kitsboodskappe program, eerstejaars binnemuurse sport,
wat by die tyd dit was genoeg jaar gelede dat op die oomblik
daar was geen webwerf vir die program, selfs al was daar 'n web,
en in plaas daarvan was daar 'n Proctor in Wigglesworth waardeur as jy wil
om te registreer vir vlugbal of sokker of wat ook al sou jy vul 'n stuk papier.
Jy sal dan loop oor die werf.
Jy sal dan klop aan hul deur en slide in hul deur of hand aan die Proctor
'n stukkie papier met jou naam op dit, of jy wil om 'n kaptein van die span te wees,
watter sport jy wil doen, en wat dorm jy was.
Dit was soort van 'n ou skool manier van dinge doen, en dit was 'n eerste
geleentheid om 'n baie van hierdie proses te outomatiseer.
Jy moet net gaan na die webwerf. Jy tik iets.
Jy kry 'n e-pos bevestiging, en die boom, is jy klaar.
>> Dit was die heel eerste ding wat ek gedoen het, al is dit in 'n taal met die naam Pearl,
maar dit is relatief maklik om te doen in PHP, en dit is 'n soort van verteenwoordiger
van die probleme wat jy kan begin oplos wanneer jy jouself kan uitdruk
programmaties en het nie om te vertrou op dinge soos Google Sites
of Excel of gereedskap wat aan jou oorhandig word.
Julle ouens het nou die vermoë om dinge te doen soos hierdie.
Dit is 'n super lelik weergawe van 'n vorm,
maar laat ons net dit gebruik vir die begin van die gesprek waardeur dit is
min of meer wat die vorm lyk soos jare gelede vir ons
in staat te stel om mense op die web aan te meld vir Frosh kitsboodskappe.
Ons het gevra vir 'n naam, 'n boks vir of hulle nie wou wees kaptein,
manlik of vroulik, en dan watter dorm hulle was,
en dan sou hulle hierdie vorm instuur.
Laat se eerste blik onder die kap op die HTML-kode wat verteenwoordig hierdie webblad.
Laat my gaan in froshims0,
en as 'n eenkant, vir pset 7 Ek neem as vanselfsprekend aanvaar
die dopgehou en die dopgehou wat ek om dinge.
Ons sal loop jy deur presies waar dinge het om te gaan in die toestel,
watter mod opdragte jy hoef te hardloop, so moenie bekommerd wees oor al die
dom besonderhede sinchroniseer vanaf die get-go hier.
>> Alle reg, hier is froshims0.php.
Let me down blaai, en wat is hier nuuskierig,
dit is 'n PHP-lêer, maar wat is binnekant van dit duidelik?
Dit is 'n hele klomp van HTML, en inderdaad, PHP se oorsprong
werklik was vir die feit dat 'n web-sentriese taal.
'N oomblik gelede het ons dit gebruik het die bier voorbeeld te implementeer,
die voorwaardes byvoorbeeld die Hello voorbeeld, en dit is goed.
Jy kan gebruik PHP as 'n script taal
waar 'n script is eintlik net die naam wat gegee word aan 'n vinnige en vuil program
of iets wat jy skryf in 'n geskrewe of meer in die algemeen 'n geïnterpreteer taal.
PHP is super nuttig vir daardie, want jy het gesien hoe vinnig
relatief ons kan sweep programme in PHP.
Maar dit was werklik ontwerp om gebruik te word vir die Web,
en ontwerp vir die Web in die sin dat merk hier op die top van die lêer
Ek begin met die <? Php.
Dan het ek 'n klomp van die nutteloos kommentaar, toegestaan, maar dan het ek PHP mode sluit.
Maar dan het ek laat val in 'n HTML-modus.
>> Wat is interessant oor PHP is selfs al is die lêer eindig. Php
dit is oor die algemeen bedoel is om te word saam gemeng met HTML,
sommige PHP-kode, sommige HTML.
En ons sal uiteindelik sien dat ons kan begin om diegene uitmekaar terg
en hou ons HTML afsonderlike geheel en al van ons PHP,
maar die oorsprong van PHP werklik te gee jy hierdie buigsaamheid,
dat as jy wil 'n paar HTML net skryf dit, en dit sal
spoeg uit identies aan die leser.
Maar as jy 'n paar programme tegniek,
n paar programme kode, kan jy ook sit dit in presies dieselfde lêer, soos ons sal gou sien.
Hier is my HTML.
Ek het 'n titel van hierdie Frosh kitsboodskappe.
Ek het 'n liggaam tag wat het 'n CSS op te sentrumnommer alles in die middel,
en dan af Ek het hier 'n vorm wat blykbaar gaan ingedien word
na 'n nuwe lêer met die naam register0.php, so ons sal sien dat in 'n oomblik.
Dit is die gebruik van 'n metode met die naam post, wat ons sal terug kom so goed.
Toe het ek het 'n paar vorm insette, een sogenaamde naam, wie se tipe is teks,
een wie se naam is kaptein, wie se tipe is boks,
en dit het ons nie gesien dit voor, maar dit nie presies wat dit sê.
Jy kry 'n boks in plaas van 'n tekskassie.
Down hier het jy 'n radio knoppie, wat is een van daardie ronde knoppies
dat jy kan kies om hierdie een of daardie een.
>> Let op dit is doelbewuste dat ek het beide radio knoppies om die naam van geslag.
Dit is hoe jy kry wedersydse uitsluiting waar jy moet kliek
hierdie een of daardie een, en deur te kliek op die ander
dit unchecks die ander, so jy hoef te gee hulle dieselfde naam
as jy wil hê hulle moet wedersyds uitsluitend nie soos dit.
En dan vir die dorm, ek dink nie ons het gesien het nie, maar dit is 'n uitgesoekte menu, 'n drop-down menu.
Die tag want dit is kies.
Jy gee dan die drop-down menu 'n naam,
en dan moet jy 'n hele klomp van hierdie opsies.
Die eerste een, net vir estetika, is 'n leë string.
Ek wou net die drop down leeg te wees by verstek,
en dan is daar Apley, Canaday, Grays, en so meer.
En let op die digotomie hier.
Die opsie in die drop down 'n waarde,
maar dan is dit 'n mens-vriendelike naam, wat in hierdie voorbeeld
is identies, maar as ons regtig wou wees anale ons kan hê
die waarde van hierdie drop down net die kort weergawe,
Grays, maar ons kon regtig sê Grays Hall dat die mens eintlik sien,
maar dit is nie alles wat interessant, so ek het net het dit eenvoudig gehou en het hulle identies.
Dan af na die bodem het ons het 'n submit-knoppie
wat ons voorheen gesien, maar sien ek het dit net 'n ander woord.
In plaas van CS50 soek Ek het die etiket "Register."
>> Die eindresultaat is hierdie webblad hier, en weer,
waar dit ingedien raak?
Dit word aan sommige lêer, die waarde van die aksie kenmerk,
wat register0.php.
Kom ons kyk wat werklik hier gebeur.
Laat my gaan voort en vul hierdie vorm, sê Dawid,
wat manlik is, Matthews, en dan sal ek sê registreer.
Laat my uitzoomen en kliek op 'registreer'.
Okay, so soort van nutteloos nie, maar laat ons kyk wat eintlik gaan.
Let daarop dat die URL verander te wees register0.php.
Wat is vreemd afwesig is van die URL, al is, selfs al het ons net 'n vorm ingedien?
[Onhoorbaar student reaksie]
Oukei, dis net Chrome synde use hierdie dae.
Dit is eintlik daar. Hulle steek dit net om ruimte te bespaar.
Maar 'n goeie denke, goeie gedagte.
Na die ander einde van die URL, al is, is wat ontbreek? Ja.
[Studente] Die soeknavraag.
Die query string, so onthou van ons eenvoudige Google-soektog voorbeelde.
So gou as ek kliek op die submit-knoppie om die URL
het om my te Google, maar dan was daar q =? rekenaarwetenskap of alles wat ek het getik.
Dis omdat ons die GET-metode gebruik met die soektog voorbeeld.
>> Hierdie keer het ons met behulp van watter metode plaas?
Plaas, en een van die onmiddellike onderskeidings
tussen AOO en pos is dat die post nie sit die gebruiker se insette in die URL.
Dit steek dit weg. Dit stuur dit nog steeds.
In werklikheid, wat ons sien in die leser hier, soos ons sal openbaar in 'n oomblik
deur op soek na register0, is ek net om die inhoud te sien
van die skikking wat van die leser na die bediener voorgelê is.
Maar die URL nie 'n?, Het nie enige trefwoorde
of waardes in, en waarom is dit?
Wel, post jou toelaat om data van die vorm aan 'n bediener stuur,
maar dit sit dit nie in die URL, so watter soort inligting is post
veral geskik is vir miskien wanneer jy die gebruiker te vra
tik in insette tot 'n vorm?
Iets soos 'n wagwoord, iets soos wat anders?
Kredietkaart nommers.
Enigiets wat is effens gevoelig jy waarskynlik wil nie eindig in die URL
as net omdat dit beteken dat jou kamermaat of familielid kan net trol deur
jou internet geskiedenis en dan letterlik sien jou wagwoorde,
letterlik sien hoe jou kredietkaart nommers, want die meeste blaaiers
in die geskiedenis onthou watter URL's wat jy het al op,
so alleen al omdat dit 'n slegte idee sou wees.
Deur gebruik te maak van post velle dat die detail van die gebruiker.
>> Ook, hoe kan jy 'n foto op Facebook?
Wel, die enigste 2 meganismes wat jy werklik kan gebruik,
selfs al is daar 'n paar ander meer arcane kinders kry en post.
Hoe jy dalk 'n foto oplaai via 'n URL?
Jy kan eintlik dit te doen.
Jy kan 'n JPEG of bitmap of GIF en kan jy dit in heksadesimaal verteenwoordig
of iets genoem basis 64.
In plaas van die basis 16 jy gebruik basis 64, wat in wese lyk
ASCII-karakters, en jy kan eintlik 'n foto via 'n URL
na 'n vraagteken, maar daar is oor die algemeen die beperkings op grootte.
Die meeste blaaiers dwing URL's word nie meer as 1000 karakters,
miskien 2000 karakters of dies meer, so jy kan nie oplaai
'n 10 MB Facebook photo.
Vir wat jy gebruik post so goed, so vir nou sit die parameters in die URL,
wat is mooi en nuttige soms, maar vir enigiets sensitiewe of groot
pos is die pad om te gaan.
Wat register0 is eintlik hier?
Wel, as ek oopmaak register0 kennis dat dit is 'n super eenvoudige bladsy,
maar dit is die demonstrasie van die feit dat ek kan saam meng, vir 'n beter of vir slegter,
HTML met PHP.
Hierdie hele lêer, behalwe vir die kommentaar aan die bokant, HTML
behalwe vir hierdie man hier.
>> Kennisgewing in die middel van my PHP-kode,
in die middel van my HTML, ek het soort van tydelik
ingeskryf PHP mode.
Ek noem 'n spesiale funksie print r genoem.
Dit beteken druk rekursiewe, en wat dit doen is dit rekursief druk
veranderlike wat jy handig dit, kommapunt, afrit PHP mode.
En die pre tag gee jou pre-geformateerde teks,
mono ruimte teks sodat elke plek wat jy sien nie.
Dit maak nie verdwyn nie. Wat is die boodskap?
Wel, wat is interessant en dwingende oor PHP
is dat wanneer jy 'n vorm kry of
enigiets wat aan jou voorgelê is deur 'n leser
PHP self figure uit wat die sleutel waarde pare is,
figure uit as daar gelyke tekens, figure uit as daar 'n vraagteken.
Dit doen al die harde werk vir jou, en dan is dit aan jou oorhandig 'n associatieve array
met alles wat die gebruiker in die vorm getik.
Wel, watter velde van hierdie vorm?
>> Dit het 4 velde.
Een daarvan was 'n teks-veld met die naam naam.
Een daarvan was 'n boks met die naam van kaptein.
Een daarvan was 'n radio knoppie genoem geslag,
en een was 'n drop-down menu genoem dorm,
so sien wanneer ek druk rekursief
die inhoud van hierdie spesiale veranderlike.
Dit is 'n spesiale globale veranderlike genoem letterlik $ _POST, in alle pette.
Dit is 'n spesiale globale veranderlike wat PHP skep net vir jou
en die hande aan julle, sodat jy kan toegang tot alles
wat ingedien is deur middel van 'n vorm deur 'n gebruiker.
En deur print r op te roep jy sal nie dit doen in 'n gewone aansoek.
Ons is om dit te doen om te sien die binnekant van hierdie veranderlike,
en wat is binnekant van dit, goed, 4 sleutels,
4 http parameters, om so te praat,
naam, kaptein, geslag, dorm, en dan die waardes wat die gebruiker
getik in met een uitsondering.
Ek het tipe D-A-V-I-D.
Ek die boks, maar, vir mans, wat glo 'n waarde ingedien
net m te wees bondige.
>> Toe ek gekies het Matthews, wat is die waarde wat het gekies,
en hierdie een is 'n bietjie dom, maar dit is die konvensie.
Toe ek die boks, 'n waarde van oor, "op," het vir die boks ingedien.
As ek dit nie nagegaan word, sou geen waarde gewees het hoegenaamd gestuur.
Dit is net gee ons insig in wat is binnekant van hierdie spesiale globale veranderlike,
en dit is so spesiaal dat dit 'n super globale veranderlike genoem.
Dit bestaan ​​oral vir jou in jou kode, sodat jy kan eintlik toegang.
Dit is nie dat dwingende, so laat ons eintlik gebruik van die super globale
en eintlik probeer om iemand te registreer.
In froshims1 ek gaan een verandering te maak.
Ek is die verandering van die aksie te wees register1.php,
en ek doen 'n ander ding.
Ek was soort van verleentheid deur die kwaliteit van my webblad daar.
Dit is pretty afskuwelike, eerlik, so dit blyk uit
wat jy kan baie maklik gebruik op die web
ander mense se JavaScript-kode, ander mense se CSS
wat hulle geskryf het en oop verkry en beskikbaar gestel word as 'n biblioteek,
om so te praat, byvoorbeeld, hier is ek met behulp van 'n vrylik beskikbaar biblioteek,
'n klomp van die kode wat iemand anders geskryf het.
>> Twitter gebeur hierdie kode te skryf, en dit is bekend as die bootstrap biblioteek,
en dit is net 'n klomp van CSS style sheets, 'n klomp van die css lêers
dat iemand anders geskryf het en uitgepluis het hoe om alles mooi en mooi
sodat mense soos ons kan 'n bietjie minder bekommer oor estetika en fokus veel meer
op die logika en die eintlike programmering.
Deur dit te koppel met daardie tag, wat dieselfde tag ek gebruik onthou vir styles3.css vroeër,
Ek het nou toegang tot 'n lêer genaamd bootstrap.min.css.
Min beteken net hulle het dit minified en hulle het ontslae geraak van al die wit spasie en so meer
net om seker te maak hulle nie wil stuur my meer bytes as wat ek werklik nodig het.
Maar daar is 'n hele klomp van CSS, so as ek nou oopmaak weergawe 1 van Frosh kitsboodskappe
agterkom dat my lêer is beslis mooier.
Nou is dit nog net swart en wit nie, maar sien dat deur net met behulp van hul style sheet
en die gebruik van sekere kenmerke van dit op my vorm dit is nie amazing,
maar dit is beslis skoner as wat dit was voor, en die projektor is om dit te doen nie geregtigheid.
Daar is min grys lyne om die knoppies en rondom die teks veld reg hier,
maar dit is beslis skoner as wat dit tevore was.
>> Nou, in regverdigheid, het ek my opmaak 'n bietjie verander.
Dit is 'n weergawe 1, en let op dat ek 'n paar nuwe tags gebruik het,
en eerlik, ek het geen idee hoe om dit te doen totdat ek lees die dokumentasie
vir Twitter se bootstrap biblioteek, en hulle het vir my gesê as jy wil ons biblioteek te gebruik
gebruik 'n fieldset element binne-in jou vorm,
die woord wat jy wil vertoon langs 'n veld binnekant van 'n etiket tag,
dan gee jou insette 'n naam, net soos voor,
en dan vir die boks, nie net jy draai dit in 'n etiket element,
jy gebruik iets genoem 'n klas, so ons het nie gesien dit voor,
maar jy sal sien dit in een van pset 7 se kortbroek.
'N klas in CSS kan jy doen iets baie soortgelyk aan die ID,
maar voor toe ons 'n ID met die #-simbool
wat vir slegs een element was.
Wat is mooi oor 'n klas is, is dat verskeie elemente kan dieselfde klas
of die dieselfde CSS dinge toegepas word.
>> Maar weereens, meer op diegene in die kort, en die res van hierdie is net kopieer en plak
van hul dokumentasie waar ek 'n etiket het bygevoeg hier en daar.
En aan die einde, want ek het ingesluit die link tag aan die bokant,
alles lyk mooier outomaties
deur eenvoudig gemerk my bladsy in 'n wyse wat
Twitter verwag, en daar is so baie verskillende maniere
om dit te doen, en dit is inderdaad baie toepaslik.
Op hierdie punt in die semester, soos u sal sien in pset 7 se spec,
Googlen rond, lees op biblioteke, met behulp van ander mense se CSS
en JavaScript aanverwante probleme op te los
aan die gestelde probleem self is beslis aangemoedig en is die manier waarop
die web gebou is hierdie dae, deur middel van 'n permanente op ander mense se skouers
sodat jy werklik kan fokus op die nuwe en interessante probleme.
Maar laat ons nou fokus op, weer, die logika.
>> Dit was 'n vinnige ompad op die estetiese net om jou te wys in die rigting waarin jy kan gaan.
Ek gaan terug om terug te keer na die leliker een vir nou net omdat
daar is geen afleiding met Twitter stuff, en laat my gaan voort en maak
die froshims2, wat, weer, verskil net in die aksie, register2.php,
en laat ons neem 'n blik op wat die effek is hier.
Laat my gaan voort en tik in Dawid.
Ek sal nie kaptein hierdie tyd.
Ek sal sê manlik, Matthews, register.
Damn dit. Goed, dit is 'n skroef op my deel.
Staan.
Register2, lyn 22 word, indien leeg of jammer.
Kom se herlaai.
Goed, op hierdie vorm te stuur wat nou net gebeur?
Ek getik in Dawid, nagegaan manlik, Matthews, register gekliek.
U geregistreer is. (Wel, nie regtig nie.)
Dit is duidelik 'n stap verder as net die druk van die inhoud van 'n paar veranderlike,
maar wat hierdie lêer is eintlik besig om te doen?
In register2.php
agterkom dat ek het 'n paar nuwe kode.
Binnekant van my liggaam tag Ek het in wese 'n as anders konstrueer,
maar omdat ek mede-vermenging dit met 'n paar HTML
Ek het om te betree en die uitgang PHP af heen en weer, so laat ons sien wat ek doen.
>> In die eerste reël hier ek sê as dit die geval is
dat die post super wêreld is leeg vir die sleutel van 'n naam,
So met ander woorde, indien die gebruiker nie gee my 'n waarde vir die naam in die vorm,
dan leeg gaan om terug te keer waar omdat die waarde is leeg.
Of-kennis van die vertikale stawe as geslag is leeg
binnekant van hierdie spesiale super wêreld, wat, weer, die inhoud van die vorm,
of die dorm leeg is, dan gaan ek om voort te gaan en skree op die gebruiker.
Hoe werk dit? Wel, merk ek gaan om te sê jy moet jou naam, geslag, en dorm.
Kom ons eintlik veroorsaak dat die fout.
Laat my terug te gaan na my vorm. Laat my herlaai om dit skoon te maak.
En ek is net gaan om aan hulle te gee Dawid, en hulle hoef nie te weet waar ek woon.
Registreer. Blykbaar het ek nodig het om hulle te vertel waar ek woon.
Jy moet jou naam, geslag en dorm. Gaan terug.
>> En ek kon kliek om terug te gaan na daardie vorm, maar hoekom is dit?
Wel, in daardie geval se naam was nie leeg nie, maar geslag was, en dorm was,
so hierdie hele uitdrukking geëvalueer waar, en selfs al is die sintaksis is 'n bietjie nuwe,
gaan ons weer, PHP mode, bekend as verklaring,
maar die nuwe deel hier is net hierdie kolon, en ek het screwed up deur die weglating van 'n hakie
deur 'n ongeluk, maar let op die kolon, en dit beteken dat
selfs al is ons opwindende PHP mode alles
wat volg moet spoeg uit woordeliks aan die leser
totdat jy sien 'n ander blok, soos ons hier doen,
in welke geval jy moet eerder spoeg dit uit
totdat jy sien die endif, sodat sommige effens nuwe sintaksis
wat dit moontlik maak om my te skakel tussen HTML en PHP.
Ons kan hierdie up uiteindelik skoon te maak, maar vir nou,
dit is soort van 'n dwingende manier van foutopsporing die vorm.
>> Nou, ek sê dat jy regtig nie geregistreer is nie, omdat natuurlik ons ​​het niks gedoen nie, maar die data,
so laat ons werklik probeer om iets cool om te doen.
In froshims3 die enigste verskil is ek gaan aan register3,
sodat die HTML daar is dieselfde.
In register3 opmerk.
Hierdie een is 'n soort van sexy.
Op die top het ek 'n vereiste verklaring is gebruik, sodat dit is soos # include.
Hierdie keer is dit nie stdio.h of iets soos dit.
Dit is 'n PHP-biblioteek, en hierdie een is genoem PHPMailer.
Hoe het ek weet presies dit aangehaal string te sluit?
Ek lees dit in die dokumentasie, so toe hulle vir my gesê het dit op die top van die lêer
As jy wil 'n spesiale biblioteek genoem PHPMailer wat doen wat dit sê om te gebruik.
Dit laat jou toe om e-pos te stuur via PHP.
Laat ons nou scroll af verder.
>> Kennisgewing om te begin Ek is in PHP mode hierdie hele tyd,
so kyk nou hier na die invoer van daardie biblioteek,
om so te praat, ek is besig met 'n paar gesonde verstand tjeks.
As dit die geval is dat die naam nie leeg is
en geslag is nie met leë let op die uitroep punte-
en dorm nie leeg is, dan die gebruiker logies gevul die vorm, ten minste genoeg.
Ek gee nie om as hulle kaptein of nie. Ek hoef net hul naam, geslag, en dorm.
As hulle diegene wat nie gevul het sodat niemand van daardie velde is leeg
dit is 'n bietjie nuwe sintaksis.
PHP, as 'n eenkant, is 'n objek-georiënteerde programmeertaal
wat sommige van julle ouens kan onthou van APCS of iets dergeliks.
Vir nou, as onbekende, weet net dat hierdie biblioteek te gebruik
jy het 'n lyn van die kode soos hierdie te skryf deur gebruik te maak van 'n nuwe sleutelwoord,
letterlik 'n nuwe navraag genoem nuwe.
Maar as dit nie, ons het 'n paar bekende sintaksis.
Dit is 'n pyl operateur, wat is soortgelyk aan wat ons gebruik vir structs in die konteks van wysers.
Vir vandag PHP nie pointers,
maar weet nou dat die binnekant van die e-pos veranderlike
is in wese 'n soort van 'n wyser na 'n spesiale biblioteek
dat iemand anders geskryf het, en as ek wil om spesifieke funksies om toegang te verkry tot
binnekant van daardie biblioteek het ek, soos in C, gebruik die pyltjie operateur,
selfs al is dit nie eintlik wysers.
Dit is soort van PHP se eie weergawe daarvan.
Dit beteken in die biblioteek en noem die IsSMTP funksie.
SMTP, herroep, van ons Warriors van die Net verwys na e-pos,
en dit beteken dat net 'n e-pos bediener vir hierdie Frosh IMS-registrasie.
>> Wat gasheer wil ek om te gebruik?
Wel, Harvard, as jy Google rond, het 'n e-pos bediener genaamd smtp.fas.harvard.edu.
As jy speel saam by die huis, of jy leef op 'n Comcast netwerk
is dit dalk iets soos smtp.comcast.net wees.
Dit hang heeltemal van waar jy woon en wat jou ISP is.
Daarna het ek gaan my op te stel van adres arbitrêr te wees jharvard@cs50.net.
Dan gaan ek te stel aan te spreek te wees jharvard@cs50.net.
Die enigste manier wat ek het geweet dat hierdie funksies is genoem SetFrom en AddAddress
is, weer, ek lees die dokumentasie.
Dit is nie die soort van mettertyd aan alle programmeerders bekend.
Toe het ek 'n onderwerp na "registrasie."
En nou hierdie lyn is 'n bietjie lelik, want wat het die dot-operateur in PHP beteken?
Iemand weet?
Koppel.
In C is dit is 'n pyn in die nek 2 snare saam te koppel.
Jy het om te gaan met malloc of realloc of al van daardie dinge
net die lengte van 'n string uit te brei.
In PHP, JavaScript en ander tale
kan jy gewoonlik doen dit met 'n enkele karakter.
In hierdie geval, dot beteken hierdie string hier
en voeg dit string.
>> O ja, en by the way, voeg aan hierdie string,
wat gebeur met 'n veranderlike binnekant van daardie super wêreld.
Dan voeg aan 'n nuwe reël, so al hierdie kolletjies net beteken
hou die maak van 'n groter en groter en groter string,
en jy hoef nie te alle omgee malloc of soos in 'n taal soos hierdie,
en daar is ander maniere om dit te doen, maar dit is een van die vinnigste
maniere om dit uit te lê.
Wat is dit besig om te doen?
Dit is die skep van 'n e-pos liggaam wat gaan Naam te sê: Kaptein: Geslag: dorm:
almal op aparte lyne, en dan laastens,
een lyn van kode, en ek gaan om dit te ignoreer vir nou.
Indien == valse beteken net as iets verkeerd geloop het,
maar die magie gebeur hier.
Pos stuur stuur hierdie e-pos.
Kom ons kyk wat die netto resultaat is.
Aan die onderkant van die lêer, sien dit gaan om te sê jy is regtig geregistreer
as ek so ver.
As egter die gebruiker skroewe, opmerk dat ons begin hierdie
Indien die toestand hier, as dit nie leeg is en dan nie leeg weg nie
en nie met leë hande stuur ons die e-pos.
Anders gaan ons hierdie lyn van die kode te stuur,
wat gaan die effek te hê, soos u sal sien in pset 7, redirecting van die gebruiker
terug na waar hulle vandaan kom, froshims3.php.
>> Vingers gekruis, anders dit gaan vandag die mees teleurstellende demo.
Hier gaan ons.
Laat ek my e-pos inboks vir jharvard in Gmail oopmaak.
Geen e-pos right now. Alles reg.
Nou laat my oopmaak froshims3, wat is die derde en laaste voorbeeld sal ons kyk hier.
Okay, hier gaan ons.
Nate, sal hy kaptein, manlik te wees, van, sê, Apley.
Registreer. Goed, is jy regtig geregistreer.
As ek dan nou scroll oor na my e-pos, oh, my God.
Ek het dinamiese net gestuur om 'n e-pos op die web.
>> Kom ons verlaat op daardie noot.
'N video is die komende vir die lesing wat ons gemis het. Sien julle volgende week.
[CS50.TV]