PHP

104 entradas

PHP es el lenguaje de programación de mayor aceptación entre las aplicaciones web. La gran mayoría de los CMS orientados al mundo de la web están desarrollados sobre PHP.

Preparado para correr sobre un servidor web, aunque en mucha menor medida también se puede utilizar en entorno de terminal. Tiene una curva de aprendizaje muy baja, es muy permisivo con los errores, es interpretado, no compilado y orientado a objetos, entre otras cosas.

Aunque sea un lenguaje muy aceptado por los principiantes, es muy atacado por muchos experimientados en la programación. No obstante es uno de mis lenguajes preferidos. Y sobre todo, al desarrollar para la web, siendo prácticos, es una de las primeras y mejores soluciones balanceando entre el conjunto de lenguajes disponibles.

Magento logo

Magento: primeras incursiones, recorriendo los productos

Este estupendo CMS orientado a la venta online de productos hace las delicias de los vendedores, de igual modo de los maquetadores, y cómo no, también de los programadores. Como analista programador llevaba ya un tiempo queriendo meterle mano a las entrañas de Magento. Así que poco a poco, he ido cogiendo los manuales para el usuario, luego el del diseñador, y ahora tengo entre manos el del programador. Ahora según van surgiendo las necesidades voy haciendo incursiones cada vez más a fondo en el código fuente de esta humongous web application. La verdad es que lo estoy disfrutando porque Magento está desarrollado con una buena estructura y sobre un gran framework de desarrollo PHP, el Zend Framework. Incorporando técnicas de programación que le dan una gran flexibilidad sin añadir demasiada complejidad.

Logo de PHP

Descargar un fichero vía web y enviarlo por email con PHP

Este es otro pequeño how to para hacer una tarea rutinaria. Simplemente, como indica el título de la entrada, se hace lo que dice, en este caso mediante PHP. Esta tarea se puede programar en línea de comandos para ejecutarse todos los días. Es algo habitualmente necesario, y ya que PHP es un lenguaje de scripting muy sencillo y a la par potente, vamos a ver cómo hacer esto sin complejos sistemas intermedios. Para este manual se usa Linux, y se ha probado sobre Ubuntu 14.

Magento logo

Magento 2: conociendo a la bestia parda

De todos las soluciones de tienda online que he conocido hasta la fecha, Magento es de lo más robusto y potente que he visto de código abierto. Estoy conociendo poco a poco los entresijos de Magento 1 en el trabajo, y es buen momento de ver las mejoras que trae Magento 2 y así cotejar. Es un sistema de información dedicado a la venta robusto, flexible y muy personalizable. Alrededor de Magento se mueve todo un ecosistema de soluciones empresariales de la más alta gama. Todo esto es posible gracias a las características de Magento. Para explicar todo lo que tiene Magento necesitamos mucho tiempo, terminaríamos antes buscando qué no tiene. Pero también encontrar qué no tiene va a ser difícil porque Magento es todo un referente mundial de las soluciones eCommerce existentes. Un poco de historia Nació como proyecto de código abierto en el 2007. Ya en el 2008 fue premiado como mejor nuevo proyecto de código abierto del año. En el año 2009 la empresa Varien lanzó la versión Enterprise con el modelo de negocio de suscripción anual. Ahora mismo es propiedad de Ebay, la cual es propietaria del 100% de la empresa. Lanzaron también una versión Profesional, […]

Logo de PHP

PHP 11: Los traits, reutilizando funciones

Sigo repasando las nuevas formas de programar que traen las últimas versiones de PHP. Así siguiendo un poco con la reutilización de código llego a los traits, que son una forma muy sencilla de tener funciones o variables en un sitio que luego puedo reutilizar fácilmente. Desde PHP 5.4 que tenemos ésto disponible así que… Venga, vamos con el ejemplo: <?php trait MiLibreria1 { public function funcion1() { echo ‘Funcion1 ‘; } public function funcion2() { echo ‘Funcion2 ‘; } } trait MiLibreria2 { public function funcion3() { echo ‘Funcion3 ‘; } abstract public function funcion4(); public static $variable1 = ‘variable1’; } class MiTipoDeObjeto { use MiLibreria1, MiLibreria2; // debemos implementar ésta función porque es abstracta public function funcion4(){ echo ‘Function4 ‘; } } $objeto = new MiTipoDeObjeto(); // funciones ‘heredadas’ $objeto->funcion1(); $objeto->funcion2(); $objeto->funcion3(); $objeto->funcion4(); // variable estática ‘heredada’ echo MiTipoDeObjeto::$variable1; El código habla por sí sólo, es muy sencillo tener funciones o variables en un trait y luego usarlas dentro de una clase con la palabra reservada use. En éste caso tenemos dos librerías que se usan dentro de una clase. También podemos hacer funciones y variables privadas, estáticas y abstractas como con las clases normales. De igual manera […]

Objetos relacionados

PHP 10: Objetos a partir de otros, las interfaces

Siguiendo con la serie de mini-tutoriales para empezar a programar con PHP, ahora vamos con las interfaces.. Vienen a ser el siguiente paso en la encapsulación de objetos. Primero teníamos las clases que representan objetos únicos, con los cuales podemos construir otros a partir de ellos utilizando la palabra ‘extends’. Luego podíamos declarar clases abstractas que tenían métodos abstractos que no se implementaban (programaban) en la clase padre, sino que se obligaba a que se implementaran en las clases hijas. Las clases hijas extendían de la clase abstracta padre de igual manera que antes. Ahora tenemos las interfaces, que vienen a ser clases que simplemente nos dicen los métodos que hay que implementar en las clases hijas. Unas interfaces se pueden extender en otras, con lo que heredan las declaraciones de los métodos utilizando la palabra clave extends, pero siguen sin implementar los métodos porque siguen siendo interfaces. Pero cuando llegamos a una clase hija que va a implementar dichos métodos utilizaremos la palabra clave implements. Con un ejemplo se verá claro y rápido. El ejemplo   <?php error_reporting(E_ALL); ini_set(‘display_errors’, ‘1’); // interfaz que obliga a implementar dos funciones interface iVehiculo { public function escribirMatricula(); public function coordenadas(); } // […]

PHP 9: Objetos, clases y métodos abstractos

Otro fin de semana, ésta vez con festivos por la semana santa. Tengo algo de tiempo así que voy a continuar con los minitutoriales para aprender sobre éste apasionante lenguaje de programación que tanto se está usando en el desarrollo de páginas web. Según las últimas estadísticas que he estado viendo, ronda el 80% de las páginas web que estan hechas con PHP. Aparte de otros lenguajes que se usan junto con PHP como JavaScript, o los lenguajes de marcado. Siguiendo con la construcción de objetos a partir de otros vamos ahora con las clases abstract. Empezando En el tutorial anterior veíamos como extender clases creando clases hijas que heredaban las variables y métodos de la clase padre. No teniendo entonces que volver a programar el mismo código. Una clase abstract es cualquier clase que tenga al menos un elemento abstracto. Éstos elementos abstractos no deben programarse en la clase padre y es obligatorio hacerlo en las clases hijas. Por ejemplo: <?php// clase baseabstract class vehiculo { public $matricula; abstract public function escribirMatricula();}// clases que extienden la clase baseclass moto extends vehiculo { public $velocidadMaxima; public function escribirMatricula() { echo $this->matricula; }}class coche extends vehiculo { public $tipo; public function […]

Objetos relacionados

PHP 8: Creando objetos a partir de otros, herencia simple

Estoy con algo más de tiempo, así que jugando un poco más con la programación orientada a objetos, les escribo ahora sobre cómo crear objetos a partir de otros de la forma más simple. Hay tres formas de crear objetos a partir de otros objetos: mediante extends, con clases abstract, y con interface. Todo éste proceso es lo que se llama herencia, donde los objetos hijos no heredan casas ni coches ni grandes fortunas xD, si no que en éste caso heredan funciones y variables. Empezando con la herencia simple Vamos a suponer lo siguiente. Queremos usar en nuestro programa la información de ciertos vehículos, y dichos vehículos pueden ser motos, coches y camiones. Usando la palabra reservada extends vamos a ver con un ejemplo lo sencillo que es el siguiente: <?php // clase base class vehiculo { public $matricula; } // clases que extienden la clase base class moto extends vehiculo { public $velocidadMaxima; } class coche extends vehiculo { public $tipo; } class camion extends vehiculo { public $numeroRuedas; } // creamos 3 vehiculos $micoche = new coche(); $mimoto = new moto(); $micamion = new camion(); // tanto la moto como el coche y el camión tienen matrícula […]

Objetos relacionados

PHP 7: Empezando con clases y objetos

A partir de ahora vamos a entrar en la programación orientada a objetos, POO para los amigos. En las técnicas de programación utilizar objetos es básico para poder hacer programas bien estructurados que se puedan reutilizar o  modificar. En programación, una clase es un objeto, y un objeto es una clase. Éstas clases de PHP tienen unas variables y unos métodos o funciones. Dicho ésto vamos al grano. Una primera clase básica A continuación tenemos un objeto, que es una clase de PHP. Éste objeto representa un avión que está en unas coordenadas, tiene un tipo de motor, cierta matrícula, y está en un estado determinado. Por ejemplo: <?php // se declara el objeto class Avion { // variables public $x, $y, $z; private $tipoMotor; public $matricula; private $estado; // a partir de aquí estan las funciones // constructor de la clase function __construct() { $this->x = $this->y = $this->z = 0; $this->tipoMotor = 1; $this->matricula = “No definida”; $this->estado = “No definido”; } public function getTipo() { switch ($tipoMotor) { case 1: $descripcion = “Hélices”; break; case 2: $descripcion = “Propulsión a chorro”; break; default: $descripcion = “Tipo no encontrado”; } return $descripcion; } public function getEstado() { return […]

Logo de PHP

PHP 6: Dividir en varios ficheros, includes, requires..

Después de ir dividiendo nuestra aplicación, programa o algoritmo que estemos haciendo usando funciones, tenemos también lo includes y requires. Siguiendo con aquello de “divide y vencerás”. Podríamos por ejemplo dividir las secciones del menú, cabecera, contenido Al grano.. include y require Includo y require son igual, por ejemplo si tenemos el siguiente archivo php6.php: <?php include “cabecera.php”; include “menu.php”; include “contenido.php”; ?> Que incluye al archivo cabecera.php siguiente: <?php echo “Aquí va la cabecera”; ?> Por ejemplo un menú así: <?php echo “Aquí el menú”; ?> Y el fichero que escribe el contenido: <?php echo “Y el contenido”; ?> Sea lo que sea que tengamos en los ficheros incluidos se ejecutarán desde el primer archivo en el orden y posición desde donde se llamen. Si no encuentra el archivo incluido mostrará entonces una advertencia (warning). Sin embargo, si usamos require y no encuentra el archivo incluido entonces parará y mostrará un error. include_once y require_once Para terminar con éste minitutorial, tenemos los once. La diferencia con los anteriores es que si ya hemos incluido o requerido un fichero y lo intentamos volver a require_once o include_once no lo va a hacer por segunda vez. include_once significa incluir una vez […]

Logo de PHP

PHP 5: Funciones

Hoy les dejo un resúmen sobre las funciones. Tenemos con ellas la primera herramienta para dividir nuestra aplicación en pequeñas partes más fáciles de desarrollar. Éstas funciones se pueden después reutilizar para no tener que repetir el mismo código una y otra vez. Al programar, se aplica mucho el dicho “Divide y vencerás”. Cuando tienes un problema lo bastante grande para resolverlo directamente conviene dividirlo en funciones. O simplemente para ver el programa más claro también conviene usar funciones. El ejemplo Es un tema sencillo así que con éste resúmen y un ejemplo seguro que puede quedar claro: <!DOCTYPE html> <html> <head> <meta charset=”utf-8″> </head> <body> <p> <?php function tareaCompleja($totalrepeticiones) { $total = 0; for ($i = 0; $i < $totalrepeticiones; $i++) { $total = $total + $i; } return $total; } $mivariable = 1000; echo tareaCompleja($mivariable); ?> </p> </body> </html> Vamos a comentar el ejemplo. Tenemos un documento que es una web, que tiene dentro incrustado código PHP. Tenemos una función llamada tareaCompleja que realiza un bucle for. Fijémonos primero después de la declaración de la función. Tenemos una variable que vale 1000 y en la última línea 19 del ejemplo tenemos un echo que usa la función. Tenemos […]

Logo de PHP

PHP 4: Bucles

Bueno, ya llegando a éste minitutorial se va poniendo divertido. Aquí tenemos las primeras estructuras de control que con pocas líneas de código nos van a permitir hacer muchas cosas. Ahora te preguntarás que como con programando pocas líneas podemos hacer muchas cosas. Sí! Para entenderlo rápidamente, por ejemplo, si queremos hacer una tarea un millón de veces. Programando un bucle que podría tener apenas tres lineas podría hacerse. for El bucle for ejecuta un número de veces una tarea, por ejemplo: for($i=1; $i<=1000000; $i++){ // ésto es un comentario que no se ejecuta // porque tiene delante las barras echo $i; } Éste bucle usa una variable $i que va desde 1 hasta 1000000, saltando de uno en uno. Es decir se ejecuta un millón de veces el echo $i; En la primera línea podemos ver el valor inicial, hasta cuándo ejecuta el bucle, y de cuánto es el incremento entre vuelta y vuelta del bucle. Éste miniprograma imprimirá “123456789101112131415… así sucesivamente hasta llegar a …9999991000000” Si tratas de ejecutar éste bucle probablemente no terminará porque un millón de veces es demasiado, saltará un temporizador en el servidor y cortará la ejecución por tardar demasiado. foreach El foreach nos […]

Logo de PHP

PHP 3: Condicionales

Siguiendo con la serie de minitutoriales, hoy les voy a dejar uno sobre los condicionales en PHP. Estamos viendo lo que se llaman estructuras de control, y dentro de ellas pretendo dividirlas y ver aquí sólo los condicionales if y switch. Si buscas un tutorial breve y concreto, sin rodeos y sin entrar en detalles, aquí lo tienes. A saber.. If Los condicionales comprueban si se cumple una condición, como su nombre indica, y en ése caso ejecutan el código programado en él. Por ejemplo: <!DOCTYPE html> <html> <head> <meta charset=”utf-8″> </head> <body> <p> <?php $variable = 2; if ($variable == 2) { echo “La variable vale dos.”; } else { echo “La variable no vale dos.”; } ?> </p> </body> </html> El código habla por sí sólo. Tenemos una web que utiliza el estándar HTML5 como indica su DOCTYPE, y en el cuerpo de la página tenemos incrustado código PHP. Simplemente mira si la variable vale 2 y como así es imprimirá ‘La variable vale dos.” en la web. Si no valiera dos entonces ejecutaría lo que hayas puesto en el else. El meollo de los condiciones está en la expresión de comparación ($variable == 2). Tenemos disponibles varios […]