PHPIniziare con PHP

Download PHP for free

Osservazioni

inserisci la descrizione dell'immagine qui

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>
 
PHP 5.x 5.4

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 ( <?= ... ?> ).

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 ritorno void , mentre print restituisce un int con valore 1
  • echo può accettare più argomenti (senza parentesi), mentre per la print necessario un solo argomento
  • echo è leggermente più veloce della print

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";
 

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.

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

  1. Creare un file index.php contenente:
<?php
echo "Hello World from built-in PHP server";
 
  1. Esegui il comando php -S localhost:8080 dalla riga di comando. Non includere http:// . Ciò avvierà un server Web in ascolto sulla porta 8080 utilizzando la directory corrente in cui ci si trova come root del documento.

  2. 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]: /
 

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:

  1. Input standard. Esegui il comando php senza alcun argomento, ma inserisci il codice PHP all'interno di esso:
    echo '<?php echo "Hello world!";' | php
  2. Nome file come argomento. Esegui il comando php con il nome di un file sorgente PHP come primo argomento:
    php hello_world.php
  3. Codice come argomento Utilizzare l'opzione -r nel comando php , seguito dal codice da eseguire. I <?php open non sono richiesti, poiché tutto nell'argomento è considerato come codice PHP:
    php -r 'echo "Hello world!";'
  4. Shell interattiva Utilizzare l'opzione -a nel comando php 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)

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";
?>
 
PHP 5.x 5.4

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
PHP 5.x 5.6

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.

Ambito variabile