PHP Tutorial
Iniziare con PHP
Ricerca…
Osservazioni
PHP (acronimo ricorsivo per PHP: Hypertext Preprocessor) è un linguaggio di programmazione open source ampiamente utilizzato. È particolarmente adatto allo sviluppo web. La cosa unica di PHP è che serve sia principianti che sviluppatori esperti. Ha una bassa barriera all'ingresso, quindi è facile iniziare e, allo stesso tempo, offre funzionalità avanzate offerte in altri linguaggi di programmazione.
Open-Source
È un progetto open-source. Sentiti libero di essere coinvolto .
Specifica della lingua
PHP ha una specifica di lingua .
Versioni supportate
Attualmente, ci sono tre versioni supportate : 5.6, 7.0 e 7.1.
Ogni ramo di rilascio di PHP è completamente supportato per due anni dalla sua versione stabile iniziale. Dopo questo periodo biennale di supporto attivo, ciascun ramo viene quindi supportato per un ulteriore anno solo per problemi di sicurezza critici. I rilasci durante questo periodo vengono effettuati in base alle necessità: potrebbero esserci più rilasci di punti o nessuno, a seconda del numero di rapporti.
Versioni non supportate
Una volta completati i tre anni di supporto, la filiale raggiunge la fine della sua vita e non è più supportata.
È disponibile una tabella dei rami di fine vita .
Issue Tracker
Bug e altri problemi sono tracciati su https://bugs.php.net/ .
Mailing list
Le discussioni sullo sviluppo e l'utilizzo di PHP sono contenute nelle mailing list di PHP .
Documentazione ufficiale
Si prega di aiutare a mantenere o tradurre la documentazione ufficiale di PHP .
Potresti usare l'editor su edit.php.net . Dai un'occhiata alla nostra guida per i contributori .
Versioni
PHP 7.x
Versione | Supportato fino a | Data di rilascio |
---|---|---|
7.1 | 2019/12/01 | 2016/12/01 |
7.0 | 2018/12/03 | 2015/12/03 |
PHP 5.x
Versione | Supportato fino a | Data di rilascio |
---|---|---|
5.6 | 2018/12/31 | 2014/08/28 |
5.5 | 2016/07/21 | 2013/06/20 |
5.4 | 2015/09/03 | 2012-03-01 |
5.3 | 2014/08/14 | 2009-06-30 |
5.2 | 2011-01-06 | 2006-11-02 |
5.1 | 2006-08-24 | 2005-11-24 |
5.0 | 2005-09-05 | 2004-07-13 |
PHP 4.x
Versione | Supportato fino a | Data di rilascio |
---|---|---|
4.4 | 2008-08-07 | 2005-07-11 |
4.3 | 2005-03-31 | 2002/12/27 |
4.2 | 2002/09/06 | 2002-04-22 |
4.1 | 2002/03/12 | 2001/12/10 |
4.0 | 2001/06/23 | 2000/05/22 |
Versioni legacy
Versione | Supportato fino a | Data di rilascio |
---|---|---|
3.0 | 2000/10/20 | 1998/06/06 |
2.0 | 1997/11/01 | |
1.0 | 1995/06/08 |
Output HTML dal server web
PHP può essere usato per aggiungere contenuti a file HTML. Mentre l'HTML viene elaborato direttamente da un browser Web, gli script PHP vengono eseguiti da un server Web e l'HTML risultante viene inviato al browser.
Il seguente codice HTML contiene un'istruzione PHP che aggiungerà Hello World!
all'output:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p><?php echo "Hello world!"; ?></p>
</body>
</html>
Quando questo viene salvato come script PHP ed eseguito da un server web, il seguente codice HTML verrà inviato al browser dell'utente:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
echo
ha anche una sintassi di scelta rapida, che ti consente di stampare immediatamente un valore. Prima di PHP 5.4.0, questa breve sintassi funziona solo con l'impostazione di configurazione short_open_tag abilitata.
Ad esempio, considera il seguente codice:
<p><?= "Hello world!" ?></p>
Il suo output è identico all'output di quanto segue:
<p><?php echo "Hello world!"; ?></p>
Nelle applicazioni del mondo reale, tutti i dati inviati da PHP a una pagina HTML devono essere opportunamente scappati per evitare attacchi XSS ( Cross-site scripting ) o danneggiamento del testo.
Vedi anche: Stringhe e PSR-1 , che descrive le migliori pratiche, incluso l'uso corretto dei tag brevi ( <?= ... ?>
).
Output non HTML da server web
In alcuni casi, quando si lavora con un server Web, potrebbe essere necessario ignorare il tipo di contenuto predefinito del server Web. Potrebbero esserci casi in cui è necessario inviare dati come plain text
, JSON
o XML
, ad esempio.
La funzione header()
può inviare un'intestazione HTTP non elaborata. È possibile aggiungere l'intestazione Content-Type
per notificare al browser il contenuto che stiamo inviando.
Considera il seguente codice, in cui impostiamo Content-Type
come text/plain
:
header("Content-Type: text/plain");
echo "Hello World";
Questo produrrà un documento di testo semplice con il seguente contenuto:
Ciao mondo
Per produrre contenuti JSON , utilizzare invece il tipo di contenuto application/json
:
header("Content-Type: application/json");
// Create a PHP data array.
$data = ["response" => "Hello World"];
// json_encode will convert it to a valid JSON string.
echo json_encode($data);
Questo produrrà un documento di tipo application/json
con il seguente contenuto:
{"risposta": "Hello World"}
Si noti che la funzione header()
deve essere chiamata prima che PHP produca qualsiasi output, oppure il server Web avrà già inviato le intestazioni per la risposta. Quindi, considera il seguente codice:
// Error: We cannot send any output before the headers
echo "Hello";
// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";
Questo produrrà un avvertimento:
Attenzione: impossibile modificare le informazioni dell'intestazione - le intestazioni già inviate da (l'output è stato avviato su /dir/example.php:2) in /dir/example.php sulla riga 3
Quando si usa header()
, il suo output deve essere il primo byte che viene inviato dal server. Per questo motivo è importante non avere linee o spazi vuoti all'inizio del file prima del tag di apertura PHP <?php
. Per lo stesso motivo, è considerato best practice (vedere PSR-2 ) omettere il tag di chiusura PHP ?>
Dai file che contengono solo PHP e da blocchi di codice PHP alla fine di un file.
Visualizza la sezione del buffer di output per sapere come "catturare" il tuo contenuto in una variabile da pubblicare successivamente, ad esempio, dopo aver emesso le intestazioni.
Ciao mondo!
Il costrutto linguistico più utilizzato per stampare l'output in PHP è echo
:
echo "Hello, World!\n";
In alternativa, puoi anche usare la print
:
print "Hello, World!\n";
Entrambe le affermazioni svolgono la stessa funzione, con piccole differenze:
-
echo
ha un ritornovoid
, mentreprint
restituisce unint
con valore1
-
echo
può accettare più argomenti (senza parentesi), mentre per laprint
necessario un solo argomento -
echo
è leggermente più veloce dellaprint
Sia l' echo
che la print
sono costrutti linguistici, non funzioni. Ciò significa che non richiedono parentesi attorno ai loro argomenti. Per coerenza cosmetica con le funzioni, è possibile includere le parentesi. Numerosi esempi di utilizzo di echo
e print
sono disponibili altrove .
Sono disponibili anche printf
stile C e relative funzioni, come nell'esempio seguente:
printf("%s\n", "Hello, World!");
Vedi Uscita del valore di una variabile per un'introduzione completa sull'output di variabili in PHP.
Separazione delle istruzioni
Proprio come la maggior parte degli altri linguaggi in stile C, ogni istruzione termina con un punto e virgola. Inoltre, un tag di chiusura viene utilizzato per terminare l'ultima riga di codice del blocco PHP.
Se l'ultima riga del codice PHP termina con un punto e virgola, il tag di chiusura è facoltativo se non c'è alcun codice che segue quella riga di codice finale. Ad esempio, possiamo escludere il tag di chiusura dopo echo "No error";
nel seguente esempio:
<?php echo "No error"; // no closing tag is needed as long as there is no code below
Tuttavia, se c'è un altro codice che segue il tuo blocco di codice PHP, il tag di chiusura non è più opzionale:
<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
<body>
</body>
</html>
Possiamo anche lasciare il punto e virgola dell'ultima istruzione in un blocco di codice PHP se quel blocco di codice ha un tag di chiusura:
<?php echo "I hope this helps! :D";
echo "No error" ?>
In generale, si consiglia di utilizzare sempre un punto e virgola e utilizzare un tag di chiusura per ogni blocco di codice PHP, tranne l'ultimo blocco di codice PHP, se nessun altro codice segue quel blocco di codice PHP.
Quindi, il tuo codice dovrebbe fondamentalmente apparire come questo:
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon but leave out the closing tag";
CLI PHP
PHP può anche essere eseguito direttamente dalla riga di comando utilizzando la CLI (Command Line Interface).
La CLI è fondamentalmente la stessa di PHP dei server Web, tranne alcune differenze in termini di input e output standard.
Attivazione
La CLI di PHP consente quattro modi per eseguire il codice PHP:
- Input standard. Esegui il comando
php
senza alcun argomento, ma inserisci il codice PHP all'interno di esso:echo '<?php echo "Hello world!";' | php
- Nome file come argomento. Esegui il comando
php
con il nome di un file sorgente PHP come primo argomento:php hello_world.php
- Codice come argomento Utilizzare l'opzione
-r
nel comandophp
, seguito dal codice da eseguire. I<?php
open non sono richiesti, poiché tutto nell'argomento è considerato come codice PHP:php -r 'echo "Hello world!";'
- Shell interattiva Utilizzare l'opzione
-a
nel comandophp
per avviare una shell interattiva. Quindi, digita (o incolla) il codice PHP e premi Invio :$ php -a Interactive mode enabled php > echo "Hello world!"; Hello world!
Produzione
Tutte le funzioni oi controlli che generano l'output HTML nel server Web PHP possono essere utilizzati per produrre l'output nel flusso stdout (descrittore di file 1) e tutte le azioni che generano l'output nei log degli errori nel server Web PHP genereranno l'output nel flusso stderr (file descrittore 2).
Example.php
<?php
echo "Stdout 1\n";
trigger_error("Stderr 2\n");
print_r("Stdout 3\n");
fwrite(STDERR, "Stderr 4\n");
throw new RuntimeException("Stderr 5\n");
?>
Stdout 6
Riga di comando della shell $ php Example.php 2>stderr.log >stdout.log;\
> echo STDOUT; cat stdout.log; echo;\
> echo STDERR; cat stderr.log\
STDOUT
Stdout 1
Stdout 3
STDERR
Stderr 4
PHP Notice: Stderr 2
in /Example.php on line 3
PHP Fatal error: Uncaught RuntimeException: Stderr 5
in /Example.php:6
Stack trace:
#0 {main}
thrown in /Example.php on line 6
Ingresso
Vedi: Command Line Interface (CLI)
Server integrato PHP
PHP 5.4+ viene fornito con un server di sviluppo integrato. Può essere utilizzato per eseguire applicazioni senza dover installare un server HTTP di produzione come nginx o Apache. Il server integrato è progettato solo per essere utilizzato a fini di sviluppo e test.
Può essere avviato utilizzando il flag -S
:
php -S <host/ip>:<port>
Esempio di utilizzo
- Creare un file
index.php
contenente:
<?php
echo "Hello World from built-in PHP server";
Esegui il comando
php -S localhost:8080
dalla riga di comando. Non includerehttp://
. Ciò avvierà un server Web in ascolto sulla porta 8080 utilizzando la directory corrente in cui ci si trova come root del documento.Apri il browser e vai a
http://localhost:8080
. Dovresti vedere la tua pagina "Hello World".
Configurazione
Per sovrascrivere la root del documento predefinita (cioè la directory corrente), usa il flag -t
:
php -S <host/ip>:<port> -t <directory>
Ad esempio se hai una directory public/
nel tuo progetto puoi servire il tuo progetto da quella directory usando php -S localhost:8080 -t public/
.
logs
Ogni volta che viene effettuata una richiesta dal server di sviluppo, una voce di registro come quella sottostante viene scritta sulla riga di comando.
[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
Tag PHP
Esistono tre tipi di tag per indicare i blocchi PHP in un file. Il parser PHP sta cercando i tag di apertura e (se presenti) di chiusura per delimitare il codice da interpretare.
Tag standard
Questi tag sono il metodo standard per incorporare il codice PHP in un file.
<?php
echo "Hello World";
?>
Tag eco
Questi tag sono disponibili in tutte le versioni di PHP e poiché PHP 5.4 è sempre abilitato. Nelle versioni precedenti, i tag echo potevano essere abilitati solo in combinazione con tag brevi.
<?= "Hello World" ?>
Tag brevi
Puoi disabilitare o abilitare questi tag con l'opzione short_open_tag
.
<?
echo "Hello World";
?>
Tag brevi:
- non sono consentiti in tutti i principali standard di codifica PHP
- sono scoraggiati nella documentazione ufficiale
- sono disabilitati di default nella maggior parte delle distribuzioni
- interferire con le istruzioni di elaborazione XML inline
- non sono accettati nelle richieste di codice dalla maggior parte dei progetti open source
Tag ASP
Abilitando l'opzione asp_tags
, è possibile utilizzare tag in stile ASP.
<%
echo "Hello World";
%>
Queste sono una stranezza storica e non dovrebbero mai essere usate. Sono stati rimossi in PHP 7.0.