# PHP

PHP és un llenguatge de programació interpretat que s'utilitza per a generar pàgines web de forma dinàmica. S'executa al cantó del servidor, per aquest motiu al navegador web ja l'hi arriba la pàgina en format HTML, no podent visualitzar-ne el codi php. Tot i que és menys popular, també pot utilitzar-se per generar interfícies de comandes i aplicacions executables amb interfície gràfica. Disposa de versions tant per a Windows com per a GNU/Linux, així com d'altres.
PHP es distribueix sota la llicència PHP, que la Free Software Foundation qualifica com a programari lliure. Les sigles són un acrònim recursiu de PHP: Hipertext Preprocessor, tot i que originalment eren les sigles de Personal Home Page Tools.

## Visió general

PHP pot ser desplegat en la majoria dels servidors web i en tots els sistemes operatius i plataformes sense cost. El llenguatge PHP es troba instal·lat en més de 20 milions de llocs web i en un milió de servidors. Migrar els serveis basats en PHP cap a les noves tecnologies que apareixen, suposa un cost a justificar monetàriament (sobretot, en termes de maquinari i rendiment), per això, parlar si el nombre de llocs basats en PHP s'ha vist reduït progressivament en els últims anys, amb l'aparició de noves tecnologies com Node.js, Golang, ASP.NET, etc., o no, suposa obrir un debat no freturós de fal·làcies i arguments demagògics. És un fet constatat que, al món empresarial, només es canvien les coses quan suposa un avantatge estratègic al mercat. Les empreses manquen d'un sentit que els polaritzin els 'sentiments', emergint una pauta de posicionament mercantilista a favor o en contra d'alguna cosa solament per un sentit despectiu cap a certes tecnologies, tal com succeeix amb el món linux, windows i/o mac en l'àmbit dels usuaris.
Poder-se fer una visió general de com PHP està evolucionant en l'actualitat, és parlar sobre les noves llibreries disponibles, l'ús de matrius,maneig de nombres enters, tractament de la criptografia quan s'usa una Base64, Web scraping, indexació de webs, precuinat de dades, Macrodades, set de dades, supervisió de dades, set de proposicions dimensionals. Com veiem, una visió general d'aquest llenguatge, és molt més complexa que afirmar que és un llenguatge per al desenvolupament web. Aquesta realitat, subjecte en l'aparició de dominis xyz, la finalitat dels quals i especialitat és l'escorcollat dels serveis PHP per servir contingut amb una orientació a l'acompliment vinculada a serveis per a consum d'altres serveis que necessiten dades, tals com a I.A. on PHP està veient un acolliment amb un sentiment de confiança en els resultats per obtenir (sense pretendre servir de llenguatge en si mateix orientat a la I.A., atès que no va ser la seva conceptualització original). Encara que el màrqueting que està rebent aquest tipus de dominis, està relacionat amb les noves generacions de persones educades a les noves tecnologies Com a part de la visió general, caldria incloure un últim aspecte, i és la capacitat de generar capes de seguretat autodependents, en un paradigma només emergent gràcies a les llibreries de les quals disposa PHP (en procés de desenvolupament).
El lloc web de la Viquipèdia està desenvolupat en PHP. És també el mòdul Apache més popular entre els ordinadors que utilitzen Apache com a servidor web.
La gran semblança que posseeix PHP amb els llenguatges més comuns de programació estructurada, com C i Perl, permeten a la majoria dels programadors crear aplicacions complexes amb una corba d'aprenentatge molt curta. També els permet involucrar-se amb aplicacions de contingut dinàmic sense haver d'aprendre tot un nou grup de funcions.
Encara que tot en el seu disseny està orientat a facilitar la creació de llocs webs, és possible crear aplicacions amb una interfície gràfica d'usuari, utilitzant alguna extensió com pot ser PHP-Qt, PHP-GTK, WxPHP, WinBinder, Roadsend PHP, Phalanger, Phc o Hip-hop VM. També pot ser usat des de la interfícia de comandes, de la mateixa manera com Perl o Python poden fer-ho; a aquesta versió de PHP s'anomena PHP-CLI (Command Line Interface).
Quan el client fa una petició al servidor perquè li enviï una pàgina web, el servidor executa l'intèrpret de PHP. Aquest processa l'script sol·licitat que generarà el contingut de manera dinàmica (per exemple obtenint informació d'una base de dades). El resultat és enviat per l'intèrpret al servidor, que al seu torn l'hi envia al client.
Mitjançant extensions és també possible la generació d'arxius PDF, Flaix, així com imatges en diferents formats.
Permet la connexió a diferents tipus de servidors de bases de dades tant SQL com NoSQL així com MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird, SQLite o MongoDB.
PHP també té la capacitat de ser executat en la majoria dels sistemes operatius, com Unix (i d'aquest tipus, com a Linux o Mac OS X) i Microsoft Windows, i pot interactuar amb els servidors de web més populars ja que existeix en versió CGI, mòdul per Apache, i ISAPI.
PHP és una alternativa a les tecnologies de Microsoft ASP i ASP.NET (que utilitza C# i Visual Basic .NET com a llenguatges), a ColdFusion de l'empresa Adobe, a JSP/Java, CGI/Perl i a Node.js/Javascript. Encara que la seva creació i desenvolupament es dona en l'àmbit dels sistemes lliures, sota la llicència GNU, existeix a més un entorn de desenvolupament integrat comercial anomenat Zend Studio. CodeGear (la divisió de llenguatges de programació de Borland) ha tret al mercat un entorn de desenvolupament integrat per PHP, denominat 'Delphi for PHP'. També existeixen almenys un parell de mòduls per Eclipse, un dels entorns més populars.

## Història

Va sorgir als voltants del 1994 com un conjunt de scripts escrits per Rasmus Lerdof en Perl. El 8 de juny de 1995 Lerdorf va alliberar PHP per tal d'accelerar la localització d'errors i millorar-ne el codi. Aquest versió es va anomenar PHP version 2, aquesta versió ja disposava de les funcionalitats bàsiques que PHP té actualment.

### PHP 3

Dos programadors israelís del Technion, Zeev Suraski i Andi Gutmans, van reescriure l'analitzador sintàctic (parser en anglès) l'any 1997 i van crear la base del PHP3, canviant el nom del llenguatge a la forma actual. Immediatament van començar experimentacions públiques de PHP3 i va ser publicat oficialment el juny del 1998.
Per a 1999, Suraski i Gutmans van reescriure el codi de PHP, produint el que avui es coneix com a motor Zend. També van fundar Zend Technologies en Ramat Gan, Israel.

### PHP 4

Al maig de 2000 PHP 4 va ser llançat sota el poder del motor Zend Engine 1.0. El dia 13 de juliol de 2007 es va anunciar la suspensió del suport i desenvolupament de la versió 4 de PHP, malgrat l'anunciat s'ha alliberat una nova versió amb millores de seguretat, la 4.4.8 publicada el 13 de gener del 2008 i posteriorment la versió 4.4.9 publicada el 7 d'agost de 2008. Segons aquesta notícia es donarà suport a fallades crítiques fins al 2008-08-09,...

### PHP 5

El 13 de juliol de 2004, va ser llançat PHP 5, utilitzant el motor Zend Engine 2.0 (o Zend Engine 2). La versió més recent de PHP és la 5.3.3 (22 de juliol de 2010), que inclou tots els avantatges que proveeix el nou Zend Engine 2 com:
* Millor suport per a la Programació Orientada a Objectes, que en versions anteriors era extremadament rudimentari.
* Millores de rendiment.
* Millor suport per MySQL amb extensió completament reescrita.
* Millor suport a XML (XPath, DOM, etc.).
* Suport natiu per SQLite.
* Suport integrat per SOAP.
* Iteradores de dades.
* Maneig d'excepcions.
* Millores amb la implementació amb Oracle.
Encara se segueixen publicant versions de la branca 5.2.X, sent publicada la versió 5.2.14 el 22 de Julio de 2010, encara que la majoria són actualitzacions de seguretat

### PHP 6

La branca 6 de PHP no va arribar mai al seu llançament.
Les diferències que havia de tenir enfront de PHP 5 eren:
* Suport Unicode;
* neteja de funcionalitats obsoletes com register_globals, safe_mode, etc.;
* PECL i eliminació de suport ereg;
* millores en orientació a objectes;
* inclusió en el nucli de xmlReader i xmlWriter així com Fileinfo;
* return per referència retornarà un error;
* es retira el suport de les biblioteques FreeType1 i GD21;
* etc.

### PHP 7

Així, abandonada la branca 6, el 3 de desembre de 2015 es va llançar el PHP 7.
El PHP 7.0.0 va aparèixer amb una nova versió del motor Zend, nombroses millores i noves característiques com:
* rendiment millorat: PHP 7 és fins a dues vegades més ràpid que PHP 5.6
* es redueix significativament l'ús de memòria
* arbre de sintaxi d'abstractes
* suport consistent de 64 bits
* jerarquia d'excepcions millorada
* molts errors fatals convertits en excepcions
* generador de nombres aleatoris segur
* SAPIs i extensions antigues i no compatibles eliminats
* operador nul de coalescència
* declaracions de tipus retorn i escalars
* classes anònimes
PHP 8
Última actualització, el 20 de Novembre del 2020 es va llançar el PHP 8.0.0.

## Característiques

PHP està extremadament modularitzat. Amb el tipus de dades, la sintaxi i les funcions s'assembla molt al llenguatge de programació C. Des de la versió 5, inclou un major suport a l'orientació a objectes, també s'assembla al C++.
PHP es pot incloure dins del codi HTML, indicant-ho a l'intèrpret mitjançant les etiquetes <? i ?> o <?php i ?>. Quan el llenguatge s'estigui interpretant, s'executarà el codi que està entre les etiquetes, generant un codi HTML com a sortida. El codi HTML generat pel codi PHP es barrejarà amb la pàgina HTML on hagués estat inclòs.
PHP, com a llenguatge nascut de i per Internet, té moltes funcions de xarxa, de codi web, i de bases de dades. Concretament, per a bases de dades Oracle, Sybase, PostgreSQL, InterBase, MySQL, SQLite, MSSQL, etcètera. Molts protocols de xarxa com MAP, SNMP, NNTP, POP3, HTTP, LDAP, XML-RPC i SOAP. Com és freqüent als llenguatges de programació, mitjançant biblioteques de tercers es poden ampliar les possibilitats de PHP.
La gran semblança que té PHP amb els llenguatges més comuns de programació estructurada, com C i Perl, permeten a la majoria dels programadors crear aplicacions complexes amb una corba d'aprenentatge molt curta. També els permet involucrar-se amb aplicacions de contingut dinàmic sense haver d'aprendre tot un nou grup de funcions.
La Viquipèdia funciona gràcies a un programari anomenat MediaWiki escrit amb PHP i que utilitza base de dades MySQL.
Principis bàsics per a la programació en PHP, el popular llenguatge del costat del servidor. Manual assequible per a no programadors que senti els fonaments bàsics d'aquest llenguatge. Continuació lògica del manual de pàgines dinàmiques.

### Avantatges

* És un llenguatge multiplataforma.
* Completament orientat al desenvolupament d'aplicacions web dinàmiques amb accés a informació emmagatzemada en una base de dades.
* El codi font escrit en PHP és invisible al navegador i el client, ja que és el servidor el que s'encarrega d'executar el codi i enviar el seu resultat HTML al navegador. Això fa que la programació en PHP sigui segura i de confiança.
* Capacitat de connexió amb la majoria dels motors de base de dades que s'utilitzen en l'actualitat, destaca la seva connectivitat amb MySQL i PostgreSQL.
* Capacitat d'expandir el seu potencial utilitzant l'enorme quantitat de mòduls (anomenats ext's o extensions).
* Té una àmplia documentació en la seva pàgina oficial (www.php.net), entre la qual es destaca que totes les funcions del sistema estan explicades i exemplificades en un únic fitxer d'ajuda.
* És lliure, pel que es presenta com una alternativa de fàcil accés per a tothom.
* Permet aplicar tècniques de programació orientada a objectes.
* Biblioteca nativa de funcions summament àmplia i inclosa.
* No requereix definició de tipus de variables encara que els seus variables es poden avaluar també pel tipus que estiguin fent servir en temps d'execució.
* Té maneig d'excepcions (des de PHP5).
* Si bé PHP no obliga a qui l'usa a seguir una determinada metodologia a l'hora de programar (molts altres llenguatges tampoc ho fan), tot i estar dirigit a alguna en particular, el programador pot aplicar en el seu treball qualsevol tècnica de programació i / o desenvolupament que li permeti escriure codi ordenat, estructurat i manejable. Un exemple d'això són els desenvolupaments que en PHP s'han fet del patró de disseny «Model-Vista-Controlador» (o MVC), que permeten separar el tractament i accés a les dades, la lògica de control i la interfície d'usuari en tres components independents.

### Inconvenients

* L'ofuscació de codi és l'única manera d'ocultar els fonts.

## Hola Món

En el següent exemple es mostra el típic "hola món":

## Sintaxi

Per tal que l'interpret pugui localitzar quins fragments de codi ha de traduir, PHP utilitza diferents etiquetes:
Etiquetatge llarg.
Etiquetatge curt, necessita que estigui configurat al fitxer php.ini
Disponible a partir de la versió 3.0.4.
Aconsellat quan s'utilitza Front Page, degut al risc que hi ha en utilitzar les altres etiquetes i que l'aplicació no les comprengui i les esborri.
Els fitxers tant amb codi en PHP com en HTML i PHP podem utilitzar diferents extensions com phtml, php, php4, etc.
Totes les instruccions han d'acabar amb punt i coma ";", menys l'última abans de tancar l'etiqueta, tot i que aquest formalisme no és necessari.
PHP accepta els següents comentaris:

## Variables

En PHP les variables comencen amb el símbol dòlar ($) i el segon caràcter ha de ser diferent d'un número:
Una variable pot ser de qualsevol tipus, perquè en PHP no existeix la declaració de variables. Cada variable serà d'un tipus o un altre segons la informació que contingui en aquell moment. PHP treballa amb els següents tipus:

## Operadors

PHP utilitza els següents operadors:
* Operadors aritmètics:
* Operadors de comparació:
* Operadors lògics:

## Exemples

Exemple de classe en PHP
Adjuntar un fitxer a un php
L'include.php es pot substituir per qualsevol altre php

## Aplicacions desenvolupades amb PHP

* Blocs
** Wordpress
* Comerç electrònic
** OsCommerce
** PrestaShop
* Xarxes socials
** Facebook
** Tuenti
* Joomla
* Drupal
* Moodle
* phpBB
* phpMyAdmin

## Referències

* ↑ «["https://wiki.php.net/rfc/object-typehint" "PHP 7 introduced scalar types for parameters and also for declaring return types for functions."]» (en anglès). "https://wiki.php.net/rfc/object-typehint#introduction". [Consulta: 7 juliol 2019].
* ↑ «NaCl: Networking and Cryptography library» (en anglès). https://www.php.net/manual/es/book.sodium.php.+[Consulta: 7 juliol 2019].
* ↑ «NaCl library for encryption, decryption, signatures, password hashing and more.» (en anglès). https://download.libsodium.org/doc/#offline-documentation.+[Consulta: 7 juliol 2019].
* ↑ «Sodium is a modern, easy-to-use software library.» (en espanyol). https://www.php.net/docs.php.+[Consulta: 7 juliol 2019].
* ↑ «noves generacions» (en anglès). www.google.com. [Consulta: 8 febrer 2018].
* ↑ «Historical trends in the usage of server-side programming languages for websites» (en anglès). W3Techs. [Consulta: 10 setembre 2013].
* ↑ «PHP-GTK» (en anglès). PHP Group. [Consulta: 10 setembre 2013].
* ↑ «PHP: Funcionamiento en línea de comandos». PHP Group. [Consulta: 10 setembre 2013].
* ↑ «dompdf - HTML to PDF converter (PHP5)» (en anglès). [Consulta: 10 setembre 2013].
* ↑ «PHP: Extensiones de bases de datos - Manual». PHP Group. [Consulta: 10 setembre 2013].
* ↑ Existeixen tant PHPEclipse com PDT for Eclipse. Vegeu http://www.phpeclipse.com Arxivat 2009-03-18 a Wayback Machine. i http://www.eclipse.org/pdt
* ↑ Lerdorf, Rasmus. «Announce: Personal Home Page Tools (PHP Tools)», 08-06-1995. [Consulta: 17 setembre 2006].

## Vegeu també

* ASP, de Microsoft
* JSP i Servlets de SUN
* ColdFusion, d'Allaire

## Enllaços externs

* Pàgina oficial sobre PHP i el seu desenvolupament. Inclou la seva descàrrega i manuals
* PHP Cookbook - Un manual en línia sobre el PHP (anglès)
Viccionari