Cómo usar Docker en proyectos PHP

Cómo usar Docker en proyectos PHP

Cómo hacer para..., Herramientas
Hace tiempo que vengo usando (¡y abogando por su uso!) máquinas virtuales para mis proyectos PHP. Hasta ahora me venía manejando con Vagrant y debo decir que me ha dado unas cuantas satisfacciones. Sin embargo, hay algunos problemas derivados de su uso: Las VM se pueden volver muy pesadasOcupan mucho espacio en el discoSon lentas de levantarNo es sencillo tener muchas corriendo a la par (Consumen muchos recursos de hardware)No es fácil asegurarme de que en Producción y en Desarrollo tengo exactamente el mismo software instalado. Investigando un poco y, hay que decirlo también, por consejo de algunos colegas me metí con docker. Qué es Docker Docker es una herramienta de virtualización basada en un concepto algo diferente al que usa Vagrant: los contenedores. No me voy a meter acá…
Leer más
Cómo usar URLs amigables con el Servidor Web Incorporado a PHP

Cómo usar URLs amigables con el Servidor Web Incorporado a PHP

Cómo hacer para...
Es muy común, desde la versión 5.4 de PHP, usar el servidor que viene incorporado mientras estamos en un ambiente de desarrollo (¿Para qué negarlo? ¡Es sumamente cómodo!). Un problema que sucede a menudo al utilizarlo es cómo usar URLs amigables. Por ejemplo, a un sitio web productivo no vas a querer que se acceda mediante algo como: https://misitio.com/index.php?fecha=2019-06-25&slug_categoria=top10 Más bien vas a preferir algo como: https://misitio.com/articulos/2019-06-25/top10 ¿O no? El problema es que, en el caso de PHP, las variables que se reciben a través de la URL son accesibles a los scripts a través de la variable $_GET. Claro que, para que esto suceda, estas URLs deben estar escritas respetando el formato canónico: La separación entre URLs y parámetros se marca con el caracter "?"La separación entre nombre del…
Leer más
Cómo pasar una variable de JavaScript a PHP

Cómo pasar una variable de JavaScript a PHP

Cómo hacer para...
Si estás programando algún sistema web medianamente complejo, es muy probable que te hayas enfrentado a este problema alguna vez. En muy resumidas cuentas, lo que estás intentando hacer es algo como: var variable_js = 2; $variable_php = variable_js; Sería lindo que todo funcionara de esa forma, ¿no? Lamentablemente, la cosa no es tan fácil (Pero tampoco es tan difícil en realidad). Por qué no se puede pasar directamente un valor de Js a PHP Esta pregunta esconde un poco de confusión respecto de cómo funcionan las aplicaciones web. Algo parecido a lo que comentaba en este artículo. El punto es que PHP y JavaScript se ejecutan en lugares y momentos diferentes. Es como si estuvieses leyendo un libro y te encontraras con algo que no comprendés del todo y…
Leer más
Cómo hacer un autocomplete con PHP

Cómo hacer un autocomplete con PHP

Cómo hacer para...
Es muy común hoy en día encontrarnos con formularios que deben completarse mediante alguna opción pre-existente en el sistema. Si las opciones son pocas, lo más usual es utilizar un dropdown (un objeto basado en el tag select de HTML), pero si la cantidad de opciones es grande, esto puede volverse un fastidio para el usuario. Una forma mejor es dejar que el usuario ingrese el texto que quiera y dejar que el sistema autocomplete el resto. Para lograr este efecto se requiere una combinación de factores: Un servicio que pueda tomar el texto introducido por el usuario y devuelva una lista de opciones disponibles que coincidan.Una página capaz de tomar la entrada del usuario, interactuar con el servicio y presentar las opciones al usuario. Un servicio que busque opciones…
Leer más
Cómo instalar librerías de composer en un hosting compartido

Cómo instalar librerías de composer en un hosting compartido

Cómo hacer para...
Una pregunta que me han hecho en repetidas oportunidades es cómo usar composer en un ambiente de hosting compartido. Personalmente, siempre prefiero usar mis propios servidores tipo VPS, precisamente para evitar este tipo de problemas, pero... si no queda otra, veamos qué se puede hacer. Cómo instalar dependencias si tenemos acceso ssh Existen algunos hostings compartidos que permiten algún tipo de acceso vía ssh (o similar). Si este es el caso, puede que hasta tengamos composer ya instalado... claro que la versión que podremos encontrar puede ser algo añeja y, como el servidor lo administra otro, tendremos que poner un ticket de soporte y rogar para que se actualice. Si tenemos suerte, podremos ejecutar composer y actualizar nuestras dependencias directamente en el servidor como si estuviéramos en un ambiente controlado…
Leer más
Qué se necesita para desarrollar usando Symfony en Windows

Qué se necesita para desarrollar usando Symfony en Windows

Cómo hacer para...
Personalmente, es algo que preferiría evitar pero... si no queda opción, hay que hacerlo funcionar :) Algunos problemas que vamos a tener que resolver para tener un entorno de desarrollo medianamente cómodo son: Contar con PHPContar con composerContar con gitContar con algún IDE Todas estas cosas en Linux son prácticamente triviales (Especialmente si usás Ubuntu o algún derivado) pero en Windows son un poquito más difíciles de conseguir. Alternativamente podés usar un entorno virtualizado, pero si la única opción es un entorno local en Windows, acá van las instrucciones: Instalando PHP en Windows Instalar PHP en Windows no es una tarea extremadamente sencilla... para empezar debes descargar el ejecutable adecuado para tu S.O. (Según sea 32 o 64 bits). Eso lo podés hacer desde acá. El detalle es que, para…
Leer más
Cómo trabajar con grandes archivos JSON usando PHP

Cómo trabajar con grandes archivos JSON usando PHP

Cómo hacer para...
Recorrer un archivo json es algo sencillo, ¿cierto? Pues parece que cuando el tamaño del archivo es grande las cosas ya no son tan simples... Lo que se haría típicamente sería algo similar a: <?php $json = json_decode( file_get_contents( $argv[1] ), true ); print_r( $json ); El problema aquí es que se requiere primero leer todo el archivo para, recién entonces empezar a procesar... Tomemos un ejemplo como el árbol de categorías de MercadoLibre Brasil. Este archivo pesa 229 MB (Una vez descomprimido). 229 MB de puro json... es bastante, sí, pero... ¿es mucho? La respuesta en definitiva depende la configuración que tengas en tu php.ini. A efectos de este análisis hice un cambio al mío de modo que quede así: ; Maximum amount of memory a script may consume (128MB)…
Leer más
Cómo prevenir la subida duplicada

Cómo prevenir la subida duplicada

Cómo hacer para...
Ultimamente vengo trabajando bastante con procesamiento de planillas Excel usando PHP. Por lo general, el workflow del usuario es algo así como: Trabajar con algún otro sistema (HomeBanking, Plataforma de trading, etc...)Descargar información en formato ExcelImportar planilla descargada al sistema que yo desarrolléTrabajar la información dentro del sistema Uno de los errores comunes cuando una persona carga información a un sistema es el de la carga duplicada. Este problema se agrava cuando los duplicados no siempre son errores . Esta condición hace que no sea simple detectar y prevenir la importación duplicada. El escenario sería algo como tomar el workflow original y modificarlo ligeramente: Trabajar con algún otro sistema (HomeBanking, Plataforma de trading, etc...)Descargar información en formato ExcelImportar planilla descargada al sistema que yo desarrolléSalir por un caféOlvidar qué fue lo…
Leer más
Cómo mostrar un array de PHP en una tabla HTML

Cómo mostrar un array de PHP en una tabla HTML

Cómo hacer para...
Los arreglos (o arrays) en PHP son, por lejos, la estructura de datos más utilizada. A diferencia de otros lenguajes, los de PHP son altamente flexibles (no tienen una longitud predeterminada, pueden albergar datos de diferente tipo, etc...). Una necesidad bastante común cuando se trabaja en desarrollo de aplicaciones web es la visualización del contenido de un arreglo en forma de tabla HTML. El ejemplo más claro es cuando el arreglo contiene los resultados de una consulta a una base de datos. Existen varios modos de lograr esta visualización. A continuación verás algunos de ellos, asumamos que todos los ejemplos comienzan con la definición del arreglo: <?php $a = [ [ 'Nombre' => 'Mauro', 'Apellido' => 'Chojrin', 'Correo' => 'mauro.chojrin@leewayweb.com', ], [ 'Nombre' => 'Alberto', 'Apellido' => 'Loffatti', 'Correo' =>…
Leer más