Cómo enviar emails con PHP

Cómo enviar emails con PHP

Cómo hacer para..., Uncategorized
Es muy común la necesidad de emails desde PHP, tanto si se trata de un script de CLI (como puede ser un cronjob) o de una aplicación web. Existen varias opciones a la hora de conseguirlo: La más simple es el uso de la función mail. Es una función de bastante bajo nivel (es decir, algo tosca), pero está disponible en casi cualquier instalación de php. Esta opción está bien para escenarios de envíos de mail simples, pero para usos más avanzados (como enviar adjuntos, HTML o similares), es conveniente utilizar alguna otra opción algo más robusta. Algunas alternativas interesantes son: PHPMailer SwiftMailer ZendMail Cualquiera de estas alternativas resultará más adecuada que el uso de la simple función mail en contextos en los que la performance es una preocupación (Por ejemplo, cuando…
Read More
Cómo hacer que un botón de HTML ejecute un método de un objeto php

Cómo hacer que un botón de HTML ejecute un método de un objeto php

Cómo hacer para..., Uncategorized
Un alumno del curso de PHP Orientado a Objetos me hizo esta pregunta: Necesito hacer que un botón o link de mi HTML ejecute un méthodo de un objeto php. Intenté lo siguiente pero sin éxito: <a href="<?php $objeto->Método() ?>"> Reservar </a> La pregunta encerraba una confusión respecto del modelo de ejecución de PHP: Lo que está en HTML es código que ejecuta del lado del cliente, mientras que php ejecuta del lado del servidor.   Es simple de ver esto si hacés lo siguiente: cargá la página que muestra ese botón (a través de un navegador) y fijate el código fuente (Ctrl+U o botón derecho "Ver código fuente"). Lo que vas a ver es algo como: <a href="XXX"> Reservar </a> Lo que está en rojo  es la salida del método…
Read More
Cómo se usan las funciones anónimas en PHP

Cómo se usan las funciones anónimas en PHP

Cómo hacer para..., Uncategorized
Las funciones anónimas son, como te habrás imaginado, funciones que no tienen un nombre. Esto puede sonar bastante raro, siendo que seguramente cuando aprendiste qué es y cómo se define una función en PHP te dijeron que era algo con la pinta: function f( $param1, $param2 ) { // Algo de código } Pues te mintieron. Bueno, no, en realidad no te mintieron pero te dieron una versión parcial de la verdad. Lo que quiero decir es que generalmente las cosas son así como las conoces, pero existen otras posibilidades. Te presento la función anónima: $f = function( $param1, $param2 ) { return $param1 + $param2; } En este ejemplo estoy asignando a la variable $f la función que estoy definiendo (¡No el resultado de su evaluación! No te confundas). Y…
Read More
Cómo se usan los callbacks en PHP

Cómo se usan los callbacks en PHP

Cómo hacer para..., Uncategorized
[caption id="attachment_651" align="aligncenter" width="640"] Hand holding phone coming out from laptop. Contact us flat illustration. Eps8[/caption] Este es uno de mis temas preferidos cuando a PHP se refiere. Debo confesar que lo descubrí bastante tarde, pero fue prácticamente amor a primera vista. Veamos un ejemplo: Si tengo un array con números ( [ 1, 2, 3, 4, 5 ] ) y quiero obtener sólo los números pares, la forma normal de hacerlo sería algo como: $pares = []; foreach ( $numeros as $numero ) {    if ( $numero % 2 == 0 ) {        $pares[] = $numero;    } } Levantemos un poco el nivel de abstracción: function esPar( $numero ) { return $numero % 2 == 0; } $pares = []; foreach ( $numeros as $numero…
Read More
Cómo interactuar con Excel desde PHP

Cómo interactuar con Excel desde PHP

Cómo hacer para..., Uncategorized
Un problema bastante común en el desarrollo de aplicaciones para empresas es la interacción con Excel (Levantar datos, generar planillas, etc...). Un modo sencillo de evadir el problema (y que muchas veces funciona), es exportar la información hacia archivos de texto separados por comas (Los famosos CSV) y luego tratarlos desde PHP con funciones como fgetcsv. Obviamente, esto servirá si se trata de una aplicación que sólo requiere leer datos... ¿Qué pasa si necesitamos generarlos? (O si la estructura de la planilla en cuestión es algo más compleja). Como en la mayoría de los casos, existen diversas opciones de solución. Una particularmente buena es la librería PHPExcel. Aquí un ejemplo de uso (Extracto de un proyecto que desarrollamos para un cliente de Leeway): $objPHPExcel = new PHPExcel(); // Se crea la instancia…
Read More
Cuál es la diferencia entre isset() y empty()

Cuál es la diferencia entre isset() y empty()

Cómo hacer para..., Uncategorized
Empiezo por las formalidades: Ambas son funciones del lenguaje. isset informa si un identificador (el nombre de una variable) está definido o no. empty indica si el valor asociado a un identificador es o no vacío. Veamos algunos ejemplos para aclarar el punto: $a = 0; if (empty($a)) { echo 'empty'.PHP_EOL; } if (isset($a)) { echo 'isset'.PHP_EOL; } Este código dará como salida: empty isset Si se lo ejecuta desde la línea de comandos. Este otro if (isset($a)) { echo 'isset'.PHP_EOL; } $a = 0; if (empty($a)) { echo 'empty'.PHP_EOL; } Mostrará en cambio: empty Ya que la variable $a recién se define después de la primera verificación. Es interesante ver el siguiente ejemplo: if (isset($a)) { echo 'isset'.PHP_EOL; } if (empty($a)) { echo 'empty'.PHP_EOL; } Que también dará como…
Read More

Cómo obtener la cotización del día de una acción con PHP

Cómo hacer para..., Uncategorized
Todo lo que voy a mostrarte acá se basa en la API de Yahoo Finance. Lo primero que tenés que hacer es instalar composer. Segundo, inicializar el proyecto: php composer.phar init Tercero: agregar la dependencia del paquete https://github.com/scheb/yahoo-finance-api: php composer.phar require scheb/yahoo-finance-api Y después podés usar un código como este: #!/usr/bin/php <?php require __DIR__ . '/vendor/autoload.php'; $client = new \Scheb\YahooFinanceApi\ApiClient(); $d = new DateTime($argv[2]); echo "Buscando ".$argv[1]." en fecha: ".$d->format('d/m/y').PHP_EOL; try { $data = $client->getHistoricalData($argv[1], $d, $d); echo $data['query']['results']['quote']['Close'].PHP_EOL; } catch ( Exception $e ) { echo $e->getMessage().PHP_EOL; } En este ejemplo, lo que tenés es una utilidad de línea de comandos que recibe dos parámetros: El ticker (Símbolo del papel en cuestión, por ejemplo TS para la acción de Tenaris) La fecha. La llamada sería así: php get_stock_price.php TS Yesterday y el…
Read More

Cómo obtener información de un sitio que no tiene API usando PHP

Cómo hacer para..., Uncategorized
Me encontré recientemente con este problema desarrollando un sistema para un cliente y creo (¡y espero!) que mi experiencia pueda ayudar a otros. El desafío era el siguiente: nuestro cliente es una empresa que se dedica a la administración de activos financieros. Como parte de su operatoria, requieren la consolidación de información que actualmente está dispersa en una serie de planillas Excel. Parte de esa información se refiere a movimientos de acciones y bonos. Una de las tareas que se realizaba manualmente era el cálculo de cuánto dinero se había movido al realizar una compra o venta de alguno de estos instrumentos (Simple: cantidad de títulos por precio del título al día de la transacción). La complejidad de este cálculo reside en cómo conseguir el precio que tenía el activo al día en…
Read More
Cómo iterar sobre un jSON usando php

Cómo iterar sobre un jSON usando php

Cómo hacer para..., Uncategorized
La forma más sencilla de iterar sobre un jSON usando php es convertirlo a un array. Simplemente se trata de usar la función json_decode pasándole como parámetro el string jSON que querés recorrer y true (para que el resultado sea devuelto como un arreglo asociativo). Una vez que el jSON está transformado a array se puede iterar sobre él como lo harías con cualquier otro array php, usando un foreach o alguna otra estructura. Por ejemplo, si tuvieses en la variable $json el siguiente texto: { "rojo":"#f00", "verde":"#0f0", "azul":"#00f", "cyan":"#0ff", "magenta":"#f0f", "amarillo":"#ff0", "negro":"#000" } Para recorrerlo desde php harías algo como: $array = json_decode( $json ); foreach ( $array as $nombre => $hexa ) { echo $nombre.'='.$hexa; } Y la salida que obtendrías sería: rojo = #f00 verde = #0f0…
Read More