PHP

109 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 funcionamiento interno

Magento 2: cómo crear un módulo propio

Ahora es mucho más sencillo arrancar un nuevo módulo para Magento 2. Aquí que dejo unos sencillos pasos para crear un módulo propio. Luego es cuestión de ir añadiendo las configuraciones que quieras, menús en backend, zonas en frontend, plantillas, controladores, tareas programadas, y un largo etcétera.. La idea es la misma que en muchos otros CMS, al modo de Vendor/Modulo que vamos a seguir estructurando los códigos.

PHP y Symfony en la Raspberry Pi

Raspberry Pi: utilizando los GPIOs desde PHP y Symfony

Hoy traigo un howto para instalar PHP 7.2 en la Raspberry Pi.. luego un proyecto Symfony 4, con Symfony Flex.. y finalmente un code-kata para lanzar algunos comandos para encender unos LEDs conectados a unos pines del chip GPIO de la Raspberry Pi. Simplemente es un post de arranque para controlar desde PHP, con acceso directo a hardware, el chip de los GPIOs. Así de paso con Symfony, que aunque no es necesario, ayuda mucho en cualquier proyecto por los todos los extras que aporta. Por si no lo conoces, Raspberry Pi es un pequeño ordenador de propósito general de apenas 30 €, que la última versión a fecha de hoy trae HDMI, USBs, Wifi, Gigabit Ethernet, GPIOs, etcétera. Siempre ha hecho furor entre los programadores, y en la comunidad maker de dispositivos electrónicos. Una de las tareas para las que puede servir, es como servidor de páginas web, y en paralelo, puede controlar cualquier dispositivo que se ocurra conectar a los GPIOs. La última versión que es la Raspberry Pi 3B+ tiene 1 GB de RAM, con un procesador de 4 núcleos, más que suficiente para darle la potencia lógica a casi cualquier dispositivo que quieras probar de construir.

Magento funcionamiento interno

Magento 1: auto-activar la caché

Aquí estoy de nuevo compartiendo un truco sobre Magento 1. Magento 1 es un proyecto Open Source, con lo que navegando por el código fuente, o preguntando por foros por Internet que podemos llegar a encontrar cómo hacer esto. Pero aquí que lo dejo porque me ha costado un poco encontrar cómo hacerlo, y ha sido útil como técnica de mejora de proyectos en Magento 1. Digo que me ha sido útil ya que a veces, me he encontrado los proyectos sin activar la caché. Esto hacía que los proyectos corrieran mucho más lento, ya que Magento en general, sin la caché activada, es realmente lento.

SEO PHP duplicados

PHP y SEO: detectando contenidos duplicados

Hoy traigo un howto o code-kata, para comenzar a hacer nuestra propia herramienta de detección de duplicados. Puede ser una tarea más o menos compleja, depende mucho de hasta dónde queramos llegar, pero sólo mediante scripting en PHP podemos implementarlo. Es decir, podemos recorrer toda una web de la que estamos encargados, guardar los contenidos de sus URLs, y chequearlos para ver si tiene contenidos duplicados. Me remito a un post de hace un par de años para recorrer una web en anchura, o en profundidad, mediante un sencillo script en PHP: https://jnjsite.com/yo-robot-ii-white-gray-black-hat-seo/

Symfony 4 tests unitarios y funcionales

Symfony: tutorial 15: los tests automáticos, funcionales y unitarios

Hay personas que estáis siguiendo los tutoriales sobre Symfony, escribiéndome, consultándome, sobre Entidades, Doctrine Query Language, y otras cosas.. ¡Gracias! Esto me anima a seguir escribiendo, a terminar con la planificación que hice de puesta al día con Symfony 4. Así que, aquí estoy de nuevo con otro howto o tutorial, sobre éste framework tan cojonudo. Hoy llegamos a cómo automatizar las pruebas de tu aplicación web. Es decir, este post va sobre Test Drive Development (TDD para los amigos). Imagina que vas a entregar una web, la pruebas y pruebas pensando que todo va bien. Pero llega el día de la puesta en producción, pero como no has leído este post y no has automatizado las pruebas.. 😉 empieza a romperse por los rincones que menos habías pensado. No automatizar las pruebas es bastante habitual en el mundo de las webs, pero no debería de ser así. Así que con este post, repasaremos dando pinceladas a las principales herramientas que nos provee Symfony. Así sí que dormiremos tranquilos cada vez que entreguemos una nueva versión de nuestras aplicaciones web hechas en Symfony.

Magento 2 scripting..

Magento 2: haciendo scripts externos en PHP

Estar participando en grandes proyectos con Magento 2 es todo un privilegio, un honor. Con esto, que últimamente estoy investigando sobre cómo programar en Magento 2. Así que antes de entrar al tajo con el desarrollo de los módulos, programación de la plantilla (frontend), o programación para el panel de control (backend).. podemos empezar a juguetear con scripts externos a Magento que bootstrapean toda la aplicación para tenerlo todo disponible. Me explico, el hacer scripts externos a Magento es la mejor manera de comenzar a probar los fragmentos de código que vamos a necesitar después en módulos, frontend y/o backend. Es decir, si vamos a necesitar una sección, que te liste ciertos tipos de productos/pedidos/categorías/usuarios.. lo mejor es probar estos listados en otra parte. Mejor probamos en estos scripts externos, para luego incluirlos con toda su cáscara de frontend o backend, según proceda.

Magento 2 y el despliegue contínuo

Magento 2: automatizando el despliegue continuo

¡Hola de nuevo! Últimamente estoy jugueteando mucho con Magento 2, poniéndome al día con todas las nuevas mejoras que trae. Cierto es que la gente por los foros habla de muchos problemas con las versiones 2.0, 2.1, 2.2.. Pero pienso que es normal, ya que se ha hecho un remake total de todo el código fuente de Magento. Magento es un CMS para eCommerce enorme, tiene una gran cantidad de funcionalidades ya incorporadas de casa. Por otro lado, necesitas de un servidor potente para hacerlo correr. Pero tienes un punto de partida muy muy bueno, comparado por ejemplo con Prestashop, Sylius o WordPress con Woocommerce. Quizá incluso te puedes evitar un desarrollo a medida o la instalación de muchos módulos con sus correspondientes personalizaciones si es que Magento 2 ya dispone de las funcionalidades que necesitas.

Symfony navegando con BrowserKit and DomCrawler

Symfony: tutorial 14: navegando con DomCrawler, BrowserKit y CssSelector

Hoy les traigo otro tutorial sobre Symfony 4 y Symfony Flex. Siguiendo con la puesta al día que llevo con Symfony 4, hoy llego a cómo navegar por las páginas web. Es decir, los fundamentos de cómo utilizar el DomCrawler, el BrowserKit y el CssSelector de Symfony. Esto puede servir para dos cosas. La primera utilidad es para comprobar que el proyecto en el que estamos trabajando funciona como debe hacer. Podemos automatizar pruebas funcionales navegando por el proyecto, comprobando que los resultados son los esperados, mientras que desarrollamos y antes de que llegue a producción ningún fallo. La segunda utilidad es para navegar por páginas web remotas que estén en servidores remotos, no en local. Quizá necesitamos hacer comprobaciones en producción, o puede que necesitemos obtener contenidos, información relevante, o ficheros remotos alojados en páginas web mediante el protocolo HTTP que necesitemos recoger por alguna razón. És decir, la segunda utilidad es para conectar tu proyecto con sistemas informaticos remotos mediante el protocolo HTTP.

Heart beat

Symfony: tutorial 13: enganchándonos a los eventos

Siguiendo con la puesta al día que llevo con Symfony 4 y Flex, he llegado a los eventos. En el proceso de una petición HTTP al servidor, en Symfony ocurren muchas cosas. Durante ese proceso, se van ejecutando una serie de tareas en orden. A la vez que se procesan esas tareas, se van disparando una serie de señales. Estan señales definen los eventos. Y a su vez podemos engancharnos a estas señales para personalizar el funcionamiento de la aplicación web. Es decir, cuando un navegador hace una petición a un proyecto web Symfony, éste la recibe con el fichero public/index.php y comienza la ejecución de todo el framework junto con todo lo que hayamos construido, además de todos los componentes extra que le hayamos instalado. Ésta ejecución se hace en perfecta armonía, es una buena forma de comunicar componentes de Symfony entre sí, con los nuevos componentes que hayamos instalado, o para personalizar el comportamiento de nuestra aplicación.

Symfony subiendo todo tipo de ficheros al servidor

Symfony: subiendo todo tipo de ficheros al servidor

Hoy traigo un pequeño CODEKATA sobre una consulta que me ha hecho un lector. Se trata de unos códigos fuentes en Symfony 4 para subir ficheros al servidor, pero sin usar ningún componente extra en el proyecto. Se trata de unas pocas modificaciones que le he hecho al código fuente de ejemplo de la documentación oficial. Así el código dejará de chequear la extensión, el mime type del fichero, y además de que no renombra los ficheros con un identificador único. Esto puede tener doble filo porque puedes acabar machacando los ficheros en nuevas subidas, pero siempre se le puede añadir después la lógica necesaria para comprobar si el fichero ya existía.. 😉

Datatables filtrando datos mediante AJAX

Datatables y Symfony: cargando tablas con cantidades ingentes de datos

Continuando con un post anterior sobre mostrar tablas de datos interactivas, traigo hoy otro CODE-KATA, hecho en Symfony 4 para probar el Datatables más a fondo. En aquel post empecé a testear el Datatables con pocos datos. Datatables es un plugin de jQuery con el que en poco tiempo, listas, ordenas y filtras tablas de datos de forma muy profesional. Ahora estoy probando cómo funciona sobre un proyecto con ingentes cantidades de datos, en concreto con una tabla con 622,001 registros. Llegado a éste extremo, no puedes cargar el 100% de los datos en el servidor, enviarlos al navegador, y pintarlos. Si lo haces, el navegador se sobrecargará, no podrá pintar la tabla, o irá muy muy lento.

Ayuda en montaña, siguiente paso

Actualizando aplicaciones web de Symfony 3 al 4

Una tarea que tarde o temprano llega es el actualizar a la última versión de Symfony. Si queremos estar al día de todas las nuevas mejoras, que la aplicación funcione lo mejor posible, con todos los parches, lo más rápido posible.. llegaremos a esta tarea. Actualizar de la 1 a la 2 no lo he vivido, pero tengo entendido que no servía casi nada de la estructura de códigos montada. De la versión 2 a la 3 sí que lo he vivido; habían muchas funcionalidades obsoletas, había que actualizar paulatinamente hasta la versión 2.7 o la 2.8, si mal no recuerdo, para finalmente saltar a la 3 sin que todo petara. Ahora en el salto de la versión 3 a la 4 todo es bastante fácil, o por lo menos así lo he visto.