Skip to content
On this page

PHP ‚Äč

php logo

PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es uno de los lenguajes de programación y scripting del lado del servidor más utilizados. Es de código abierto y se utiliza principalmente para el desarrollo web.

est√°disticas web

php
<?php
    phpinfo();
>

instalar PHP ‚Äč

Para instalar PHP basta con instalar el paquete php, pero para utilizarlo junto con apache y mysql además es necesario instalar los módulos para ello.

sudo apt install php libapache2-mod-php php-mysql

Iniciar Servidor ‚Äč

php -S localhost:4000 Inicia un servidor nuevo en localhost y escucha en el puerto 4000

Soporte de MySQL ‚Äč

Para tener soporte de MySQL en PHP deberemos

instalar el paquete php7.0-mysql ‚Äď $ apt-cache search php7.0 (es necesario reiniciar Apache)

Ver informaci√≥n de instalaci√≥n PHP ‚Äč

php -r "phpinfo();" > nombreArchivo Lo vuelca en un archivo

Paradigmas de Programaci√≥n ‚Äč

PHP es un lenguaje flexible y din√°mico que permite usar una variedad de t√©cnicas de programaci√≥n. El lenguaje ha evolucionado dram√°ticamente a trav√©s de los a√Īos. Se a√Īadi√≥ un modelo de objetos (object-oriented) s√≥lido en la versi√≥n 5.0 (2004), funciones an√≥nimas y espacios de nombres (namespaces) en PHP 5.3, y rasgos (traits) en PHP 5.4 (2012). Programaci√≥n Orientada a Objetos

PHP tiene un conjunto muy completo de aspectos que facilitan la programación orientada a objetos (OOP) que incluye la habilidad de crear clases, clases abstractas, interfaces, herencia, constructores, clonación de objetos, excepciones y mucho más.

Programaci√≥n Funcional ‚Äč

PHP tiene la capacidad de declarar funciones de primera clase, en otras palabras, una función puede ser asignada a un variable. Las funciones definidas por el usuario, así como las funciones internas (incluidas), tiene la habilidad de ser referenciadas por un variable e invocadas dinámicamente. Las funciones pueden ser pasadas como argumentos a otras funciones (un aspecto llamado funciones de orden superior) y funciones pueden devolver otras funciones.

La recursividad es un aspecto que le permite a una función a llamarse a sí misma. El lenguaje PHP habilita este tipo de algoritmos, sin embargo, la mayoría del código PHP se enfoca en iteración.

Las funciones anónimas (con soporte para closures) están presentes en PHP desde la versión 5.3 (2009).

En PHP 5.4 se a√Īadi√≥ la habilidad para vincular closure al √°mbito de un objeto y tambi√©n se mejor√≥ el soporte de funciones de tipo callable para que puedan intercambiarse con funciones an√≥nimas en casi todos los casos.

Programaci√≥n Meta ‚Äč

PHP soporta varias formas de programación meta por medio de mecanismos como el API de Reflexión y los Métodos Mágicos. Hay muchos Métodos Mágicos disponibles como __get(), __set(), __clone(), __toString(), __invoke() y más, que permiten a los desarrolladores a conectarse con el funcionamiento de la clase. A menudo desarrolladores en Ruby dicen que a PHP le falta la función de method_missing, sin embargo los aspectos de esta función están disponibles en __call() y __callStatic().

Namespaces ‚Äč

La comunidad de PHP tiene muchos desarrolladores creando una gran cantidad de código fuente. Esto quiere decir que existe la posibilidad que dos librerías diferentes utilicen el mismo nombre para una clase en su código. Cuando las dos librerías se usan dentro del mismo namespace esto se denomina como una colisión y puede causar problemas.

Los Namespaces resuelven este problema. Como se describe en el manual de referencia de PHP, los namespaces son similares a los directorios que separan los archivos en el sistema operativo. Dos archivos con el mismo nombre pueden coexistir en directorios separados. Igualmente, dos clases de PHP con el mismo nombre pueden coexistir en namespaces separados, es tan simple como eso.

Es importante que separe su código con un namespace para que pueda ser usado por otros desarrolladores sin la preocupación de que cause conflictos con otras librerías.

Uno de los métodos recomendados para el uso de espacios de nombres se indica en el PSR-0, el cual se propone proveer una convención estándar para los archivos, clases y los namespaces, lo cual facilita el intercambio y uso del código en diferentes proyectos.

Librer√≠a Est√°ndar de PHP ‚Äč

La Librería Estándar de PHP (SPL) viene empaquetada con PHP y provee una colección de clases e interfaces compuesta principalmente de clases de estructura de datos (como stack, queue y heap) e iteradores que pueden atravesar estas estructuras de datos o sus propias clases que implementan las interfaces de la SPL.

Interface de L√≠nea de Comando (CLI) ‚Äč

PHP fue creado principalmente para desarrollar aplicaciones web, pero tambi√©n es muy √ļtil para implementar programas que corren en la interface de l√≠nea de comando (CLI). Los programas de l√≠nea de comando en PHP pueden ayudarle a automatizar tareas comunes como pruebas, despliegues y la administraci√≥n de aplicaciones.

Los programas CLI en PHP son muy potentes porque el c√≥digo de la aplicaci√≥n se puede utilizar directamente sin tener que crear o asegurar un GUI web para su uso. Por esta raz√≥n, ¬°aseg√ļrese de no colocar sus programas CLI en su directorio ra√≠z p√ļblico!

Intente correr PHP desde la línea de comando:

php -i

La opci√≥n -i imprimir√° la configuraci√≥n de PHP, como sucede con la funci√≥n phpinfo. La opci√≥n -a habilita una consola interactiva muy similar al IRB de Ruby o a la consola interactiva de Python. Existen varias opciones de l√≠nea de comando que resultan muy √ļtiles. Vamos a escribir un programa simple que imprima ‚ÄúHola, $nombre‚ÄĚ a la l√≠nea de comando. Para empezar, vamos a crear un archive llamad hola.php como se muestra enseguida:

php
<?php
if($argc != 2) {
    echo "Uso: php hola.php [nombre].\n";
    exit(1);
}
$nombre = $argv[1];
echo "Hola, $nombre\n";

PHP hace disponibles dos variables especiales basados en los argumentos que recibe el programa el ser ejecutado. El variable de tipo entero $argc contiene el count o n√ļmero de argumentos y el variable de tipo array "$argv" contiene el value o valor de cada uno de los argumentos que se pasaron durante la ejecuci√≥n. El primer argumento siempre es el nombre del archivo del programa PHP, que en este caso es hola.php.

La expresi√≥n exit() se puede usar con un n√ļmero que no es cero para dejarle saber a la consola que el comando ha fallado. Aqu√≠ puede encontrar los c√≥digos de salida m√°s com√ļnmente usados.

Para ejecutar el programa desde la línea de comando:

php hola.php Uso: php hola.php [nombre] php hola.php mundo Hola, mundo

XDebug ‚Äč

Es una de las herramientas m√°s √ļtiles en el desarrollo de software, es un depurador o debugger. Permite el trazado de ejecuci√≥n de tu c√≥digo y monitorear el contenida de la pila de ejecuci√≥n. XDebug, depurador para PHP, puede ser utilizado por varios IDEs para proveer Breakpoints e inspeccionar la pila de ejecuci√≥n. Tambi√©n permite que herramientas como PHPUnit y KCacheGrind realicen an√°lisis de cobertura del c√≥digo.

Si te encuentras en un aprieto, y recurres a var_dump/print_r, y sigues sin encontrar la solución - tal ves necesitas usar un depurador.

Instalar XDebug puede ser complicado, pero una de las caracter√≠sticas m√°s importantes es la ‚ÄúDepuraci√≥n Remota‚ÄĚ - Si √©sta desarrollando su c√≥digo localmente y despu√©s lo prueba dentro de una VM (M√°quina Virtual) u en otro servidor, la Depuraci√≥n Remota es la caracter√≠stica que necesitaras habilitar desde un comienzo.

Tradicionalmente, tendr√° que modificar su VHost Apache o el archivo .htaccess con los siguientes valores:

php_value xdebug.remote_host=192.168.?.? php_value xdebug.remote_port=9000

El ‚Äúremote host‚ÄĚ y el ‚Äúremote port‚ÄĚ corresponder√°n a su computadora local y el puerto de escucha que usted configur√≥ para su IDE. Ahora solo es cuesti√≥n de que ponga su IDE dentro del modo ‚Äúescuchar conexiones‚ÄĚ, y cargue la URL:

http://your-website.example.com/index.php?XDEBUG_SESSION_START=1

Su IDE ahora interceptará el estado actual de la ejecución de su script, permitiéndole establecer breakpoints y verificar los valores en memoria.

Los depuradores gráficos hacen muy fácil el proceso de recorrer el código, inspeccionar variables, y evaluar el código en tiempo de ejecución. Varios IDE’s tienen integrado o pueden ser integrados vía plugin la depuración gráfica con XDebug. MacGDBp es un GUI de XDebug para Mac y también es gratuito, open-source y stand-alone.

Enlaces ‚Äč