PHP
PHP llenguatge de programació | |
---|---|
Autor | Grup PHP |
Data d’origen | 8 de juny de 1995 |
Última versió | 8.1.0 Beta 1 (22 de juliol de 2021) i 8.0.9 (29 de juliol de 2021) |
Ús | Aplicacions web del servidor |
Paradigmes | Imperatiu , funcional , orientat a objectes , procedimental , de reflexió |
Escrivint | Debil |
Extensions comunes | php |
Influenciat per | C ++ , Perl , C , Java , Tcl , HTML i JavaScript |
Implementació de referència | |
Implementació | Intèrpret |
Sistema operatiu | Multiplataforma |
Llicència | Llicència PHP |
Lloc web | www.php.net |
PHP ( acrònim recursiu de "PHP: Hypertext Preprocessor", preprocessador d' hipertext ; originalment acrònim de "Personal Home Page" [1] ) és un llenguatge de script interpretat , concebut originalment per programar pàgines web dinàmiques . L'intèrpret PHP és un programari gratuït distribuït sota la llicència PHP [2] .
Actualment s’utilitza principalment per desenvolupar aplicacions web del servidor , però també es pot utilitzar per escriure scripts de línia d’ ordres o aplicacions autònomes amb una interfície gràfica . Un exemple de programari escrit en PHP és MediaWiki , en què es basen els projectes wiki de la Fundació Wikimedia, com ara Wikipedia .
Antecedents
Nascut el 1994 pel danès Rasmus Lerdorf , PHP va ser originalment una col·lecció de scripts CGI que permetien gestionar fàcilment les pàgines personals. Segons l'anunci original de PHP 1.0 per l'autor en la comp.infosystems.www.authoring.cgi grup de notícies el significat original de l' acrònim era P ersonal H OME P edat. [3]
El paquet original va ser ampliat posteriorment i reescrit pel mateix Lerdorf en C , afegint funcions com el suport per a la base de dades mSQL , i es va començar a anomenar PHP / FI, on FI significa F orm I nterpreter (intèrpret de formularis ), proporcionant la possibilitat de integrar el codi PHP al codi HTML per tal de simplificar la creació de pàgines dinàmiques. El 1997 es va estimar que uns 50.000 llocs web es basaven en PHP. [4]
El llenguatge va començar a gaudir de certa popularitat entre els projectes web de codi obert i va ser notat per Zeev Suraski i Andi Gutmans , dos joves programadors. Els dos van col·laborar el 1998 amb Lerdorf en el desenvolupament de la tercera versió de PHP, les sigles del qual van adquirir el seu significat actual, reescrivint el motor que es va batejar Zend a partir d'una contracció dels seus noms. Les característiques clau de la versió de PHP 3.0, fruit del seu treball, van ser l'extraordinària extensibilitat, la connectivitat a la base de dades i el suport inicial per al paradigma d'objectes [5] . A finals de 1998, PHP 3.0 s’instal·lava a aproximadament el 10% dels servidors web d’Internet.
PHP en aquest moment es va convertir en prou madur per competir amb llenguatges del servidor com ASP , desenvolupat per Microsoft , i va començar a utilitzar-se a gran escala. La versió 4 de PHP es va llançar el 2000 i va incloure millores significatives [6] .
L'última versió disponible és la 8.0.8 [7] , desenvolupada per un equip de programadors, que inclou de nou Lerdorf, Suraski i Gutmans. [8]
La popularitat del llenguatge PHP creix constantment gràcies a la seva flexibilitat: el juny del 2001 va superar el milió de llocs que l’utilitzen. A l'octubre de 2002, més del 45% dels servidors Apache utilitzaven PHP [9] .
El 2004 va ser un dels idiomes principals amb els quals es va crear Facebook .
El gener de 2005 va rebre el títol de "Llenguatge de programació del 2004" pel TIOBE Programming Community Index [10] , un rànquing que avalua la popularitat dels llenguatges de programació sobre la base de la informació recollida pels motors de cerca .
El 2005, la configuració LAMP ( Linux , Apache , MySQL , PHP) va superar el 50% del nombre total de servidors de la xarxa mundial.
El 2008 PHP 5 es va convertir en l'única versió estable en desenvolupament. A partir de PHP 5.3.0, el llenguatge implementa una funció anomenada "enllaç estàtic tardà" que es pot utilitzar per referir-se a la classe anomenada en un context d'herència estàtica.
A partir del 5 de febrer de 2008, a causa de la iniciativa GoPHP5 recolzada per diversos desenvolupadors de PHP, molts dels projectes de codi obert de perfil alt deixen de donar suport a PHP 4 en el nou codi i promouen la transició de PHP 4 a PHP 5. [ 11]
PHP versió 5 va arribar a la versió 5.6 abans de retirar-se del punt de vista de desenvolupament i suport el gener de 2019. La versió 7 es va publicar el 3 de desembre de 2015 i actualment encara està en desenvolupament i amb suport actiu [12] .
La versió 8 es va publicar el 27 de novembre de 2020.
Gràcies principalment a la difusió de Wordpress [13] (CMS escrit en PHP), segons les estadístiques, és el llenguatge del servidor més utilitzat al món [14] [15] [16] .
Característiques
PHP adopta de moltes maneres la sintaxi de C , igual que molts llenguatges moderns, i de Perl . És un llenguatge escassament escrit i des de la versió 5 millora el suport al paradigma de programació orientat a objectes . Certes construccions derivades de C , com ara operadors entre bits i la gestió de cadenes com a matrius , permeten en alguns casos actuar a un nivell baix; no obstant això, és fonamentalment un llenguatge d'alt nivell , una característica reforçada per l'existència de les seves més de 3.000 funcions bàsiques d' API .
PHP és capaç d’interfazar-se amb innombrables SGBD, inclosos MySQL , PostgreSQL , MariaDB , Oracle , Firebird , IBM DB2 , Microsoft SQL Server i fins i tot bases de dades NoSql com MongoDB. Admet nombroses tecnologies com XML , SOAP , IMAP , FTP , CORBA . També s’integra amb altres llenguatges / plataformes com Java i .NET i hi ha un embolcall per a totes les biblioteques populars com CURL, GD , Gettext , GMP, Ming, OpenSSL i molt més.
Proporciona una API específica per interactuar amb Apache , tot i que funciona naturalment amb molts altres servidors web . També està molt ben integrat amb el SGBD MySQL per al qual té més d’una API (mysql, mysqli, PDO). Per aquest motiu, hi ha una gran quantitat de scripts i biblioteques PHP disponibles gratuïtament a Internet . La versió 5 integra una petita base de dades incrustada, SQLite .
Té un arxiu anomenat PEAR que proporciona un marc de biblioteca reutilitzable per al desenvolupament d’ aplicacions PHP i PECL que recopila totes les extensions conegudes escrites en C.
PHP encara no té suport natiu per a cadenes Unicode o multibytes; El suport Unicode està en desenvolupament per a una futura versió de PHP i permetrà utilitzar caràcters no ASCII en cadenes i noms de funcions, classes i mètodes.
Seguretat
El percentatge de programari no segur escrit en PHP, sobre el total de tots els forats de seguretat del programari llistats per Common Vulnerabilities and Exposures , va ascendir a: 12% el 2003, 20% el 2004, 28% el 2005, 43% el 2006, 36% el 2007, 34,8% el 2008, 29,9% el 2009 i 27,2% el 2010 [17] . Gairebé totes aquestes vulnerabilitats conegudes provenen de l'incompliment de les millors pràctiques dels programadors i dels abusos relacionats amb funcions particulars que ofereix PHP, que en determinats usos donen lloc a vulnerabilitats greus. Un exemple ben conegut són els problemes relacionats amb l’abús de registres globals i cometes Magic , característiques que si s’utilitzen incorrectament podrien degenerar en portes posteriors reals dins del vostre programa PHP. Per evitar problemes d'aquest tipus, moltes d'aquestes funcions han estat obsoletes o fins i tot eliminades, com les dues esmentades, en la successió de versions de PHP [18] [19] .
La majoria del programari amb problemes de seguretat (2006) es pot associar temporalment amb versions antigues de PHP, on les configuracions predeterminades deixaven espai per a una relativa simplicitat en escriure programes amb problemes de seguretat potencialment greus.
Sempre és una bona idea revisar la configuració de PHP, que normalment es troba al fitxer php.ini, per comprovar quines funcions estan habilitades. Normalment, al mateix fitxer, esteu documentant 3 tipus de configuracions: configuració predeterminada de PHP, configuració en un entorn de desenvolupament que permet, per exemple, veure errors de vídeo i configuració en un entorn de producció en què normalment els errors s’escriuen en un fitxer de registre.
El lloc web oficial conté l’arxiu històric de les versions descatalogades, actualitzat el maig de 2019 [20] .
Atacs de pirates informàtics
PHP pot estar subjecte a diversos atacs de pirates informàtics [21] :
- L'execució remota de codi (RCE) es produeix quan un atacant pot carregar codi al lloc web i executar-lo.
- SQL Injection o SQLi: permet als atacants falsificar la identificació , modificar les dades existents, causar problemes de repudi com la cancel·lació de transaccions o modificar els estats financers, permet obtenir totes les dades del sistema, suprimir o fer que les dades siguin inaccessibles i crear o comprometre els usuaris del servidor de bases de dades.
- La cross-site scripting (XSS) es produeix quan un atacant fa que es carregui codi maliciós al navegador del visitant del lloc web i l'executi. Aleshores, aquest codi pot realitzar accions malicioses, com ara robar cookies de l'usuari.
- Falsificació de sol·licituds entre llocs (CSRF): es produeix quan un atacant pot crear un enllaç i fer-li clic a un usuari privilegiat per crear (per exemple) un nou usuari "administrador" amb una contrasenya que coneguin.
- Ignoració de l'autenticació. Una forma en què es produeix aquest error es produeix mitjançant un error del desenvolupador en utilitzar la funció anomenada 'is_admin ()' per validar un administrador. Aquesta funció està dissenyada per mostrar si algú visualitza una pàgina d’administrador i no valida que realment ho sigui. Si un desenvolupador comet aquest error, pot concedir accés als usuaris que no siguin administradors a funcions a les quals només tenen accés els administradors.
- Injecció d'objectes PHP. Es produeix quan una aplicació PHP pren l'entrada de l'usuari i la passa a una funció anomenada 'unserialize ()' que pren un objecte emmagatzemat i el transforma en un objecte a la memòria.
- Inclusió de fitxers remots i locals (RFI i LFI). Quan una aplicació PHP accepta l'entrada de l'usuari i la passa a una funció dissenyada per carregar un fitxer. Si aquest fitxer és un URL, la funció pot carregar codi PHP des d’un altre lloc web especificat per un atacant que s’executarà al lloc web atacat. Les funcions susceptibles de ser RFI i LFI en PHP són: include, include_once, fopen, file_get_contents, require, require_once .
Exemples de codi
Les variables
Els noms de variables en PHP sempre comencen amb un signe de dòlar ( $
) i el caràcter següent no ha de ser un número, per exemple $1
o $2
no són noms de variables vàlids.
Els noms de variables distingeixen entre majúscules i minúscules , és a dir, $pippo
i $PIPPO
$pippo
són dues variables diferents.
Una variable pot contenir tots els caràcters AZ
, az
, 0-9
i _
. Un cop definits, s'instancien sense definir explícitament el seu "tipus":
$ hola = "Hola món!" ;
Per mostrar el contingut de $ciao
, podeu utilitzar la sentència echo
:
echo $ hola ;
mostrant " Ciao mondo!
". Tanmateix, si la variable $ciao
no existís, l' echo
generalment generaria un error no fatal ( Notice
).
Cordes
En PHP es representa una cadena de caràcters alfanumèrics de dues maneres: incloure-la entre cometes dobles ( "
) o simples ( '
). Quan s'utilitzen cometes dobles, s'interpreten els caràcters especials (per exemple, la pestanya "col1 \t col2"
o el caràcter de línia nova, "riga1 \n riga2"
) i es retorna el contingut de les variables, és a dir:
echo "Hola és: $ hola " ;
Premsa: "Ciao vale: Ciao mondo!"
. Amb les cometes simples, la cadena es desa i s’utilitza tal qual.
Exemple de composició de la frase "Wikipedia és meravellós" de dues maneres: usant cometes simples i dobles:
$ one = 'Viquipèdia' ;
$ two = 'és' ;
$ tres = 'meravellós' ;
feu ressò de $ one . '' . dos dòlars . '' . tres dòlars ;
ressò " $ one dos dòlars tres dòlars " ;
Array (i foreach)
PHP tracta les matrius com a mapes associatius , és a dir, com una llista de claus associades de manera única amb un valor determinat. Per tant, les matrius en PHP es poden utilitzar com a matriu comuna, com ara una llista (vector), una pila, una cua o altres. A més, qualsevol element de la matriu al seu torn pot contenir altres matrius, fins i tot multidimensionals [22] i tots els elements de la matriu o subarrays poden ser de diferents tipus de variables, donant així la possibilitat de crear estructures de dades complexes.
Les matrius són dinàmiques, de fet es poden eliminar mitjançant unset();
[23] .
Com que les matrius en PHP són associatives, es poden utilitzar mitjançant una construcció anomenada foreach
[24] que fa viable l'accés al contingut obtenint tots els enllaços de claus → valor de la matriu.
Codi d'exemple d'una matriu associativa en què cada nom de ciutat correspon al nombre d'habitants. A l'exemple es mostra cada ciutat amb el seu nombre d'habitants i, a continuació, la suma de tots els habitants.
<? php
$ residents = array (
'Torí' => 908551 ,
"Milà" => 1315791 ,
"Roma" => 2753000
);
$ suma = 0 ;
foreach ( $ residents com a $ ciutat => $ nResidents ) {
echo "City $ city has $ nResidents residents " ;
$ suma + = $ nResident ;
}
eco "Hi ha $ sum habitants en total!" ;
?>
La sortida del codi és: La città Torino ha 908551 abitanti. La città Milano ha 1315791 abitanti. La città Roma ha 2753000 abitanti. In tutto ci sono 4977342 abitanti
Per obtenir més informació, consulteu la documentació oficial en línia [22] .
Funcions
Les funcions en PHP poden tenir un conjunt mixt de paràmetres opcionals amb valors predeterminats i paràmetres necessaris. [25]
Exemple d'una funció amb un paràmetre obligatori i una opcional amb un valor per defecte.
<? php
/ **
* Programa que executeu
* la suma d'almenys 2 nombres
* i màxim 3
* /
suma de la funció ( $ n1 = 0 , $ n2 = 0 , $ n3 = 0 ) {
retorna $ n1 + $ n2 + $ n3 ;
}
suma de ressò ( 1 , 5 ); // SORTIDA: 6
suma de ressò ( 1 , 24 ); // SORTIDA: 25
suma de ressò ( 3 , 4 , 2 ); // SORTIDA: 9
suma de ressò ( n1 : 5 , n3 : 5 ); // SORTIDA: 10 -> utilitzable des de la versió 8
?>
Qualsevol variable de qualsevol tipus creada dins de la funció és local . Per especificar variables globals dins de la funció, utilitzeu global $variabile
[26]
Exemple:
<? php
experiment de funció () {
$ a global ;
$ a = "tres" ;
$ b = "quatre" ;
eco "Durant: $ a $ b " ;
}
$ a = "un" ;
$ b = "dos" ;
eco "Abans: $ a $ b " ;
experiment ();
eco "Després de: $ a $ b " ;
?>
El resultat serà: Prima uno due Durante tre quattro Dopo tre due
.
Inclusions
Podeu incloure una pàgina PHP dins d’una altra per executar codi per evitar codi redundant i per accedir a variables, funcions i classes definides a la pàgina inclosa.
Per fer-ho, fem servir una de les afirmacions següents: include
[27] , include_once
[28] , require
[29] i require_once
[30] . Exemple:
<? php
inclou 'header.php' ;
ressò "Hola món!" ;
inclou 'footer.php' ;
?>
Tipus d'inclusió:
- S'utilitza
include
quan es vol enviar només un senyal d'advertència sense interrompre l'execució del programa si la pàgina a incloure no existeix. - Utilitzem
require
quan volem que s’enviï un senyal d’error fatal i que s’avorti el programa si la pàgina a incloure no existeix. - Utilitzeu
include_once
,require_once
quan l'ordre es podria repetir diverses vegades fins i tot en fitxers diferents, creant així (potencialment) una inclusió recursiva, però no voleu que la pàgina s'inclogui més d'una vegada. Si la pàgina a incloure no existeix, es comportaran de manera similar a les respectives esmentades anteriorment.
Gestió de paràmetres
PHP permet el pas d'informació d'una pàgina a una altra a través de les diverses funcions admeses per HTTP . Concretament, sol·licituds GET (informació parametritzada a la barra d’adreces), POST (informació originada en un enviament previ d’un formulari web, generalment) i COOKIES (informació continguda en petites cadenes de text desades físicament a la memòria local d’un navegador), juntes amb suport de sessió (funcionalitat basada en l’ús de cookies ). Aquesta informació es pot utilitzar en PHP mitjançant quatre matrius associatius anomenats internament: $ _GET, $ _POST, $ _COOKIE, $ _SESSION. Aquest tipus de matrius s’anomenen superglobals [31] , és a dir, són visibles a tots els àmbits del programa.
Exemple de maneig d'un paràmetre GET. Sol·licitud de mostra: http://example.org/esempio.php?pippo=Ciao
. Contingut de laws.php (mostrarà "Hola"):
<? php
/ *
* Comproveu si el paràmetre "foo" s'ha rebut mitjançant el mètode GET.
* Si es detecta, el mostro; si no es detecta, aviso l'usuari.
* /
if ( isset ( $ _GET [ 'foo' ] ) )) {
$ a = $ _GET [ 'foo' ]; // Deseu el paràmetre "foo" a la variable $ a
$ a = htmlentities ( $ a ); // Això "desactiva" qualsevol contingut HTML contingut a $ a
eco $ a ; // Apareixo a la pantalla
} més {
echo "No s'ha trobat cap paràmetre anomenat foo. Heu d'enviar-lo!" ;
}
?>
Una funció amb control de paràmetres
<? php
funció get_hello_world ( $ valor1 , $ valor2 ) {
$ result = " ;
/ *
* En PHP, el control "si", si només conté una sentència,
* pot ser que no tinguin claus de contenció
* però és una bona idea fer-los servir sempre per a la llegibilitat del codi.
* /
if ( $ value1 ! = '' ) {
$ resultat . = $ valor1 ; // Equival a: $ result = $ result. valor $ 1;
}
if (( $ value1 ! = '' ) && ( $ value2 ! = '' )) {
$ result . = "" ;
}
/ *
*! buit ($ value2) equival a: $ value2! = ""
* El "signe d'exclamació" s'utilitza per negar un valor booleà
* /
if ( ! buit ( $ value2 )) {
$ resultat . = $ valor2 ; // Equival a: $ result = $ result. valor $ 2;
}
retorna $ resultat ;
}
echo get_hello_world ( 'Hola' , 'món' );
?>
El bucle for
<? php
/ *
* En aquest cas, la variable $ n s'imprimeix a la pantalla, posteriorment
* s'incrementa 1, el bucle finalitza quan $ n és igual a 9 (el bucle compta de 0 a 9, de manera que 10 vegades).
* /
per a ( $ n = 0 ; $ n <= 9 ; $ n ++ ) {
eco $ n ;
}
// Sortida -> 0123456789
?>
El bucle while
<? php
/ *
* En aquest cas, vegem com imprimir els resultats extrets a la pantalla
* des d'una base de dades MySQL, executant una consulta SQL.
* Aquest script és incomplet, ja que primer cal dur-lo a terme
* connexió a la base de dades MySQL mitjançant mysqli o PDO.
* /
$ result = $ mysqli -> consulta ( "SELECT ID FROM people" );
while ( $ fila = $ resultat -> fetch_assoc ()) {
ressò de $ fila [ 'id' ] . "<br />" ;
}
/ *
* D’aquesta manera extraiem dades d’una base de dades MySQL
* en forma de matriu que després s’imprimirà a través d’un bucle while
* /
?>
99 ampolles de cervesa
L'exemple següent imprimeix la lletra de la cançó 99 Bottles of Beer .
<? php
/ *
* Aquest és un comentari. Altres maneres de comentar són els símbols // i #
* Aquest tipus de comentari no necessita asteriscs (*) al principi
* de cada línia, però es fa per convenció. Els símbols // i #
* comenteu només el text que hi ha al darrere i fins al final de la línia;
* no cal acabar el comentari amb cap caràcter especial.
* /
/ *
* Primer definim una funció anomenada "plural".
* Retorna una "s" si l'argument aprovat no és 1.
* /
funció plural ( $ nombre ) {
// L'operador ternari (! =? :) és una estructura condicional
// similar a if-else: (condició? true: false)
tornar ( $ número ! = 1 ) ? 's' : '' ;
}
// Definim una variable anomenada $ a_capo que conté un retorn HTML,
// un retorn i un caràcter de línia nova:
$ a_capo = "<br /> \ r \ n " ;
per a ( $ i = 99 ; $ i > 0 ; $ i - ) {
ressò " ampolla $ i " . plural ( $ i ) . "de cervesa a la paret, $ a_capo " ;
// No cal que repetim l’ordre echo per a cada línia:
ressò " $ i ampolla" . plural ( $ i ) . "de cervesa. $ a_capo
Baixeu-ne un, passeu-lo, $ a_capo " .
((( $ i - 1 ) ! = 0 ) ? $ i - 1 : 'no més' ) .
'ampolla' . plural ( $ i - 1 ) . "de cervesa a la paret. $ a_capo $ a_capo " ;
/ *
* PHP us permet crear cadenes en diverses línies, sempre que
* troba un punt i coma (;) que finalitza la sentència.
* Un punt (.) Concatena diverses cadenes juntes.
* Les variables, començant pel caràcter "$", s'interpreten
* també entre cometes dobles ("), però no entre cometes simples (').
* Les funcions, com ara el plural (), no s’interpreten entre cometes.
* /
}
eco "Vés a la botiga, $ a_capo compra una mica més, $ a_capo 99 ampolles de cervesa a la paret!" ;
?>
Exemple de connexió amb la base de dades MySQL mitjançant l'extensió MySQLi
PHP permet el processament de dades de bases de dades MySQL. Les dades seran sol·licitades, inserides i modificades mitjançant consultes adequades mitjançant algunes extensions, incloses MySQLi i PDO. [32]
L'extensió MySQLi , on la "i" significa "millorat", s'ha posat a disposició de PHP per aprofitar algunes de les noves funcions disponibles per a les versions de MySQL versió 4.1.3 i posteriors i està disponible per a versions de PHP 5 i versions superiors .
Exemple de connexió a la base de dades i sol·licitud de dades:
<? php
// Connecteu-vos a MySQL amb l'extensió MySQLi
$ MySQLi = new mysqli ( 'localhost', 'nome_utente_database', 'password_database', 'database');
/ *
* Aquesta és la forma oficial de comprovar si una connexió MySQL ha fallat,
* PERUT $ connect_error no s'admet fins a PHP 5.2.9 i 5.3.0.
* /
if ( $ mysqli -> connect_error ) {
morir ( "La connexió ha fallat, motius:" . $ mysqli -> connect_error );
}
// Provem una consulta assumint que estem processant dades d'una llibreta d'adreces similar:
$ SQLQuery = $ mysqli -> consulta ( "SELECCIONA l'adreça, telèfon DE usuaris WHERE nom = ' Frank '" );
// A partir d’aquesta consulta obtindrem l’adreça i el número de telèfon de la persona que es diu Francesca,
// suposant que està present a la taula d'usuaris de la base de dades en qüestió.
// Ara "transformem" les dades rebudes de la consulta en una matriu associativa que es pot utilitzar més endavant
$ fila = $ SQLQuery -> fetch_assoc ();
// Mostrem a la pantalla, per exemple, el número de telèfon de la matriu
eco "El número de telèfon de Francesca és:" . $ fila [ 'telèfon' ];
// Tancar la connexió a la base de dades
$ mysqli -> close ();
?>
Per obtenir més informació, consulteu el manual en línia oficial de MySQLi. [33]
php.ini
El fitxer de configuració de PHP, anomenat php3.ini a PHP 3 i, a continuació, simplement php.ini en versions posteriors, es llegeix quan s’inicia l’intèrpret d’idiomes i proporciona la configuració dels diferents mòduls amb els quals s’ha compilat l’intèrpret. A la versió de servidor modular de PHP, això només passa una vegada quan s’inicia el servidor web . Tanmateix, per a les versions CGI i CLI , s’invoca a cada sol·licitud.
Per veure totes les opcions de configuració, podeu utilitzar la phpinfo()
.
Versions
Versió | Data de publicació | Suport fins al |
---|---|---|
1.0 | 8 de juny de 1995 | |
2.0 | 1 de novembre de 1997 | |
3.0 | 6 de juny de 1998 | 20 d’octubre del 2000 |
4.0 | 22 de maig de 2000 | 23 de juny de 2001 |
4.1 | 10 de desembre de 2001 | 12 de març del 2002 |
4.2 | 22 d’abril de 2002 | 6 de setembre de 2002 |
4.3 | 27 de desembre de 2002 | 31 de març del 2005 |
4.4 | 11 de juliol de 2005 | 7 d’agost de 2008 |
5.0 | 13 de juliol de 2004 | 5 de setembre de 2005 |
5.1 | 24 de novembre de 2005 | 24 d’agost del 2006 |
5.2 | 2 de novembre de 2006 | 6 de gener de 2011 |
5.3 | 30 de juny de 2009 | 14 d'agost de 2014 |
5.4 | 1 de març de 2012 | 3 de setembre de 2015 |
5.5 | 20 de juny de 2013 | 10 de juliol de 2016 |
5.6 | 28 d'agost de 2014 | 31 de desembre de 2018 |
6x | No alliberat | N / A |
7.0 | 3 de desembre de 2015 | 3 de desembre de 2018 |
7.1 | 1 de desembre de 2016 | 1 de desembre de 2019 |
7.2 | 30 de novembre de 2017 | 30 de novembre de 2020 |
7.3 | 6 de desembre de 2018 | 6 de desembre de 2021 |
7.4 | 28 de novembre de 2019 | 28 de novembre de 2022 |
8.0 | 26 de novembre de 2020 | 26 de novembre de 2023 |
8.1 | ?? Novembre de 2021 | ?? Novembre de 2024 |
Comparació amb ASP.NET
PHP és un competidor directe d’ASP.NET. L’elecció dels dos idiomes té avantatges i desavantatges segons les vostres necessitats [34] [35] :
PRO | EN CONTRA | ||
PHP | ASP.NET | PHP | ASP.NET |
És de codi obert, de manera que és gratuït i està sent constantment millorat per un gran nombre de persones en lloc d’una sola empresa | Admet tots els llenguatges de programació i funciona bé amb aplicacions o C # | No és adequat per crear aplicacions d'escriptori | Menys fàcils d’aprendre i d’entendre que PHP |
Hi ha més grups d’assistència en línia que ajuden a accelerar el procés d’aprenentatge que ASP.NET | Notifiqueu als desenvolupadors si han comès errors en la codificació abans de compilar | El tractament d’errors PHP es considera deficient en comparació amb ASP.NET, de manera que pot trigar més a descobrir un problema | Comunitat de suport més petita |
Més fàcil d'aprendre i entendre que ASP.NET | Inclou moltes eines i funcions per donar suport als programadors. | Permet la personalització que causa errors i una codificació deficient en comparació amb ASP.NET | Només funciona en un servidor de Microsoft |
També funciona en servidors Linux | Creació d'aplicacions d'escriptori. | En ser de codi obert, el codi està a l'abast de tothom i, per tant, està més exposat als atacs | Més car a causa de la llicència de Microsoft |
Entorns de desenvolupament
- PhpStorm per JetBrains ;
- ( EN ) Aptana , a aptana.com .
- ( EN ) Delphi4php , a embarcadero.com .
- ( EN ) Bluefish , a bluefish.openoffice.nl .
- ( EN ) Codelobster , a codelobster.com .
- (EN) Dreamweaver CS5.5 , a dreamweaver.com.
- ( EN ) WeBuilder 2007 , a blumentals.net .
- ( EN ) Maguma Workbench , a maguma.com .
- (EN) NuSphere PHPEd , a nusphere.com.
- ( EN ) PHP Designer 2008 , a mpsoftware.dk .
- ( EN ) PDT (Eclipse Platform) , a eclipse.org .
- ( EN ) PHPEclipse (Eclipse Platform) , a phpeclipse.de .
- (EN) NetBeans , a netbeans.org.
- ( EN ) Dev-PHP , a devphp.sourceforge.net .
- ( EN ) PHPEdit , a waterproof.fr .
- (EN) Quanta Plus , a quanta.kdewebdev.org.
- (EN) Side , a phpside.org.
- ( EN ) Xored TruStudio , a xored.com .
- ( EN ) Zend Studio , a zend.com .
- ( EN ) Antechinus PHP Editor , a c-point.com .
- ( EN ) gPHPEdit , a gphpedit.org .
- ( EN ) jEdit , a jedit.org .
- PSPad , a pspad.com .
- (EN) Vim , a vim.org.
- (EN) Emacs , a gnu.org.
- ( EN ) SciTE , a scintilla.org .
- HAP EDIT , a hapedit.free.fr .
- ( EN ) Komodo IDE , a activestate.com .
- (EN) Komodo Edit , a activestate.com.
- Notepad ++ , a notepad-plus.sourceforge.net .
- TextMate , a macromates.com .
- Bloc de notes ( Bloc de notes de Windows )
- Notepad2 (evolució del bloc de notes de Windows )
- gedit
- PhpGedView
- Qualsevol altre editor de text
Nota
- ^ El grup PHP, Història de PHP i projectes relacionats , a it.php.net . Consultat el 26 d'abril de 2011 ( arxivat el 28 de gener de 2021) .
- ^ PHP: Informació de llicències , a www.php.net . Obtingudes el 28 de febrer de, any 2020.
- ^ Anunci: eines de la pàgina d'inici personal (eines PHP) , a groups.google.ch , 8 de juny de 1995. Obtingut el 6 de juliol de 2011 .
- ^ (EN), i Marko Gargenta Ellie Quigley, PHP i MySQL per exemple , Prentice Hall Professional, 22 de novembre de 2006, ISBN 978-0-13-800602-0 . Obtingudes el 28 de febrer de, any 2020.
- ^ PHP: Documentació de la versió 3 de PHP , a www.php.net . Obtingudes el 28 de febrer de, any 2020.
- ^ Serveis d'allotjament web, servidors VPS i noms de domini per NTC Hosting , a www.ntchosting.com . Obtingudes el 28 de febrer de, any 2020.
- ^ (EN) PHP: News Archive - 2021 , a be2.php.net. Recuperat el 4 de juliol de 2021 .
- ^ (EN) PHP: Crèdits , a secure.php.net. URL consultato il 26 settembre 2017 .
- ^ Usage Statistics and Market Share of PHP for Websites, February 2020 , su w3techs.com . URL consultato il 28 febbraio 2020 .
- ^ TIOBE Software Award , su tiobe.com .
- ^ GOPHP5! , su pear.php.net . URL consultato il 26 settembre 2017 .
- ^ PHP: Releases , su www.php.net . URL consultato il 28 febbraio 2020 .
- ^ WordPress Usage Statistics , su trends.builtwith.com . URL consultato il 30 gennaio 2021 .
- ^ ( EN ) Most used languages among software developers globally 2020 , su Statista . URL consultato il 30 gennaio 2021 .
- ^ Usage Statistics and Market Share of Server-side Programming Languages for Websites, January 2021 , su w3techs.com . URL consultato il 30 gennaio 2021 .
- ^ Confronto tra CMS nel 2021: i sistemi più popolari per la gestione dei contenuti , su IONOS Digitalguide . URL consultato il 30 gennaio 2021 .
- ^ PHP-related vulnerabilities on the National Vulnerability Database , su coelho.net . URL consultato il 6 luglio 2011 .
- ^ Register Globals deprecato e rimosso da PHP 5.4.0
- ^ Magic Quotes deprecato e rimosso da PHP 5.4.0
- ^ ( EN ) Archivio storico delle versioni non più supportate , su php.net . URL consultato il 15 maggio 2019 ( archiviato il 12 novembre 2006) .
- ^ ( EN ) What are PHP Vulnerabilities & How Do They Originate? , su Wordfence . URL consultato il 28 gennaio 2021 ( archiviato il 29 gennaio 2021) .
- ^ a b Manuale PHP - array , su it2.php.net . URL consultato il 14 marzo 2018 (archiviato dall' url originale il 15 marzo 2018) .
- ^ PHP: unset - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
- ^ PHP: foreach - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
- ^ Default Function Parameters In PHP | #! code , su www.hashbangcode.com . URL consultato il 17 ottobre 2020 .
- ^ PHP: Variable scope - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
- ^ Manuale PHP - include
- ^ Manuale PHP - include_once , su it2.php.net . URL consultato il 31 gennaio 2014 (archiviato dall' url originale il 1º febbraio 2014) .
- ^ Manuale PHP - require , su it2.php.net . URL consultato il 31 gennaio 2014 (archiviato dall' url originale il 1º febbraio 2014) .
- ^ Manuale PHP - require_once , su it2.php.net . URL consultato il 31 gennaio 2014 (archiviato dall' url originale il 1º febbraio 2014) .
- ^ PHP: Superglobals - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
- ^ PHP: Database Extensions - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
- ^ MySQLi:query , su it2.php.net . URL consultato il 29 gennaio 2014 (archiviato dall' url originale il 1º febbraio 2014) .
- ^ ( EN ) PHP vs ASP.NET: Top Differences for Beginners' Understanding , su Appinventiv , 28 settembre 2018. URL consultato il 30 gennaio 2021 .
- ^ ( EN ) Varun Bhagat, ASP.Net vs PHP: Which is Better? , su PixelCrayons , 8 ottobre 2019. URL consultato il 30 gennaio 2021 .
Bibliografia
- 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
Altri progetti
-
Wikibooks contiene testi o manuali su PHP
-
Wikiversità contiene risorse su PHP
-
Wikimedia Commons contiene immagini o altri file su PHP
Collegamenti esterni
- ( EN )Sito ufficiale , su php.net .
- PHP , su packages.debian.org .
- ( EN ) PHP , su GitHub .
- Repository sorgenti di PHP , su github.com .
- Sito di segnalazione bug , su bugs.php.net .
- ( EN ) PHP , su Free Software Directory .
- ( EN ) The PHP group, Storia di PHP , su secure.php.net .
Controllo di autorità | LCCN ( EN ) sh99002710 · GND ( DE ) 4546126-0 · BNF ( FR ) cb135584386 (data) · BNE ( ES ) XX548742 (data) |
---|