DOUG LLOYD: Così nel nostro video su sintassi di PHP, abbiamo parlato molto di come PHP può essere utilizzato nella linea di comando per eseguire programmi in modo che siamo abbastanza familiarità con da C. Ma, come Ho anche detto in quel video, PHP è stato inizialmente sviluppato per attuare una programmazione web, siti web. E così in questo video siamo andando a parlare di come noi utilizzare PHP nel contesto di sviluppo web. Sappiamo già, da il nostro video su HTML, che i siti web sono costruiti da una serie di tag HTML che definiscono semanticamente la struttura di una pagina web. Ma i siti web che sono costruito con HTML puro soffrono di una molto, limitazione molto grave. E per illustrare questa limitazione, prendiamo in considerazione quanto segue. Così ora voglio costruire una pagina web che, ogni volta che l'utente lo visita, mi dà la corrente ora a Cambridge, Mass., visualizzarlo all'ultimo minuto. Se stavo facendo questo proprio ora, Potrei dire qualcosa di simile. Ora attuale in Cambridge-- così ho Tag HTML, tag head, tag title, corpo tags-- la corrente tempo a Cambridge è 14:08, tempo militare stampare. Che cosa succede se ora è 02:09, 14:09? Bene finora, con HTML, ho per andare in e modificarlo in 14:09. E poi un minuto dopo, Devo cambiare di nuovo. E poi un minuto dopo, Devo cambiare di nuovo. E come si può immaginare, questo è probabilmente il lavoro peggiore mai. Tu sei il webmaster per una pagina web, e ogni minuto, 24 ore al giorno, è necessario aggiornare l'ora corrente apertura manuale time.html e cambiando solo che frammento di codice per non dire ora corrente in ore e minuti. Che probabilmente non è molto buon uso delle nostre risorse, sia umane che computazionale. I siti web che sono tutti HTML sono completamente statici. L'unico modo è possibile aggiornare contenuti, come abbiamo appena visto, è quello di aprire manualmente quelli fonte file, modificarli e salvarli. E poi, quando l'utente aggiorna la pagina o visita la pagina per la prima tempo, che otterranno il contenuto più recente. Ma solo perché abbiamo modificato manualmente. Se cominciamo a mescolare PHP in là, il nostro codice può ottenere molto più flessibile. E possiamo avere un modo per le nostre pagine di essere dinamico, o aggiornare se stessi, senza richiedere il nostro povero webmaster nell'esempio precedente per essere manualmente l'aggiornamento le cose. Possono farlo automaticamente. Noi non dobbiamo intervenire. Siamo in grado di dormire un po '. Che è probabilmente una buona cosa se si sta facendo un sacco di programmazione web. Quindi, in CS50 IDE, corriamo un web server chiamato Apache. E 'molto comunemente usato, aperto sistema web server di origine. Questo sistema ha il capacità di interpretare PHP, che sta per essere utile se si vuole fare alcuna programmazione PHP. E in CS50 IDE, abbiamo un comando per rendere questo molto facile da fare, apache50 iniziare. E poi quel barra percorso, tagliare a, slash dir, che è solo un modo davvero comune indicando ciò che hai specificato qui è un percorso di un particolare directory che vuole essere la radice sito, o la pagina principale, o la cartella da cui il server web inizierà a esaminare i file e servire li fino a clienti che ne facciano richiesta. Quindi cerchiamo di pop verso CS50 IDE, solo per mostrare, molto veloce, come funziona. Così qui in CS50 IDE, io sono in un directory chiamata Settimana Zero Nove. E devo two-- ho eseguito un comando LS solo sopra per dimostrare che non ho due directory in qui, PHP, che è l'insieme di file che ho usato in la sintassi di video di PHP, e poi PHP-web, che è l'insieme di file che vorrebbe usare in questo video. E vorrei iniziare un'istanza del server web con il contenuto della cartella PHP-web come i file vengono serviti. Così che cosa sto andando a fare? Ho intenzione di scrivere apache50 spazio avviare, spazio PHP, trattino web. Questo è il percorso della directory da dove attualmente sono. Poi mi ha colpito Invio. Sta andando a fare un po 'di roba qui. E poi sta per dire, Apache avviato correttamente. Il tuo sito è ora disponibile e at-- poi c'è l'URL del sito. Così che cosa sto andando a fare? Ho intenzione di copiare rapidamente questo. E io vado ad aprire e up-- Io zoom out un po 'qui-- Sto per aprire una nuova scheda in Chrome. E ho intenzione di visitare questo URL. Ho intenzione di premere Invio. Sta andando a caricare. E io lo zoom di nuovo. E possiamo vedere qui è il contenuti della mia directory web PHP. Così ora che cosa sta accadendo in fondo ecco, la mia istanza di CS50 IDE sta scontando di questi file a chiunque ne faccia richiesta. E nel corso di questo video, faremo di ordinare dare un'occhiata a un po 'di questi diversi file in un contesto. Per verificare che Apache server è funzionante, che è generalmente in corso essere il caso in CS50 IDE, ma se lo fai, più in generale, e di iniziare a costruire il proprio web server, c'è un davvero specie comuni di analogico, "ciao mondo", che di solito è utilizzato per lo sviluppo web PHP. Che è quello di avere un file costituito da appena questo code-- un delimitatore PHP set con PHP info, parentesi, punto e virgola in mezzo. Che è fondamentalmente un speciale Funzione PHP che ti dice quale versione di PHP è in esecuzione. Quindi, in CS50 IDE, ho quel file disponibile solo per mostrarvi ciò che questa sarà simile. Così sto guardando il mio indice dal mio esempio PHP. Il mio esempio Apache è in esecuzione il contenuto di PHP-web. E ho un file chiamato qui info.php. Io vado a fare clic su di esso, zoom out. Questo è ciò che si sta andando di vedere, più o meno. Questo è solo mi dice che il mio server Apache è in funzione. E questo è, a quanto pare, il versione di PHP che sto correndo. Questa è la mia analogico a "ciao mondo". Così So che le cose sono operativi. Quindi siamo a posto. Siamo in grado di procedere da qui. Quindi cerchiamo di rivisitare che Esempio volta eravamo parlando con il nostro povero webmaster che ha dovuto aggiornare la pagina costantemente. Questo potrebbe essere una soluzione per quanto Vorrei realizzare cose in modo che il webmaster non ha devono tenere aggiornata l'ora. Sarebbe appena sorta di avverrà automaticamente. Il basso, il codice HTML, è abbastanza simile, con una sola eccezione. Ma qui ho un po 'di PHP in alto. Ho, a quanto pare, chiamato questo Funzione date_default_timezone_set. E non parliamo di tutto queste funzioni in CS50, perché PHP ha probabilmente decine di migliaia. Questo potrebbe essere un po 'di un esagerazione, ma non potrebbe essere. Ha un sacco di funzioni incorporate in. E quindi questa è una funzione apparentemente imposta il fuso orario come US / Eastern, che è il fuso orario che io sono attualmente nel fare questo video. Poi faccio una chiamata a funzione chiamata, data. E, a quanto pare, sto memorizzare il HIS di qualcosa chiamato, tempo. Allora, cosa sta succedendo qui? Beh, in fondo ciò che è accadendo è, sto facendo una chiamata ad un server che sta per dimmi che cosa il tempo è attualmente. E sono la conversione in un formato di ore, minuti, secondi. E la ragione è maiuscola è questo sta per darmi il tempo di 24 ore, non 12 tempo ora, che sarebbe minuscolo h. E sto solo memorizzazione che in una variabile denominata, tempo. In modo che la seconda linea di PHP lì, la chiamata alla funzione, oggi, è solo ottenere qualche stringa, che è andando a darmi la data, e il tempo, e un sacco di altre informazioni. E il primo argomento lì che il suo, è solo estraendo la parte importante che mi preoccupo per questo esempio, che è l'ora, i minuti ei secondi. Ecco, questo è il tutto che sta succedendo. Così ho negozio che in un $ tempo variabile. E poi giù al fondo lì, avere che una scorciatoia per l'ora corrente stampare. Così sto solo andando a stampare che cosa l'ora corrente è. Quindi, diamo uno sguardo a questo CS50 IDE e vedere come siamo ora risparmio che webmaster un sacco di guai. Va bene, quindi eccomi qui di nuovo indietro nella directory principale della mia istanza di Apache. E ho un file chiamato qui time.php. Sto solo andando a cliccare su questo. E farò scorrere in su, perché stiamo ingrandita abbastanza lontano. L'ora corrente è 14:20:34. Quindi lo sto facendo ora, minuti e secondi. E posso aggiornare il pagina e ottenere nuova ora. --41. Ho intenzione di aggiornare la pagina e ottenere nuovo tempo, 44, 46, 47. Quindi, io non sono chiaramente cambiare nulla me stesso. Sto qui ad aggiornare la pagina. Quindi non posso tornare lì modificarlo. E vi prometto, non lo faccio avere confederati che stanno modificando il file a mio nome sul lato. Sto solo utilizzando tale funzione PHP, tempo, per generare il tempo per me automaticamente. In modo che anche se sto dormendo, e il mio server Web è in esecuzione, l'utente che visita la pagina è ancora intenzione di ottenere esattamente l'ora corrente. In modo che è abbastanza buono. Ho fatto il mio sito più dinamico con non troppo codice PHP. Era solo due righe di codice e poi un po 'di una dichiarazione di stampa. E già ho un sito molto più dinamico quello primo esempio abbiamo visto all'inizio del video. Quindi, richiamare dal video su sintassi di PHP che quando l'interprete PHP eseguito il nostro programma, ignora tutto che non è all'interno di delimitatori di PHP, sputare fuori. In questo esempio, ciò che la cosa che sputava fuori era HTML. E questo significa che può ora intervallare HTML e PHP insieme. Perché l'interprete sarà solo ignorare il codice HTML e letteralmente output. Il che è buono, giusto? Poiché presumibilmente, alla fine del giorno, Vorrei che il mio sito per essere costruito di HTML. In modo che qualsiasi browser web in grado di interpretare esso, o capire il codice HTML della pagina e renderlo come qualcosa che noi può effettivamente capire come gli esseri umani. E posso solo usare PHP per le parti del mio sito la richiedono dinamismo, che mi richiedono di avere le cose che aggiornano costantemente. Le informazioni statiche può rimanere lo stesso. Ok, va bene. Ma perché dovrei farlo? Perché dovrei mescolare HTML e PHP? Ho potuto solo stampare tutte le HTML, utilizzando la funzione di stampa di PHP. Perché non farlo? Pensateci per un secondo. Perché, quando ho potuto solo stampare fuori-- I potrebbe avere linee di PHP che appena dicono, tag HTML stampa, testina di stampa. Perché non farlo? Perché sto mescolando il PHP e HTML? Beh, se si pensa su di esso per un secondo. PHP, l'interprete ha di interpretare ciò che vede. E così sta per avere eseguire una riga di codice. Stampare HTML. Stampare tag testa aperta. Stampare tag title aperto. Sta andando ad avere per eseguire e interpretare che ogni singolo passo del cammino. Perché non lasciare che il interprete appena sorvolare cose che non capisce e farlo automaticamente? Sta andando a me risparmiare un sacco di tempo per mescolare il mio HTML e il mio PHP insieme. Ed è per questo che non lo facciamo appena hanno aperto delimitatore PHP e poi basta stampare l'intero il contenuto della nostra pagina di PHP come uno gigante chiamata alla funzione, di stampa, e quindi delimitatore di chiusura PHP e abbiamo finito. Ecco perché noi li mescoliamo insieme. Finora, non abbiamo visto troppo di una differenza di sintassi di PHP. E 'stato piuttosto semplice. Abbiamo già visto la punto interrogativo, uguali. Abbiamo visto un paio di nuove chiamate di funzione, ma niente di veramente voglia di andare avanti. Facciamo forse fare le cose un po 'di fantasia. Che cosa succede se si vuole passare informazioni tra i diversi file PHP, in modo che l'utente può forse inviare informazioni a me. E poi ho potuto fare qualcosa con in un'altra pagina. Così ha il supporto per PHP qualcosa chiamato Super globale Le variabili, che suona abbastanza impressionante. Sono davvero solo giganti array associativi che contribuire all'attuazione questo funzionalità di passaggio informazioni tra i file PHP che sono esistenti sul nostro web server. Il primo di questi super- globali è chiamato $ _GET. Ed è probabilmente la più semplici da capire. Che cosa succede con $ _GET? Ebbene, in sostanza, l'utente è andando a digitare le informazioni supplementari alla fine del nostro URL. E qualunque cosa che tipo, assumendo è formattato in modo particolare chiamato una stringa di query, che è solo una serie di coppie di valori chiave separate per ampersands. Queste coppie di valori chiave saranno memorizzati in un array associativo $ _GET. E dal nostro video Sintassi di PHP, sappiamo come lavorare con array associativi già. Così qui è un esempio di po 'di PHP, dove forse sono estrarre tutte le coppie di valori chiave che l'utente fornito nell'URL. Così ho il mio Aprire PHP delimitatore. Ho un ciclo foreach. Sto iterazione attraverso il Super Array globale chiamata $ _GET. E io voglio essere in grado di fare riferimento sia la chiave e il valore. E sto solo stamparli out, ognuna su apparentemente il proprio punto tag. Sto stampando alcuni HTML e interpolando i valori di chiave e il valore in questa affermazione. Quindi, diamo un'occhiata a come questo sarebbe effettivamente lavorare sul nostro IDE. E forse questo aiuterà illustrare un po ' di ciò che sta effettivamente facendo GET. Così sono tornato qui nel mio spazio web. E io lo zoom in un po 'di mostrarvi che ho un file chiamato, get1.php. Quindi cerchiamo di fare clic su get1.php. E non sto vedendo alcun contenuto. Questo è strano, giusto? Beh, non proprio in realtà. Perché non ho fornisco nulla nell'URL. Io vado a get1.php, ma io non ha fornito coppie di valori chiave come parte della mia stringa di query. Quindi aggiungiamo una stringa di query e vedere che cosa questo file può fare. Per iniziare una stringa di query si basta digitare punto interrogativo. Poi magari dirò name = & Doug anno = 2015. E poi io premete Invio. Ora notate cosa sta succedendo. Sono ancora in get1.php. Ma ora ho fornito coppie di valori chiave, e sono stamparli in proprio nome paragraph--, anno Doug-- 2015. Questo è esattamente il codice che abbiamo appena ha visto sul vetrino un momento fa. E se voglio aggiungere forse un altro coppia di valori chiave, e class = CS50. Ora ho un altro valore chiave coppia che viene stampato quando ho rivisitare di nuovo l'URL. Ora, forse questo non è formattato terribilmente bene. Così ho un'altra versione di get.php. E 'get2.php. La differenza in questo uno è che ho file CSS, e formatta le cose un poco più bene per me. Non è forse il più bella CSS nel mondo. Ma è solo un altro modo di farlo. Così posso ancora ottenere l'accesso ai miei variabili tramite $ _GET. E in questo caso, io sono solo un po ' rendendo il CSS un po 'più di fantasia. E se abbiamo pop verso il mio IDE per un secondo, Vi mostrerò nel mio PHP web elenco qui, get2.php. Apriremo in su, un po 'di HTML qui. A quanto pare sono collegati che File CSS stavo parlando. Apro un tag table. E poi ecco il mio ciclo foreach. Ecco che, quello che ho mostrato sul vetrino prima. L'unica differenza è che avere questa chiave e il valore CSS stile che sto applicando ad esso. Ma questo è tutto quello che sto facendo, si sono l'iterazione tra $ _GET per ottenere tutti delle coppie di valori chiave. E io li sto stampando come la tabella. E, a quanto pare, sto formattare le chiavi in un modo, con la classe "chiave"