PHP
PHP linguaggio di programmazione | |
---|---|
![]() | |
Autore | PHP Group |
Data di origine | 8 giugno 1995 |
Ultima versione | 8.3.11 (29 agosto 2024) e 8.4.0 Beta 4 (29 agosto 2024) |
Utilizzo | Applicazioni web lato server |
Paradigmi | Imperativo,funzionale,orientato agli oggetti,procedurale,riflessione |
Tipizzazione | Debole |
Estensionicomuni | php e phar |
Influenzato da | C++,Perl,C,Java,Tcl,HTMLeJavaScript |
Implementazione di riferimento | |
Implementazione | Interprete |
Sistema operativo | Multipiattaforma |
Licenza | Licenza PHP |
Sito web | www.php.net |
PHP(acronimo ricorsivodi "PHP: Hypertext Preprocessor",preprocessorediipertesti;originariamente acronimo di "PersonalHome Page"[1]) è unlinguaggio di scriptinginterpretato,originariamente concepito per la programmazione dipagine web dinamiche.L'interprete PHP è unsoftware liberodistribuito sotto lalicenza PHP[2].
Attualmente è principalmente utilizzato per sviluppareapplicazioni weblato server,ma può essere usato anche per scriverescriptariga di comandoo applicazionistand-aloneconinterfaccia grafica.Un esempio di software scritto in PHP èMediaWiki,su cui si basano i progettiwikidellaWikimedia FoundationcomeWikipedia.
Grazie soprattutto alla diffusione diWordpress[3](CMSscritto in PHP), secondo le statistiche, è il linguaggio lato server più usato al mondo[4][5][6].
Storia
[modifica|modifica wikitesto]Origini
[modifica|modifica wikitesto]Nato nel1994ad opera del daneseRasmus Lerdorf,PHP era in origine una raccolta discriptCGIche permettevano una facile gestione delle pagine personali. Secondo l'annuncio originale di PHP 1.0 da parte dell'autore sul newsgroup comp.infosystems.www.authoring.cgi il significato originario dell'acronimoeraPersonalHomePage.[7]
Il pacchetto originario venne in seguito esteso e riscritto dallo stesso Lerdorf inC,aggiungendo funzionalità quali il supporto alla base di datimSQL,e iniziò a chiamarsi PHP/FI, doveFIsta perFormInterpreter(interprete diform), prevedendo la possibilità di integrare il codice PHP nel codiceHTMLin modo da semplificare la realizzazione di pagine dinamiche. Nel1997si stimava che circa 50.000 siti Web erano basati su PHP.[8]
PHP 3
[modifica|modifica wikitesto]Il linguaggio cominciò a godere di una certa popolarità tra i progettiopen sourcedelwebe venne così notato daZeev SuraskieAndi Gutmans,due giovani programmatori. I due collaborarono nel1998con Lerdorf allo sviluppo della terza versione di PHP, il cui acronimo assunse il significato attuale, riscrivendone il motore che fu battezzato Zend da una contrazione dei loro nomi. Le caratteristiche chiave della versione PHP 3.0, frutto del loro lavoro, erano la straordinaria estensibilità, la connettività allabase di datie il supporto iniziale per ilparadigma a oggetti[9].Verso la fine del 1998 PHP 3.0 era installato su circa il 10% dei server Web in Internet.
PHP 4
[modifica|modifica wikitesto]PHP diventò a questo punto sufficientemente maturo da competere con i linguaggilato servercomeASP,sviluppato daMicrosoft,e cominciò ad essere usato su larga scala. La versione 4 di PHP venne lanciata nel2000e prevedeva notevoli migliorie[10].
La popolarità del linguaggio PHP è in costante crescita grazie alla sua flessibilità: nel giugno2001ha superato il milione di siti che lo utilizzano. Nell'ottobre2002più del 45% deiserverApacheusava PHP[11].
Nel 2004 è stato uno dei linguaggi principali con cui è stato creatoFacebook.
Nel gennaio2005è stato insignito del titolo di "Programming Language of 2004" dalTIOBE Programming Community Index[12],classifica che valuta la popolarità dei linguaggi di programmazione sulla base di informazioni raccolte daimotori di ricerca.
Nel2005la configurazioneLAMP(Linux,Apache,MySQL,PHP) ha superato il 50% del totale dei server sulla rete mondiale.
PHP 5
[modifica|modifica wikitesto]Nel 2008 PHP 5 è diventata l'unica versione stabile in fase di sviluppo. A partire da PHP 5.3.0 il linguaggio implementa una funzione chiamata "late static binding" che può essere utilizzata per fare riferimento alla classe chiamata in un contesto di eredità statica.[13][14]
A partire dal 5 febbraio 2008, a causa dell'iniziativaGoPHP5sostenuta da una serie di sviluppatori PHP, molti dei progetti open-source di alto profilo cessano di supportare PHP 4 nel nuovo codice e promuovono il passaggio da PHP 4 a PHP 5.[15]
La versione 5 di PHP ha raggiunto la release 5.6 prima di essere abbandonata dal punto di vista dello sviluppo e supporto nel gennaio 2019.[16]
PHP 7
[modifica|modifica wikitesto]Il 3 dicembre 2015 è stata pubblicata la versione 7, arrivata fino alla versione 7.4.33.[17]Il supporto della versione 7.4 è terminato nel novembre 2022.[18]
PHP 8
[modifica|modifica wikitesto]Il 27 novembre 2020 è stata pubblicata la versione 8.[19]È la prima versione di PHP a supportare lacompilazione just-in-timeaumentando di gran lunga le prestazioni.[20]
Caratteristiche
[modifica|modifica wikitesto]PHP riprende per molti versi lasintassidelC,come peraltro fanno molti linguaggi moderni, e delPerl.È un linguaggio atipizzazione debolee dalla versione 5 migliora il supporto al paradigma diprogrammazione ad oggetti.Certi costrutti derivati dalC,come gli operatori frabite la gestione distringhecomearray,permettono in alcuni casi di agire a basso livello; tuttavia è fondamentalmente unlinguaggio di alto livello,caratteristica questa rafforzata dall'esistenza delle sue oltre 3.000 funzioniAPIdel nucleo base.
PHP è in grado di interfacciarsi a innumerevoliDBMStra cuiMySQL,PostgreSQL,MariaDB,Oracle,Firebird,IBM DB2,Microsoft SQL Servere anche basi di dati NoSql come MongoDB. Supporta numerose tecnologie comeXML,SOAP,IMAP,FTP,CORBA.Si integra anche con altri linguaggi/piattaforme qualiJavae.NETed esiste unwrapperper tutte le librerie più diffuse come CURL,GD,Gettext,GMP, Ming,OpenSSLed altro.
Fornisce un'APIspecifica per interagire conApache,sebbene funzioni naturalmente con numerosi altriserver web.È ben integrato senza l'uso di componenti esterni con il DBMSMySQL/MariaDBper il quale possiede più di una API (mysql, mysqli, PDO). A partire dalla versione 5, PHP integra al suo interno una piccola base di dati embedded,SQLite.[21]Per questi motivi esiste un'enorme quantità discriptelibreriein PHP disponibili liberamente suInternet.
Dispone di un archivio chiamatoPEARche mette a disposizione unframeworkdilibrerieriusabili per lo sviluppo di applicazioni PHP e diPECLche raccoglie tutte le estensioni conosciute scritte in C.
PHP non ha ancora un supporto nativo per le stringheUnicodeo multibyte; il supporto Unicode è in fase di sviluppo per una futura versione di PHP e consentirà di usare caratteri non ASCII in stringhe e nomi di funzioni, classi e metodi.
Sicurezza
[modifica|modifica wikitesto]La percentuale di software non sicuro scritto in PHP, sul totale di tutte le falle di sicurezza nei software elencate dalCommon Vulnerabilities and Exposures,ammontava al: 12% nel 2003, 20% nel 2004, 28% nel 2005, 43% nel 2006, 36% nel 2007, 34.8% nel 2008, 29.9% nel 2009 e 27.2% nel 2010[22].La quasi totalità di queste vulnerabilità note ha origine da mancati adempimenti dellebest practiceda parte dei programmatori e dai relativi abusi di particolari funzionalità offerte dal PHP che in determinati utilizzi danno origine a gravi vulnerabilità. Un esempio noto sono i problemi legati agli abusi diRegister globalseMagic quotes,funzionalità che se usate in modo errato potevano degenerare in vere e propriebackdoorall'interno del proprio programma PHP. Per evitare problemi di questo tipo molte di queste funzionalità sono state via via deprecate se non addirittura rimosse, come le due citate, nel susseguirsi delle versioni di PHP[23][24].
La maggior parte del software con problemi di sicurezza (2006) è associabile temporalmente con vecchie versioni di PHP in cui le configurazioni di default lasciavano spazio a una relativa semplicità nello scrivere software con potenziali problemi di sicurezza anche gravi.
È sempre buona norma rivedere la propria configurazione di PHP, contenuta generalmente nel file php.ini, per controllare le funzionalità attivate. Di solito nel file stesso si documentano 3 tipi di configurazioni: Configurazione di PHPdi default,configurazione in unambiente di sviluppoche consente per esempio di vedere a video gli errori e configurazione in unambiente di produzionein cui tipicamente gli errori vengono scritti in un file di log.
Nel sito ufficiale è presente l'archivio storico delleversionidismesse, aggiornato a novembre 2022.[16]
Attacchi hacker
[modifica|modifica wikitesto]PHP può essere soggetto a diversi attacchi hacker[25]:
- Remote Code Execution (RCE) si verifica quando un utente malintenzionato è in grado di caricare codice sul sito Web ed eseguirlo.
- SQL Injectiono SQLi: permette agli attaccanti di effettuare attività dispoof identify,modificare dati esistenti, causare repudiation issues come l'annullamento di transazioni o la modifica dei bilanci, permette di ottenere tutti i dati sul sistema, eliminare o rendere inaccessibile dei dati, e creare o compromettere gli utenti del database server.
- Cross-Site Scripting(XSS) si verifica quando un utente malintenzionato causa il caricamento di codice dannoso nel browser del visitatore del sito Web e la sua esecuzione. Questo codice può quindi eseguire azioni dannose come il furto di cookie utente.
- Cross-Site Request Forgery(CSRF): si verifica quando un utente malintenzionato può creare un collegamento e ottenere che un utente con accesso privilegiato lo clicchi per creare (per esempio) un nuovo utente "amministratore" con una password che conosce.
- Iniezione di oggetti PHP. Si verifica quando un'applicazione PHP prende l'input dell'utente e lo passa a una funzione chiamata
unserialize()
che prende un oggetto immagazzinato e lo trasforma in un oggetto in memoria. - Remote e Local File Inclusion (RFI e LFI). Quando un'applicazione PHP accetta l'input dell'utente e lo passa a una funzione progettata per caricare un file. Se questo file è un URL, la funzione può caricare codice PHP da un altro sito Web specificato da un utente malintenzionato che verrà quindi eseguito sul sito Web attaccato. Le funzioni che possono essere suscettibili a RFI e LFI in PHP sono:include, include_once, fopen, file_get_contents, require, require_once.
Esempi di codice
[modifica|modifica wikitesto]Il seguente programma "Hello, World!"è scritto in codice PHP incorporato in un documento HTML:
<!DOCTYPE html>
<html>
<head>
<title>PHP "Hello, World!" program</title>
</head>
<body>
<?php
echo'<p>Hello, World!</p>';
?>
</body>
</html>
Variabili
[modifica|modifica wikitesto]I nomi di variabili in PHP iniziano sempre con il simbolo del dollaro ($
) e il carattere successivo non deve essere un numero, ad esempio$1
o$2
non sono nomi di variabili valide.
I nomi delle variabili sonocase-sensitive,ovvero$ancora
e$ANCORA
sono due variabili distinte.
Una variabile può contenere tutti i caratteriA-Z
,a-z
,0-9
e_
.Una volta definite esse vengono istanziate senza definirne esplicitamente il "tipo":
$ciao="Ciao mondo!";
Per mostrare il contenuto di$ciao
,è possibile usare l'istruzioneecho
:
echo$ciao;
che visualizza “Ciao mondo!
”.Se invece la variabile$ciao
non esistesse generalmenteecho
genererebbe un errore non fatale (Notice
).
Stringhe
[modifica|modifica wikitesto]In PHP una stringa di caratteri alfanumerici si rappresenta in due modi: racchiudendola tra apici doppi ("
) o singoli ('
). Quando si usano gli apici doppi vengono interpretati eventuali caratteri speciali (per esempio la tabulazione,"col1\tcol2 "
o il carattere di fine riga,"riga1\nriga2 "
) e viene restituito il contenuto delle variabili, ovvero:
echo"Ciao vale:$ciao";
Stampa:"Ciao vale: Ciao mondo!"
.Con gli apici singoli la stringa è salvata e utilizzata così com'è.
Esempio di composizione della frase "Wikipedia è meravigliosa" in due modi: usando gli apici singoli e doppi:
<?php
$uno='Wikipedia';
$due='è';
$tre='meravigliosa';
echo$uno.' '.$due.' '.$tre;
echo"$uno$due$tre";
Array (e foreach)
[modifica|modifica wikitesto]PHP gestisce gliarraycome dellemappe associative,ossia come un elenco di chiavi associate univocamente a un certo valore. Gli array in PHP possono perciò essere usati come una comune matrice, come una lista (vettore), uno stack, una coda o altro. Inoltre un qualsiasi elemento dell'array può a sua volta contenere altri array, anche multidimensionali[26]e tutti gli elementi dell'array o dei sotto-array possono essere fra loro di tipi di variabile diversi, dando così la possibilità di creare strutture dati complesse.
Gli array sono dinamici, infatti possono essere rimossi tramiteunset();
[27].
Dato che gli array in PHP sono associativi, possono essere usati tramite un costrutto chiamatoforeach
[28]che rende praticabile l'accesso ai contenuti ricavando tutte le singole associazioni di chiave → valore dell'array.
Codice d'esempio di un array associativo in cui ad ogni nome di città corrisponde il numero di abitanti. L'esempio visualizza a video ogni città con il suo numero di abitanti e poi la somma di tutti gli abitanti.
<?php
$residenti=[
'Torino'=>908551,
'Milano'=>1315791,
'Roma'=>2753000
];
$somma=0;
foreach($residentias$città=>$nResidenti){
echo"La città$cittàha$nResidentiabitanti ";
$somma+=$nResidenti;
}
echo"In tutto ci sono$sommaabitanti! ";
L'output del codice è:La città Torino ha 908 551 abitanti. La città Milano ha 1 315 791 abitanti. La città Roma ha 2 753 000 abitanti. In tutto ci sono 4 977 342 abitanti
Per approfondimenti vedere ladocumentazione ufficialeonline[26].
Funzioni
[modifica|modifica wikitesto]Lefunzioni in PHPpossono avere un insieme misto di parametri opzionali con valori predefiniti e parametri obbligatori.[29]
Esempio di funzione con un parametro obbligatorio e uno opzionale con valore predefinito.
<?php
/**
* Programma che effettui
* la somma di minimo 2 numeri
* e massimo 3
*/
functionsomma(int$n1=0,int$n2=0,int$n3=0):int{
return$n1+$n2+$n3;
}
echosomma(1,5);//OUTPUT: 6
echosomma(1,24);//OUTPUT: 25
echosomma(3,4,2);//OUTPUT: 9
echosomma(n1:5,n3:5);//OUTPUT: 10
Qualunque variabile di qualunque tipo creata dentro alla funzione èlocale.Per specificare variabili globali dentro alla funzione si può usareglobal $variabile
[30]
Esempio:
<?php
functionesperimento():void{
global$a;
$a="tre";
$b="quattro";
echo"Durante:$a$b";
}
$a="uno";
$b="due";
echo"Prima:$a$b";
esperimento();
echo"Dopo:$a$b";
Il risultato sarà:Prima uno due Durante tre quattro Dopo tre due
.
Inclusioni
[modifica|modifica wikitesto]È possibile includere uno script PHP all'interno di un altro per eseguirne il codice, per evitare codice ridondante e per accedere a variabili, funzioni e classi definite nello script incluso.
Per farlo si utilizza una delle seguenti istruzioni:include
[31],include_once
[32],require
[33]erequire_once
[34].Esempio:
<?php
include'header.php';
echo"Ciao mondo!";
include'footer.php';
Tipi di inclusione:
- Si usa
include
quando si vuole che venga inviato soltanto unsegnale di avvisosenza interrompere l'esecuzione del programma qualora la pagina da includere non esista. - Si usa
require
quando si vuole che venga inviato unsegnale di errore fatalee il programma venga interrotto se la pagina da includere non esiste. - Si usa
include_once
,require_once
quando il comando potrebbe essere ripetuto più volte anche in file diversi, creando così (potenzialmente) una inclusione ricorsiva, ma si vuole che la pagina non venga inclusa più di una volta. Se la pagina da includere non esiste si comportano analogamente ai rispettivi sopra citati.
Gestione dei parametri
[modifica|modifica wikitesto]PHP permette il passaggio di informazioni da una pagina all'altra attraverso le diverse funzionalità supportate dall'HTTP.Nello specifico, richieste di tipoGET(informazioni parametrizzate nellaquery stringdell'URL),POST(informazioni generalmente con origine da un precedente invio di unform) e deicookie(informazioni contenute in piccole stringhe di testo salvate fisicamente nella memoria locale di un browser), insieme al supporto allesessioni(funzionalità basata sull'utilizzo deicookie). Queste informazioni sono utilizzabili in PHP tramite quattroarraydi tipo associativo chiamati internamente:$_GET
,$_POST
,$_COOKIE
,$_SESSION
.Questi tipi di array vengono chiamati superglobali[35]ovvero che sono visibili ad ogniscopedel programma.
In questo esempio di gestione di un parametro GET, con la richiestahttp://example.org/esempio.php?pippo=Ciao
,il server caricherà contenuto di esempio.php (qui sotto) e mostrerà sul browser "Ciao".
<?php
/*
* Controllo se è stato ricevuto il parametro "pippo" tramite metodo GET.
* Se è rilevato lo visualizzo; se non è rilevato avverto l'utente.
*/
if(isset($_GET['pippo'])){
$a=$_GET['pippo'];// Salvo nella variabile $a il parametro "pippo"
$a=htmlentities($a);// Questo "disinnesca" eventuali contenuti HTML contenuti in $a
echo$a;// Mostro a video
}else{
echo"Nessun parametro di nome pippo trovato. Devi inviarlo!";
}
Una funzione con controllo sui parametri
[modifica|modifica wikitesto]<?php
functionget_hello_world(mixed$value1,mixed$value2):string{
$result='';
/*
* In PHP il controllo "if", se contiene una sola istruzione,
* può anche non avere le parentesi graffe di contenimento
* ma è buona norma usarle sempre, per leggibilità del codice.
*/
if($value1!=''){
$result.=$value1;// Equivale a: $result = $result. $value1;
}
if(($value1!=' ')&&($value2!=' ')){
$result.="";
}
/*
*!empty($value2) equivale a: $value2!= "" && $value2!= null
* Il "punto esclamativo" serve per negare un valore booleano
*/
if(!empty($value2)){
$result.=$value2;// Equivale a: $result = $result. $value2;
}
return$result;
}
echoget_hello_world('Hello','world');
Il ciclo for
[modifica|modifica wikitesto]<?php
/*
* In questo caso la variabile $n viene stampata a video, successivamente
* viene incrementata di 1, il ciclo termina quando $n è uguale a 9 (il ciclo conta da 0 fino a 9 quindi 10 volte).
*/
for($n=0;$n<=9;$n++){
echo$n;
}
// Output -> 0123456789
Il ciclo while
[modifica|modifica wikitesto]<?php
/*
* In questo caso vediamo come stampare a video dei risultati estratti
* da una base di dati MySQL, eseguendo una query SQL.
* Questo script è incompleto, in quanto prima è necessario effettuare
* il collegamento alla base di dati MySQL tramite mysqli o PDO.
*/
$result=$mysqli->query("SELECT id FROM persone");
while($row=$result->fetch_assoc()){
echo$row['id']."<br />";
}
/*
* In questo modo estraiamo dei dati da una base di dati MySQL
* sotto forma di array che verrà poi stampato tramite un ciclo while
*/
99 Bottles of Beer
[modifica|modifica wikitesto]Il seguente esempio stampa il testo della canzone99 Bottles of Beer.
<?php
/*
* Questo è un commento. Altri modi per commentare sono i simboli // e #
* Questo tipo di commenti non ha bisogno degli asterischi (*) all'inizio
* di ogni riga, ma lo si fa per convenzione. I simboli // e #
* commentano solo il testo che si trova dopo di essi e fino alla fine della riga;
* non c'è bisogno di finire il commento con qualche carattere speciale.
*/
/*
* Prima definiamo una funzione chiamata "plural".
* Restituisce una "s" se l'argomento passato non è 1.
*/
functionplural(int$number):string{
// L'operatore ternario (!=?:) è una struttura condizionale
// simile a if-else: (condizione? true: false)
return($number!=1)?'s':'';
}
// Definiamo una variabile chiamata $a_capo che contiene un a capo HTML,
// un carattere di ritorno e uno di nuova riga:
$a_capo="<br />\r\n";
for($i=99;$i>0;$i--){
echo"$ibottle ".plural($i)."of beer on the wall,$a_capo";
// Non abbiamo bisogno di ripetere il comando echo per ogni riga:
echo"$ibottle ".plural($i)."of beer.$a_capo
Take one down, pass it around,$a_capo".
((($i-1)!=0)?$i-1:'no more').
' bottle'.plural($i-1)."of beer on the wall.$a_capo$a_capo";
/*
* PHP permette di creare stringhe su più righe, finché
* trova un punto e virgola (;) che termina l'istruzione.
* Un punto (.) concatena insieme più stringhe.
* Le variabili, che iniziano con il carattere "$", sono interpretate
* anche dentro i doppi apici ( "), ma non dentro gli apici singoli (').
* Le funzioni, come plural(), non sono interpretate fra gli apici.
*/
}
echo"Go to the store,$a_capobuy some more,$a_capo99 bottles of beer on the wall! ";
Esempio connessione con base di dati MySQL usando l'estensione MySQLi
[modifica|modifica wikitesto]Il PHP permette l'elaborazione di dati da base di dati MySQL. I dati verranno richiesti, inseriti e modificati attraverso opportunequeryusando alcuneestensionitra cuiMySQLiePDO.[36]
L'estensioneMySQLi,dove la "i" sta per "improved", è stata messa a disposizione di PHP per sfruttare alcune nuove funzionalità messe a disposizione dalle versioni di MySQL versione 4.1.3 e successive ed è disponibile per PHP 5 e release superiori.
Esempio di connessione a base di dati e richiesta di un dato:
<?php
// Connessione a MySQL con l'estensione MySQLi
$mysqli=newmysqli('localhost','nome_utente_database','password_database','nome_database');
/*
* Questo è il modo ufficiale di controllare se una connessione MySQL è fallita,
*/
if(null!==$mysqli->connect_error){
die("Connessione fallita, motivi:".$mysqli->connect_error);
}
// Proviamo una query ipotizzando che stiamo elaborando dati provenienti da una simil-rubrica:
$SQLQuery=$mysqli->query("SELECT indirizzo, telefono FROM utenti WHERE nome = 'Francesca'");
// Da questa query otterremo l'indirizzo e il telefono della persona di nome Francesca,
// ipotizzando sia presente nella tabella utenti della base di dati in questione.
// Ora "trasformiamo" i dati ricevuti dalla query in un array associativo, utilizzabile successivamente
$row=$SQLQuery->fetch_assoc();
// Mostriamo a video per esempio il numero di telefono dall'array
echo"Il numero di telefono di Francesca è:".$row['telefono'];
// Chiusura della connessione alla base di dati
$mysqli->close();
Per approfondimenti vedere il manuale online ufficiale MySQLi.[37]
php.ini
[modifica|modifica wikitesto]Il file di configurazione di PHP, chiamato php3.ini in PHP 3, e poi semplicemente php.ini nelle versioni successive, è letto all'avvio dell'interprete del linguaggio e fornisce le impostazioni dei vari moduli con cui l'interprete è stato compilato. Nella versione server modulare di PHP, questo avviene solo una volta, all'avvio delserver web.Per le versioniCGIeCLI,invece, è invocato ad ogni richiesta.
Per visualizzare tutte le opzioni di configurazione è possibile utilizzare la funzionephpinfo()
.
Versioni
[modifica|modifica wikitesto]Versione | Data di pubblicazione | Supportato fino al |
---|---|---|
1.0 | 8 giugno 1995 | |
2.0 | 1 novembre 1997 | |
3.0 | 6 giugno 1998 | 20 ottobre 2000 |
4.0 | 22 maggio 2000 | 23 giugno 2001 |
4.1 | 10 dicembre 2001 | 12 marzo 2002 |
4.2 | 22 aprile 2002 | 6 settembre 2002 |
4.3 | 27 dicembre 2002 | 31 marzo 2005 |
4.4 | 11 luglio 2005 | 7 agosto 2008 |
5.0 | 13 luglio 2004 | 5 settembre 2005 |
5.1 | 24 novembre 2005 | 24 agosto 2006 |
5.2 | 2 novembre 2006 | 6 gennaio 2011 |
5.3 | 30 giugno 2009 | 14 agosto 2014 |
5.4 | 1 marzo 2012 | 3 settembre 2015 |
5.5 | 20 giugno 2013 | 10 luglio 2016 |
5.6 | 28 agosto 2014 | 31 dicembre 2018 |
6.x | Non pubblicato | N / A |
7.0 | 3 dicembre 2015 | 3 dicembre 2018 |
7.1 | 1 dicembre 2016 | 1 dicembre 2019 |
7.2 | 30 novembre 2017 | 30 novembre 2020 |
7.3 | 6 dicembre 2018 | 6 dicembre 2021 |
7.4 | 28 novembre 2019 | 28 novembre 2022 |
8.0 | 26 novembre 2020 | 26 novembre 2023 |
8.1 | 25 novembre 2021 | 31 dicembre 2025 |
8.2 | 8 dicembre 2022 | 31 dicembre 2026 |
8.3 | 23 novembre 2023 | 31 novembre 2027 |
Legenda: Vecchia versione Versione precedente ancora supportata Versione corrente Ultima versione di anteprima Versione futura |
Uso di PHP nei CMS
[modifica|modifica wikitesto]Grazie alle caratteristiche del linguaggio di programmazione è stato possibile realizzareCMS (Content Management Systems)modulari dove attraverso file. php è possibile integrare e migliorare le funzionalità del software (come accade con plugin e temi in Wordpress).[38]La complementarità tra linguaggio php e l'utilizzo di database relazionali interrogabili con l'SQLconsente la creazione di CMS dinamici che portano alla realizzazione di siti web dalla struttura estremamente flessibile.
Alcuni dei CMS più diffusi che usano PHP sono:[39]
Uso di PHP nei MVC model view Controllers
[modifica|modifica wikitesto]Tra i più rinomati Model View ControllersModel-view-controllerabbiamo Symfony e Laravel i quali hanno le caratteristiche di avere un core basato su librerie e packages creati da altri team e società come ad esempio Nodejs o Composer i quali rendono l'uso di packages (tali packages sono creati dalla comunità di programmatori PHP in packagist.org) composti da algoritmi integrativi e riutilizzabili nello stesso framework tramite PSR-4 o superiori si facilita l'uso di classi e l'autoload delle stesse. Usando la metodologia OOP (Oriented Object Programming) tramite l'incapsulazione si rende più sicura l'applicazione.Attualmente nel 2023 la versione consigliata per tali framework non può essere inferiore alla versione 8.0 "per questioni di sicurezza".Una delle Caratteristiche più evidenti rispetto ai vecchi monoliti e la capacita di essere una applicazione modulare capace di ampliarsi e cambiare la sua forma con molta rapidità.Tra gli strumenti che facilitano tale versatilità abbiamo Artisan e Php Cli e Tinker.
Ambienti di sviluppo
[modifica|modifica wikitesto]Lista non esaustiva diIDEe semplici editor di testo conevidenziazione della sintassi.
- (EN)Aptana,suaptana.com.
- Atom
- Bluefish
- (EN)Dev-PHP,sudevphp.sourceforge.net.
- Adobe Dreamweaver
- Eclipse
- Emacs
- gPHPEdit
- gedit
- HAP EDIT,suhapedit.free.fr.
- (EN)Komodo IDE,suactivestate.com.
- NetBeans
- Notepad++
- Notepad2(evoluzione indipendente del notepad diWindows)
- (EN)NuSphere PHPEd,sunusphere.com.
- (EN)PHP Designer,sumpsoftware.dk.
- PhpStormdiJetBrains
- PSPad
- Quanta Plus
- SciTE
- (EN)Zend Studio,sustore.zend.com.
- Sublime Text
- TextMate,sumacromates.com.
- Vim
- Visual Studio Code
- (EN)WeBuilder,suwebuilderapp.com.
- (EN)Maguma Workbench,sumaguma.com.
Note
[modifica|modifica wikitesto]- ^The PHP Group,History of PHP and related projects,suit.php.net.URL consultato il 26 aprile 2011(archiviatoil 28 gennaio 2021).
- ^PHP: License Information,suphp.net.URL consultato il 28 febbraio 2020.
- ^WordPress Usage Statistics,sutrends.builtwith.com.URL consultato il 30 gennaio 2021.
- ^(EN)Most used languages among software developers globally 2020,suStatista.URL consultato il 30 gennaio 2021.
- ^(EN)Usage Statistics and Market Share of Server-side Programming Languages for Websites, January 2021,suw3techs.com.URL consultato il 30 gennaio 2021.
- ^Confronto tra CMS nel 2021: i sistemi più popolari per la gestione dei contenuti,suIONOS Digitalguide.URL consultato il 30 gennaio 2021.
- ^(EN)Announce: Personal Home Page Tools (PHP Tools),sugroups.google.ch,8 giugno 1995.URL consultato il 6 luglio 2011.
- ^(EN) Ellie Quigley e Marko Gargenta,PHP and MySQL by Example,Prentice Hall Professional, 22 novembre 2006,ISBN978-0-13-800602-0.URL consultato il 28 febbraio 2020.
- ^(EN)PHP Version 3 Documentation,suphp.net.URL consultato il 28 febbraio 2020.
- ^(EN)PHP 4 - features,suntchosting.com.URL consultato il 28 febbraio 2020.
- ^(EN)Usage Statistics and Market Share of PHP for Websites, February 2020,suw3techs.com.URL consultato il 28 febbraio 2020.
- ^(EN)TIOBE Software Award,sutiobe.com.URL consultato il 12 dicembre 2022.
- ^(EN)PHP 5 ChangeLog § 5.3.0,suphp.net.URL consultato il 12 gennaio 2022.
- ^(EN)PHP: Late Static Bindings - Manual,suphp.net.URL consultato il 12 gennaio 2022.
- ^(EN)GOPHP5!,supear.php.net.URL consultato il 26 settembre 2017.
- ^ab(EN)PHP: Unsupported Branches,suwww.php.net.URL consultato il 12 dicembre 2022.
- ^(EN)PHP 7 ChangeLog,suphp.net.URL consultato il 28 febbraio 2020.
- ^(EN)PHP: Supported Versions,suwww.php.net.URL consultato il 12 dicembre 2022.
- ^PHP 8 ChangeLog,suphp.net.URL consultato il 12 gennaio 2022.
- ^(EN)PHP 8: JIT performance in real-life web applications,sustitcher.io,2 luglio 2020.URL consultato il 12 dicembre 2022.
- ^(EN)PHP 5 ChangeLog § Version 5.0.0 Beta 1,suphp.net.URL consultato il 12 gennaio 2022.
- ^(EN)PHP-related vulnerabilities on the National Vulnerability Database,sucoelho.net.URL consultato il 6 luglio 2011(archiviato dall'url originaleil 28 giugno 2009).
- ^(EN)Using Register Globals,suphp.net(archiviato dall'url originaleil 2 giugno 2016).
- ^(EN)Magic Quotes,suphp.net(archiviato dall'url originaleil 2 giugno 2016).
- ^(EN)What are PHP Vulnerabilities & How Do They Originate?,suWordfence.URL consultato il 28 gennaio 2021(archiviatoil 29 gennaio 2021).
- ^abManuale PHP - array,suit2.php.net.URL consultato il 14 marzo 2018(archiviato dall'url originaleil 15 marzo 2018).
- ^PHP: unset - Manual,suphp.net.URL consultato il 17 ottobre 2020.
- ^PHP: foreach - Manual,suphp.net.URL consultato il 17 ottobre 2020.
- ^Default Function Parameters In PHP | #! code,suhashbangcode.com.URL consultato il 17 ottobre 2020.
- ^PHP: Variable scope - Manual,suphp.net.URL consultato il 17 ottobre 2020.
- ^Manuale PHP - include,suphp.net.URL consultato il 31 gennaio 2014(archiviato dall'url originaleil 1º febbraio 2014).
- ^Manuale PHP - include_once,suit2.php.net.URL consultato il 31 gennaio 2014(archiviato dall'url originaleil 1º febbraio 2014).
- ^Manuale PHP - require,suit2.php.net.URL consultato il 31 gennaio 2014(archiviato dall'url originaleil 1º febbraio 2014).
- ^Manuale PHP - require_once,suit2.php.net.URL consultato il 31 gennaio 2014(archiviato dall'url originaleil 1º febbraio 2014).
- ^PHP: Superglobals - Manual,suphp.net.URL consultato il 17 ottobre 2020.
- ^PHP: Database Extensions - Manual,suphp.net.URL consultato il 17 ottobre 2020.
- ^MySQLi:query,suit2.php.net.URL consultato il 29 gennaio 2014(archiviato dall'url originaleil 1º febbraio 2014).
- ^(EN)it:Scrivi un Plugin « WordPress Codex,sucodex.wordpress.org.URL consultato il 6 ottobre 2022.
- ^(EN)Top 10 PHP CMS Platforms For Developers in 2022,suplesk.com,7 agosto 2022.URL consultato il 6 ottobre 2022.
Bibliografia
[modifica|modifica wikitesto]- Zak Greant, Graeme Merrall, Torben Wilson, Brett Michlitsch (2002):PHP Functions Essential Reference,Sams,ISBN 0-7357-0970-X
- Luke Welling, Laura Thomson (2004):PHP and MySQL Web Development,3rd ed., SAMS,ISBN 0-672-32672-8
- Matt Zandstra (2004):PHP 5 Objects, Patterns, and Practice,Apress,ISBN 1-59059-380-4
- Eric Rosebrock, Eric Filson (2004):Setting Up LAMP: Getting Linux, Apache, MySQL, and PHP Working Together,SYBEX,ISBN 0-7821-4337-7
- Cristian Darie, Mihai Bucica (2004):Beginning PHP 5 and MySQL E-Commerce: From Novice to Professional,Apress,ISBN 1-59059-392-8
- David Powers (2005):Foundation PHP 5 for Flash,Friends of ED,ISBN 1-59059-466-5
- Elizabeth Naramore, (2005):Beginning PHP5, Apache, and MySQL Web Development,Wrox,ISBN 0-7645-7966-5
- Thomas Myer (2005):No Nonsense XML Web Development With PHP,SitePoint,ISBN 0-9752402-0-X
- Marc Wandschneider (2005):Core Web Application Development with PHP and MySQL,Prentice-Hall,ISBN 0-13-186716-4
- Steven Holzner (2005):Spring Into PHP 5,Addison-Wesley,ISBN 0-13-149862-2
- (2005):Building Online Communities with phpBB 2,Packt Publishing,ISBN 1-904811-13-2
- (2005):Web Standards Programmer's Reference: HTML, CSS, JavaScript, Perl, Python, and PHP,Wrox,ISBN 0-7645-8820-6
- Chris Newman (2005):Sams Teach Yourself PHP in 10 Minutes,ISBN 0-672-32762-7
- Paul Hudson (2005):PHP in a Nutshell,O'Reilly,ISBN 0-596-10067-1
- Andi Gutmans, Stig S. Bakken, Derick Rethans (2005):PHP 5: Guida completa,Apogeo,ISBN 88-503-2304-2
- Jack Herrington (2006),PHP Trucchi e segreti,Tecniche Nuove Hops,ISBN 88-481-1951-4
- Rasmus Lerdorf (2003),PHP Pocket Reference,Tecniche Nuove Hops,ISBN 88-8378-070-1
- Peter B. MacIntyre (2010),PHP – Le tecniche per scrivere il codice migliore,Tecniche Nuove,ISBN 978-88-481-2505-5
Voci correlate
[modifica|modifica wikitesto]Altri progetti
[modifica|modifica wikitesto]Wikibookscontiene testi o manuali suPHP
Wikiversitàcontiene risorse suPHP
Wikimedia Commonscontiene immagini o altri file suPHP
Collegamenti esterni
[modifica|modifica wikitesto]- (EN)Sito ufficiale,suphp.net.
- PHP, linguaggio,susapere.it,De Agostini.
- PHP,inLessico del XXI secolo,Istituto dell'Enciclopedia Italiana,2012-2013.
- (EN)Opere riguardanti PHP (Computer program language),suOpen Library,Internet Archive.
- PHP,supackages.debian.org.
- (EN)PHP,suGitHub.
- Repository sorgenti di PHP,sugithub.com.
- Sito di segnalazione bug,subugs.php.net.
- (EN)PHP,suFree Software Directory.
- (EN) Denis Howe,PHP: Hypertext Preprocessor,inFree On-line Dictionary of Computing.Disponibile con licenzaGFDL
- (EN) The PHP group,Storia di PHP,susecure.php.net.
Controllo di autorità | LCCN(EN)sh99002710·GND(DE)4546126-0·BNE(ES)XX548742(data)·BNF(FR)cb135584386(data)·J9U(EN,HE)987007530371705171 |
---|