PHP

110 entradas

Me preocupa el despliegue contínuo, fijando versiones en composer.json (editado)

¿Qué pasa si tienes un proyecto con librerías gestionadas con #Composer y le has puesto muchas de ellas que se actualicen a la última versión disponible? Para mantener el programa actualizado, beneficiándote de las últimas mejoras de cada librería, era una buena solución. Poner todo a la versión ‘dev-master’. Jeje, todo va bien mientras estás desarrollando.. De vez en cuando alguna función ‘deprecated’ deja de existir porque definitivamente la eliminaron. Nuevas funciones o propiedades que podemos usar. La aplicación funciona cada vez mejor pero sabes que no hay otra que fijar las versiones si no cuando pasemos a producción es un riesgo que se actualice automáticamente y zas! dejó de funcionar. Así que hay que buscar la versión que tenemos instalada de cada paquete y fijarlas. Puede que tengamos un composer.json parecido a éste, con muchos ~ * @dev dev-master >= etcétera: “requiere” : { “php” : “>=5.3.3”, “symfony/symfony” : “2.5.*”, “doctrine/orm” : “~2.2,>=2.2.3”, “doctrine/doctrine-bundle” : “~1.2”, “twig/extensions” : “~1.0”, “symfony/assetic-bundle” : “~2.3”, “symfony/swiftmailer-bundle” : “~2.3”, “symfony/monolog-bundle” : “~2.4”, “sensio/distribution-bundle” : “~3.0”, “sensio/framework-extra-bundle” : “~3.0”, “incenteev/composer-parameter-handler” : “~2.0”, “sensio/generator-bundle” : “~2.3”, “mopa/bootstrap-bundle” : “dev-master”, “twbs/bootstrap” : “dev-master”, “knplabs/knp-paginator-bundle” : “dev-master”, “knplabs/knp-menu-bundle” : “dev-master”, “knplabs/knp-menu” : “2.0.*@dev”, “craue/formflow-bundle” : “dev-master”, “friendsofsymfony/user-bundle” […]

Hola mundo Silex usando Composer

Estoy ahora curioseando los entresijos de PHP. Viendo hacia dónde tiende la programación en la web. Añadiendo herramientas, librerías de programación para mis proyectos. Dentro del mundo de la programación, elegir librerías, actualizarlas, combinarlas.. todo esto lleva trabajo y en los últimos años están apareciendo herramientas que nos facilitan la vida. Pongámonos en situación Cuando empezamos a programar con PHP. Desde el inicio hasta hace pocos años, que casi todo se hacía a pelo. PHP puro y duro, añadiendo código y más código. Los programas iban creciendo y creciendo. Se iban añadiendo manualmente librerías para todo tipo de tareas. Ahora ya no tenemos que reinventar la rueda. Estan surgiendo librerías públicas como por ejemplo  Packagist, donde se recopilan códigos para hacer todo tipo de tareas con PHP. Para manejo de Packagist tenemos una herramienta llamada Composer, con la que una vez configurado lo que vamos a necesitar Composer se encarga de conectar a Packagist y descargar los ficheros que haga falta. Para la programación front-end tenemos herramientas como Bower, similar a Composer, pero pensado para gestionar librerías Javascript/CSS. Estas herramientas, una vez configuradas, nos descargarán los ficheros a nuestro directorio de trabajo y listo. Ya tendremos nuestro proyecto para programar, […]

Composer, gestor de librerías PHP

Instalar globalmente Composer en Ubuntu

Este post va a ser bien corto. Se trata de cómo instalar el ejecutable de Composer en un directorio de Linux que está en la variable PATH del sistema. Los directorios que están en PATH son los directorios en donde se busca el programa cuando queremos ejecutar algo en Linux. Podemos escribir lo siguiente en línea de comandos y veremos cuáles tenemos ahora mismo: echo $PATH Tendremos separados por : todos los directorios actuales. Vamos entonces a añadir en uno nuestro ejecutable de Composer, que se trata de un phar. Un fichero .phar es un programa PHP empaquetado dentro de un sólo archivo. Vamos entonces.. Descargar la última versión de composer Si tenemos instalado curl podemos ejecutar lo siguiente en línea de comandos: curl -sS https://getcomposer.org/installer | php Si sólo tenemos instalado PHP ejecutamos lo siguiente: php -r “readfile(‘https://getcomposer.org/installer’);” | php Entonces debemos tener en el directorio en que estamos un fichero llamado composer.phar que podríamos usar con ‘php composer.phar …’. Pero queremos ir un paso más allá. Pudiendo ejecutarlo desde cualquier directorio, ¿recuerdas? Instalamos en el sistema en PATH Ejecutamos los siguientes comandos y ya lo tendremos instalado globalmente. sudo mv composer.phar /usr/local/bin/composer sudo chown root:root /usr/local/bin/composer sudo chmod […]

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 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 […]

PHP siguiente nivel (editado)

Pensaba que ya tenia un buen nivel de conocimiento en la programación PHP. Estaba a mitad de camino entre programar webs desde cero, o usar CMSs y adaptarlos. Indagando, indagando, y bien aconsejado me decidí por aprender a fondo sobre el tema, cómo estan hechos los CMSs, y sobre los frameworks de desarrollo. La idea que tenia en mente era no reinventar la rueda una y otra vez con cada proyecto. Ahora resulta que como dice el dicho, cuanto más aprendo, más veo que me falta por aprender. Es chistoso pero así es, a veces me siento contento de haber aprendido, pero miro hacia adelante, no quiero quedarme atrás, y pienso sobre todo lo que quisiera saber. Por todo ésto les quiero compartir una serie de enlaces a alimento académico y herramientas. Para todos aquellos que estamos en constante reciclaje, que creo la mayoría de los programadores.. Al grano, los recursos: PHP -> Imprescindible, manuales oficiales sobre el lenguaje de programación PHP. LIBROSWEB -> Muchos libros gratis para la comunidad de programadores. Son libros avanzados sobre XHTML, Symfony, Silex, Composer, Git, CSS y más. Composer -> Es una herramienta con la que podemos instalar de forma automática todo tipo de […]

Joomla carga muy lento con Windows 7

Desarrollando y construyendo una web en Joomla, me encuentro con el problema de que mi instalación en una máquina de trabajo con Windows 7 y Uniform Server tarda mucho en servir las páginas. Llega a tardar del orden de 2 a 10 segundos para cada página. Después de haber encontrado mi solución y la de muchos otros en situaciones parecidas les expongo aquí las soluciones que encontré y fui probando. Ésto lo he aplicado a una instalación de un servidor Apache con PHP y MySQL corriendo un Joomla 2.5. Debería de funcionar también si tienes el problema con otros CMS como Drupal o WordPress. 1. Desactivar antivirus o excluir el directorio de instalación del servidor. 2. Desactivar el firewall o permitir el acceso directo de los programas del servidor Apache, PHP y MySQL. 3. Desactivar IPv6 de la máquina. 4. Acceder a la máquina local mediante 127.0.0.1 en vez de poniendo localhost. También se puede modificar el archivo de hosts para ésto.  5. Editar el fichero php.ini 6. Editar http.conf de Apache para escuchar con IPv4. 7. Si tienes XAMPP instalar Uniform Server, o viceversa. O actualizar a una nueva versión. 8. Poner PHP como módulo de Apache, en vez […]

Joomla! Platform 4: Autocarga de clases con JLoader

Empieza el domingo interesante. Un poco desesperado porque el framework de Joomla no tiene mucha documentación para usarlo independientemente del CMS pero ahí seguiré atento a los cambios, que seguro que algún día se convertirá en un framework de la categoría de Symfony o Codelgniter, por ejemplo. Con 2700 desarrolladores en todo el mundo, más de 6000 extensiones, con un 2,7% de portales en Internet que usan Joomla! ésto promete. A fecha de hoy leo en los foros de grupos de desarrollo que con la separación de Joomla Platform del desarrollo del CMS se están cambiando los espacios de nombres y añadiendo más y más funcionalidades. Una de éstas últimas es el nuevo método para autocargar clases. Con un ejemplo se ve bien sencillo: <?php // se importa la Plataforma Joomla. require_once ‘libraries/import.php’; // directorio base que se usa para el autocargador de clases const JPATH_BASE = __DIR__; // registra un prefijo cualquiera JLoader::registerPrefix(‘Jnj’, JPATH_BASE); // crea una instancia de la clase nueva $app = JApplicationWeb::getInstance(“JnjUnDirectorioEjemploWeb”); // se supone que debemos guardar la applicación en el core JFactory::$application = $app; // y entonces podemos ejecutarla desde el core JFactory::getApplication()->execute(); // así queda todo ordenado en el núcleo del framework Éste […]

Joomla! Platform 3: Bases de datos

Ya llegó el calor, terminaron los exámenes de junio y parece que ya llega el verano, aunque hace poco aún estaba lloviendo en la costa mediterránea de España. Yo sigo con lo mío y hoy les traigo un acceso a bases de datos usando SQLite, una base de datos de dominio público, embebida, no necesita instalación y simplemente con que PHP tenga activada la extensión para ello ya podemos usarla. Como viene siendo costumbre de la serie que escribo, me voy a centrar en el uso en un servidor web, con lo que el ejemplo es una página web. Se puede también ejecutar en línea de comando pero yo no uso PHP de esa forma así que… vamos al grano. Materiales El framework Joomla Platform. Yo he usado la versión 12.3, la oficial veo que es la 12.1 y está en desarrollo la 13.1. Aquí hay más información para los curiosos como yo. Un entorno de desarrollo. Aquí ya para gustos estan los colores, Eclipse va muy bien y es multiplataforma. Un servidor para ejecutarlo. XAMPP funciona muy bien y también es multiplataforma. Empezando Descomprimo el framework en el directorio si es que no lo tengo ya, entonces hay que […]

Mirando dentro de Joomla

Joomla! Platform 2: La fábrica de objetos de Joomla

Hoy les escribo un poco más sobre Joomla y su framework de desarrollo en PHP, la Joomla Platform. Esto es una joya, aunque no se usa mucho de manera independiente al CMS puede ser que pronto se haga. Por lo menos mi opinión es que es un buen framework; simple, rápido y eficaz, una buena alternativa. Siguiendo con la carnicería, sacando toda la casquería, las tripas y demás de todo lo que es el CMS y el framework. Y nos encontramos con la fábrica de objetos, la clase JFactory. La fábrica de objetos se usa constantemente en el CMS, en el desarrollo de extensiones, y si queremos desarrollar un sitio web a partir del framework podemos usarla y de esta manera tendremos todo el proyecto mejor estructurado. Materiales El framework, Plataforma Joomla para los amigos. Un entorno de desarrollo o editor de texto: Eclipse, Notepad++, Gedit, Vi, Notepad o el que sea que use.. Un servidor web con PHP: Va muy bien el XAMPP El ejemplo Con ésto pequeño ejemplo se puede ver una forma muy simple de usar el framework: …<?php// se importa la Plataforma Joomla.require_once ‘libraries/import.php’;// en éste ejemplo tan simple la clase la pongo aquí pero // […]

Joomla! Platform 1: Configuración y otros datos, JConfig y JPlatform

Continuando con la serie de minitutoriales sobre la Plataforma Joomla, en éste post voy a empezar a despellejar y destripar poco a poco ésta joya de la informática. A fecha de hoy Joomla es el CMS más utilizado en todo el mundo y hay una comunidad muy grande que lo mantiene. Si vamos a usar un framework PHP, nos vamos a asegurar de que la aplicación va a seguir una estructura, un orden a la hora de programar. Cada archivo, módulo, subprograma, función… va a ser claro de su padre y de su madre. Pero si usamos un framework, cualquiera que lo conozca podrá colaborar en el proyecto más pronto que tarde, porque será más legible, tendrá menos líneas de código probablemente que si lo hubieramos desarrollado desde cero. Todo ésto porque nos ahorraremos unas cuantas líneas de código. Así que veamos pues cómo lo han hecho… Materiales Simplemente 3 cosas para seguir éste minitutorial: Un servidor web con PHP como XAMPP, disponible para varios Sistemas Operativos, o el Uniform Server portable y para Windows. Nuestro editor o entorno de desarrollo preferido. Como por ejemplo Eclipse, Notepad++, etc… El CMS si queremos probarlo lo tenemos en castellano en http:/www.joomlaspanish.org. Y […]