Non si può negare che la nostra è un'industria incredibilmente difficile. Hai mai pensato di imparare una seconda lingua? Bene, che ne dici di cinque? Questo è ciò che ti verrà richiesto se intendi diventare uno sviluppatore web moderno. Considerando questo, se non stai attento, molto rapidamente, potresti trovarti sopraffatto, mentre fissi ciecamente gli innumerevoli articoli di blog confusionari, o libri tecnici.
La chiave, come qualsiasi cosa, è fare un passo alla volta.
La chiave, come qualsiasi cosa, è fare un passo alla volta. Ti sbaglieresti per non aver imparato una lingua parlata in un mese? Ovviamente no. Quindi applica lo stesso livello di pensiero al tuo viaggio di programmazione. Queste cose richiedono tempo, ma, se continui a spingere in avanti, sarai lì in pochissimo tempo. Non fermarti!
Il primo passo è HTML. Capire quale scopo a Il secondo passo, come avrete intuito, è CSS. Scopri come modellare gli elementi sulla pagina. Apprezza ciò a cui si riferisce "separazione delle preoccupazioni" e in che modo si applica al tuo HTML e CSS. Completa il tuo primo semplice sito web. Il terzo passo è quando gli sviluppatori iniziano a ramificarsi nelle loro specialità. A questo punto, potresti tuffarti nel mondo di JavaScript, che sta esplodendo come mai prima d'ora. Oppure, potresti invece concentrare i tuoi sforzi sul back-end. Confuso dalla differenza tra fine frontale e backend? Pensa al frontend come la punta dell'iceberg che ha abbattuto il Titanic. È la parte dell'applicazione che è visibile all'utente e può essere interagita con. Il back-end, d'altra parte, gestisce tutto, dalla persistenza, alle convalide, al routing. Per gli scopi di questo articolo, supponiamo che tu abbia scelto quest'ultima opzione; il lato server, lo è! Non si può negare il fatto che PHP domina il web. Sfortunatamente, ancora una volta, vi imbattete in una manciata di strade da percorrere. Dovresti scegliere l'opzione più popolare - PHP? Che mi dici di Ruby? I bambini fantastici sembrano preferire che questi giorni. Poi di nuovo, cosa succede se hai la barba? Python è la scelta giusta. Ancora più importante, però, come potresti effettuare una selezione, quando non hai esperienza? In situazioni come questa - e secondo l'autore - non esiste una scelta sbagliata. E, certamente, non c'è nulla che ti impedisca di cambiare strada. Infatti, tutti gli sviluppatori sono incoraggiati ad imparare più lingue! Per ora, tuttavia, la chiave è sceglierne solo uno e impararlo bene. Mentre è vero che PHP non è il più bello dei linguaggi, non si può negare il fatto che domina il web. In effetti, è il linguaggio di scripting più popolare al mondo. Il vantaggio di questo è che si può essere certi che ogni domanda PHP è già stato chiesto, risolto e documentato. C'è conforto nel saperlo. Sebbene tu sia nella fase più delicata del tuo apprendimento, una grande comunità amichevole è a portata di mano, pronta ad aiutarti. Ancora meglio, PHP sta vivendo un rinascimento moderno come mai prima d'ora, grazie a strumenti come Composer e Laravel. PHP, un acronimo per PHP: Preprocessore ipertestuale (sì, gli sviluppatori adorano le loro battute ricorsive), è un linguaggio di scripting che è stato costruito appositamente per il web. Le probabilità sono alte, tuttavia, che questo non significhi nulla per te. Linguaggio di scripting? Eh? Quando porteresti PHP per un semplice HTML? Bene, forse un esempio è in ordine. Supponendo che hai installato correttamente PHP, crea un Sì, è l'onnipresente "Ciao mondo"esempio con cui ti familiarizzerai man mano che le tue abilità progrediranno, ogni lingua / struttura / strumento ne ha una! Per eseguire questo codice, utilizzare il server integrato di PHP. Passa al tuo strumento di riga di comando preferito (Terminale, per utenti Mac), Mancia: MAMP e WAMP sono eccellenti soluzioni one-click per l'installazione di PHP, MySQL e Apache sul tuo Mac o PC, senza dover armeggiare con la riga di comando. Possono essere scelte utili nelle prime fasi del tuo apprendimento. WampServer è un ambiente di sviluppo che consente l'installazione con un solo clic di PHP, Apache e MySQL. Certo, questa non è la cosa più eccitante del mondo. In effetti, probabilmente stai pensando a te stesso "Perché non potrei scrivere "Hello world" direttamente nella pagina HTML e rimuovere la necessità di PHP tutti insieme?"È vero, per questo esempio non serve a nulla, tuttavia un linguaggio di scripting come PHP diventa particolarmente utile quando l'output deve essere dinamico in natura. mondo, si desidera che il saluto faccia riferimento a un valore trasmesso tramite la stringa di query dell'URL (il testo nella barra degli indirizzi che viene dopo il punto interrogativo). Ecco un esempio aggiornato, che realizza proprio questo! Ah, questo introduce alcune nuove tecniche. Innanzitutto, il singolo periodo che separa il Ciao stringa e che confonde Prova questo fuori caricando Una delle chiavi per maturare la programmazione è considerare ogni possibile percorso attraverso il tuo codice. Ad esempio, cosa succede se no Sebbene ci siano modi più semplici per tener conto di ciò, l'esempio sopra è un ottimo punto di partenza. È anche la tua prima introduzione alle affermazioni condizionali. Avvicinati al tuo codice nello stesso modo in cui gestirai gli scenari nella vita reale. Per esempio, "Se siamo senza latte, allora vai al negozio. Altrimenti, rimani a casa."Questa linea di pensiero potrebbe essere tradotta in PHP, usando la seguente logica: In questo bit di codice, solo una singola riga di testo verrà stampata sullo schermo. Il valore della variabile (un valore dinamico), Mancia: Per dichiarare le variabili in PHP, precedere qualsiasi nome con un segno di dollaro. Come best practice, optare per nomi di variabili leggibili su alternative criptiche. Tornando all'esempio precedente, fino a quando Purtroppo, non siamo ancora a casa libera. Una buona pratica di programmazione chiave è mettere la sicurezza in prima linea in ogni azione. Anche con questo esempio incredibilmente semplice, abbiamo aperto le porte a uno dei problemi di sicurezza più diffusi sul web: XSS (Cross-Site Scripting). Una vera comprensione di questo è assolutamente oltre lo scopo di questa lezione introduttiva (sono stati scritti interi libri su di esso), tuttavia, ecco un'illustrazione di base: cosa succede se Poiché questo valore non è stato disinfettato, al momento dell'esecuzione, in alcuni browser verrà visualizzata una finestra di avviso. I browser basati su Webkit (si pensi a Chrome e Safari) ora forniscono protezione contro questi tipi di attacchi. Tuttavia, questo non è sempre stato il caso, e ancora non è in Firefox e Internet Explorer. Yikes! Non possiamo averlo. Mentre la società moderna afferma che un uomo è innocente fino a prova contraria, lo stesso non è vero per il mondo della programmazione. Tutti gli input dell'utente sono colpevoli fino a quando non sono stati disinfettati! Ecco un esempio aggiornato che fa proprio questo: Con questa modifica, se qualcuno dovesse tentare un attacco XSS, saremo pronti! Grande; nessun danno fatto! Mentre PHP viene fornito con una pletora di funzioni native, ci saranno certamente momenti in cui richiederne uno. Fortunatamente, sono un gioco da ragazzi per scrivere. Pensa a una funzione come a un pezzo di logica riutilizzabile che può essere estratto, in modo che possa essere identificato e chiamato, usando un nome leggibile. Forse gestisci un night club (probabilmente se stai leggendo questo!) E hai bisogno di un modo semplice per accettare la data di nascita di una persona e calcolare se ha almeno ventuno anni. Una funzione personalizzata sarebbe un modo eccellente per svolgere questo compito. Il primo passo è definire una nuova funzione, chiamata È davvero abbastanza semplice! Ora, dobbiamo solo passarlo al buttafuori. Una funzione può essere attivata o chiamata, facendo riferimento al suo nome, seguito da una serie di parentesi: C'è un problema lampante con questo Avanziamo di alcuni mesi e, ora, la discoteca sta andando meglio che mai. In effetti, sta andando così bene al punto che il buttafuori non può tenere il passo. Il suo lavoro potrebbe essere più semplice se potesse filtrare attraverso un gruppo di persone alla volta. Pensa a un array come contenitore per i dati correlati. Potresti anche chiamarlo come una lista: una lista di tweet, un gruppo di familiari, una serie di date di nascita. Un array nell'ultima versione di PHP (5.4) può essere definito utilizzando un elenco separato da virgole tra parentesi, in questo modo: Questo singolo Ora, il buttafuori può filtrare rapidamente attraverso queste date di nascita e calcolare se consentire la persona o rifiutarle. UN Si noti come il buttafuori dichiara che l'anno di nascita È possibile, tuttavia, che il buttafuori si confonda quando non ha un collegamento tra l'anno di nascita della persona e il loro nome. PHP consente anche array associativi, che forniscono le funzionalità necessarie per associare un dato valore con una chiave. Ecco un esempio: Così va meglio. Come bonus aggiuntivo, il buttafuori può essere un po 'più amichevole per la persona, ora che conosce il suo nome. Quando si memorizzano le stringhe tra virgolette doppie, è possibile nidificare le variabili anziché utilizzare la concatenazione. Questo può prestarsi per una sintassi più leggibile. La programmazione orientata agli oggetti va ben oltre lo scopo di questo tutorial, ma, comunque, le classi meritano una menzione. Per ora, considerali come semplici contenitori per proprietà e metodi correlati. Ad esempio, ecco come potrebbe apparire una classe che rappresenta una singola persona: Notare che Per utilizzare questa classe, prova: Questo creerà una nuova istanza di A questo punto, però, la classe non è eccessivamente utile. Aggiungiamo un metodo o una funzione per designare il coniuge di una persona. Questo codice modificato ora include a Se un argomento del metodo è preceduto da un nome di classe ( Per recuperare il nome di mia moglie, potresti scrivere: Il concetto di programmazione orientata agli oggetti è molto più profondo di questo, ma per il momento è semplice. Aiuta a pensare alle classi come nomi singolari: un tweet, o utente, o cliente o file. Il vero apprezzamento per questo modello arriverà solo col tempo. Metti alla prova le tue nuove abilità trovate. Come potresti procedere con la registrazione e la visualizzazione dei tweet per un utente sulla pagina? Bene, il primo passo potrebbe essere quello di definire una classe che rappresenta un singolo Anche se all'inizio potrebbe sembrare schiacciante, dai un po 'di studio a questo frammento di codice e cerca di capire cosa sta succedendo in ogni fase del processo. Potresti scoprire che è abbastanza leggibile! Un interessante nuovo elemento di funzionalità deriva da Ora che abbiamo un contenitore abbastanza buono per un tweet, possiamo creare un paio di tweet, memorizzarli in un array e quindi, in definitiva, renderli nella pagina, usando un Inserito su: $ tweet-> pubDate Dopo aver visto l'output nel browser, dovresti vedere qualcosa sulla falsariga di: Eccellente, ma come possiamo salvare quei tweet? Finora, hai imparato l'essenziale: variabili, condizionali, funzioni, matrici, classi. C'è dell'altro da coprire, ma dovresti fare una ricerca per conto tuo, se necessario. Il prossimo passo nel tuo apprendimento è la persistenza. Ad esempio, come potresti tenere un registro di tutti i tweet? Un servizio di tweet che non lo fa ricorda i tweet sono terribili! Questo è quando l'idea di database entra in gioco. Pensa a una tabella di database come un foglio di calcolo di Excel. Può avere un numero qualsiasi di campi, come il nome della persona, l'età o l'indirizzo postale. Tuttavia, PHP non fornisce questo tipo di memoria in modo nativo. Invece, l'opzione più comune è MySQL, che è il database open source più popolare al mondo. L'installazione di MySQL non rientra nell'ambito di questo tutorial. Invece, fai riferimento a questo tutorial su Nettuts + per un completo walk-through. Ecco un esempio semplificato per iniziare a recuperare in modo sicuro le righe da una tabella di database. Non preoccuparti se sembra schiacciante. MySQL è la tua seconda lingua nuova da imparare. L'API PDO di PHP, così come il linguaggio di query stesso, richiedono tempo per imparare. Innanzitutto, avrai bisogno di un modo per connettersi al database. PDO è una delle tre API disponibili di PHP per la connessione a un database MySQL. Successivamente, aggiungeremo una funzione di supporto per recuperare tutti i record dalla tabella dei tweet. Presta molta attenzione al Questa funzione prepara la query, quindi recupera il set di risultati completo. Ora, con lo stage set, dobbiamo solo chiamare le funzioni, di conseguenza. Un modo semplice per scaricare il contenuto di una variabile è attraverso l'uso di $ Tweet-> pubDate Come per qualsiasi abilità, scrivere PHP fluente non richiede altro che il tuo tempo. Potrebbero essere necessarie centinaia di ore per essere completamente distrutti, ma va bene. Questo è divertente, giusto? Dovrebbe essere! Il modo migliore per imparare è fare. Costruisci progetti buttati via come se fossero fuori moda! Le tecniche delineate in questo tutorial ti porteranno alla prima fase, ma, sicuramente, man mano che le tue abilità progrediranno, passerai ad argomenti più avanzati, come framework PHP, schemi di progettazione e sviluppo basato sui test. Divertiti!
Cos'è il PHP?
index.php
file all'interno di una nuova cartella sul desktop e aggiungere:
CD
alla cartella del progetto e all'avvio del server con php -S localhost: 8888
. Questo comando si traduce in "Esegui un server e rendilo accessibile dal mio browser su localhost, porta 8888. "Vai avanti e provalo! Apri Google Chrome, vai a localhost: 8888
, e vedrai "Ciao mondo * "sulla pagina! Nifty! eco
è un costrutto linguistico che non fa altro che generare un determinato valore.
$ _GET
ti consente di concatenare (o raggruppare) valori. In questo caso, desideriamo stampare "Ciao, * "e quindi il valore rappresentato da $ _GET [ 'persona']
. Questo è ciò a cui ci riferiamo come un array super-globale. Per semplicità, pensa a questo come a * Get un valore dalla querystring dell'URL.localhost: 8888 / persona = Joe
. Se configurato correttamente, la pagina web dovrebbe ora visualizzare "Ciao, Joe."Gioca con esso sostituendo Joe
con il tuo nome Si noti come l'output viene aggiornato ogni volta che la pagina viene aggiornata? Questo semplicemente non sarebbe possibile con HTML statico.persona
la chiave è disponibile? Forse la stringa di query è stata omessa del tutto. In tal caso, verrà sicuramente generato un errore, come il persona
la chiave non esiste Qual è la soluzione? Mentre è vero che questo non è altro che un semplice esempio, è comunque importante considerare tutti i possibili risultati. Forniamo un valore predefinito.
$ outOfMilk = true; if ($ outOfMilk) echo 'Uscire allo store.'; else echo 'La colazione è servita.'
$ outOfMilk
, determinerà il flusso di controllo.
$ _GET [ 'persona']
è impostato (si consideri questo come uno pseudo-nome per "è disponibile"), quindi creane uno nuovo $ persona
variabile uguale al suo valore. Altrimenti, applica un valore predefinito. Se si ritorna al browser, ora dovrebbe funzionare correttamente, indipendentemente dal fatto che persona
la chiave esiste nella querystring.Sicurezza
$ _GET [ 'persona']
è uguale a, non una stringa, ma uno script?http: // localhost: 8888 / persona =
htmlspecialchars
è una funzione nativa di PHP che traduce vari simboli nelle loro contro-parti di entità. &
diventa &
, <
diventa <
, ecc. Questo lo rende lo strumento perfetto per fornire quel tocco in più di sicurezza. is meaningless if it is converted to
before being executed. The user will simply see:
Hello,
funzioni
isAdult
. Le funzioni possono accettare input esterni, che possono quindi essere utilizzati. Ciò consente ai dati restituiti dalla funzione di essere dinamici. In questo caso, per determinare se una persona è un adulto, dobbiamo conoscere il loro anno di nascita. Il passo finale è quello di restituire entrambi vero
o falso
, dipende dal fatto che l'anno in corso meno la data di nascita della persona sia di almeno ventuno.function isAdult ($ yob) $ currentYear = 2013; return $ currentYear - $ yob> = 21;
isAdult ()
. Tuttavia, se la funzione richiede un argomento, è possibile specificarlo all'interno di queste parentesi, come illustrato di seguito:if (isAdult (1985)) echo 'Come on in!'; else echo 'Per favore, vattene ora, prima chiamo tua madre.';
isAdult
funzione. L'anno in corso è stato hard-coded. Certo, funzionerà per tutto il 2013, ma per quanto riguarda l'anno prossimo? Sembra che anche questo valore debba essere dinamico. PHP fornisce a Data
funzione, che può essere utilizzata per calcolare l'anno corrente. In quanto tale, la funzione può essere aggiornata a:function isAdult ($ yob) $ currentYear = date ('Y'); return $ currentYear - $ yob> = 21;
Array
$ group = [1985, 1990, 1992, 1997];
$ gruppo
la variabile ora contiene più date di nascita. È possibile accedere ai valori al suo interno specificando un indice, ad esempio $ Gruppo [0]
. Gli array sono quelli a cui ci riferiamo come basati su zero. In traduzione, ciò significa che il primo elemento, o chiave, nell'array avrà un indice pari a zero. Come tale, per accedere al valore del 1992, faresti riferimento $ Gruppo [2]
.per ciascuno
la dichiarazione può essere utilizzata per questo tipo di filtro.$ group = [1985, 1990, 1992, 1997]; foreach ($ group as $ yob) if (isAdult ($ yob)) echo 'Come on in!'; else echo 'Per favore, vattene ora, prima chiamo tua madre.';
per ciascuno
persona nel gruppo
dovrebbe essere contenuto all'interno della variabile, yob $
. Successivamente, come ha fatto prima, passa quel valore al isAdult
funzione e procede di conseguenza.$ group = ['John' => 1985, 'Susan' => 1990, 'Joe' => 1992, 'Sara' => 1997];
$ group = ['John' => 1985, 'Susan' => 1990, 'Joe' => 1992, 'Sara' => 1997]; foreach ($ group as $ name => $ yob) if (isAdult ($ yob)) echo "Vieni dentro, $ name!"; else echo "Per favore, lascia ora $ name, prima chiamo tua madre.";
Classi
class Person public $ name; pubblico $ età; funzione pubblica __construct ($ name, $ age) $ this-> nome = $ nome; $ this-> age = $ age;
__costruire()
metodo? Questo è indicato come un metodo magico e verrà attivato immediatamente dopo l'istanziazione. Quando questo metodo viene attivato, accetta un nome e l'età, quindi li collega all'oggetto.$ me = new Person ('Jeffrey', 28);
Persona
classe. Questa istanza, che è memorizzata nel me $
variabile, può essere indicato come un oggetto. Ora, non c'è nulla che ti impedisce di creare più istanze di questa classe - e, di fatto, in progetti del mondo reale, lo farai! La classe è solo un progetto.class Person public $ name; pubblico $ età; pubblico $ coniuge; funzione pubblica __construct ($ name, $ age) $ this-> nome = $ nome; $ this-> age = $ age; matrimonio pubblico (Persona $ coniuge) $ this-> coniuge = $ coniuge; $ me = new Person ('Jeff', 28); $ her = new Person ('Allison', 28); $ Me-> sposarsi ($ lei);
sposare()
metodo che aggiornerà a $ coniuge
proprietà sull'oggetto. Ora hai un collegamento diretto tra le due persone.
Persona $ coniuge
), indicato come hint di tipo, questo designa che il parametro deve essere un'istanza della classe data, oppure verrà generato un errore.echo $ me-> coniuge-> nome; // Allison
Mani su
Tweet
. Questa classe dovrebbe memorizzare le proprietà per il corpo del tweet e la data di pubblicazione. Inoltre, dovrebbe garantire che il corpo del tweet non superi i 140 caratteri. Ecco una prima pugnalata a una classe del genere:classe Tweet corpo pubblico $; pubblico $ pubDate; funzione pubblica __construct ($ body) $ this-> setBody ($ body); $ this-> setPubDate (new DateTime); public function setBody ($ body) if (strlen ($ body)> 140) lancia una nuova InvalidArgumentException; $ this-> body = $ body; public setPubDate (DateTime $ date) $ this-> pubDate = $ date-> format ('Y / m / d H: i: s');
setBody
metodo. Se il testo fornito supera 140 caratteri, che possiamo calcolare usando PHP strlen
funzione, quindi dovremmo fare un'eccezione, perché infrange le regole di un tweet. Un'eccezione può essere generata usando la sintassi, lanciare un nuovo ExceptionType
.per ciascuno
dichiarazione.$ tweets = []; # aggiungi due nuovi tweet all'array $ tweets [] = new Tweet ('Going to the store.'); $ tweets [] = new Tweet ('Back from the store!'); # Filtra e visualizza sulla pagina. foreach ($ tweets come $ tweet) echo "
$ Tweet-> corpo
"; eco "
Conservazione
function connect () $ conn = new PDO ('mysql: host = localhost; dbname = DB_NAME', 'USERNAME', 'PASSWORD'); $ conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION); return $ conn;
domanda
argomento del metodo, SELEZIONA * DA tweet
. Questo è un linguaggio speciale per interrogare il database. In questo caso, stiamo usando il *
simbolo per fare riferimento a tutte le righe. Come tale, stiamo selezionando tutte le righe dalla tabella, chiamate tweets
.function fetchTweets ($ conn) $ stmt = $ conn-> query ('SELECT * FROM tweets'); return $ stmt-> fetchAll (PDO :: FETCH_OBJ);
# Connetti al DB $ conn = connect (); # Recupera tutte le righe dalla tabella dei partecipanti var_dump (fetchTweets ($ conn));
var_dump
funzione. Se si passa l'output di fetchTweets ($ conn)
a questa funzione, dopo averla visualizzata nel browser, vedrai qualcosa sulla falsariga di:var_dump
è utile per il debug, ma per scopi di produzione, è meglio filtrare i risultati e renderli correttamente nella pagina. Il per ciascuno
l'affermazione, che hai già familiarità, gestirà il lavoro abbastanza bene!$ tweets = fetchTweets ($ conn); foreach ($ tweets come $ tweet) echo "
$ Tweet-> corpo
"; eco "
Conclusione
Tut consigliati + risorsa premium