Rimorsoft Online
Blog Foro

PHP para principiantes


Me alegra que te haya interesado aprender PHP y comiences el camino hacia tu carrera como programador web. Aquí hablaremos algunos conceptos sobre su sintaxis, empecemos por cómo incluir archivos en PHP y los famosos closures.

La idea es que aprendas a crear aplicaciones o sistemas web pequeños y de gran escala y para ello necesitas inicialmente conocer la sintaxis del lenguaje.

Incluir en PHP (include, require, require_once)

Yo solo enseño PHP, es un lenguaje que me ha dado de comer a mi y a los mios, espero le tengas mucho cariño como yo y formalices tu relación con este super lenguaje; de hecho quiero que tu próxima aplicación sea hecha en PHP. Saber PHP es aprender al mismo tiempo Laravel, no olvides este dato. ## Include

Esta sentencia la usamos para reutilizar un bloque de código, no sería muy provechoso seguir escribiendo el mismo código una y otra vez, hay programadores que les encanta tener miles de líneas de código "porque es cool", pero aprendamos sobre include y empecemos a reutilizar nuestro trabajo para un mayor rendimiento y productividad. ¡Empecemos con código!.

Archivo greet.php

<?php

function greet($name, $message) {
    return "{$name}, {$message}!";
}

Aquí tenemos una función usada para "saludar a alguien", algo como esto con un poco más de complejidad serviría para saludar y dar la bienvenida a nuestros usuarios, cómo el bienvenido, nombre de usuario que sale en rimorsoft.com. Usemos este ejemplo para conocer la sentencia include. Recuerda, reusar es la clave.

Usemos para el ejemplo los archivos index.php y greet.php. La idea es aislar a la función greet de saludar y usarla desde cualquier archivo, en este caso desde index.php

Archivo index.php

<?php

include 'greet.php';

echo greet('Italo Morales', 'Buenas tardes');

Entonces tenemos un archivo principal llamado index.php junto a otro archivo llamado greet.php, con esto tenemos una idea de cuando y cómo usar la sentencia include. Básicamente nos ahorramos algunas líneas al momento de saludar.

Otra manera de decirlo sería, usamos include si creemos que es buena idea copiar y pegar algún código.

Cómo has visto, include está seguida por la ruta del archivo que queremos incluir. Esta ruta es relativa, lo que quiere decir es que comienza desde el archivo donde se está usando a include. Diferentes ejemplos para su comprensión:

  • include 'great.php';
  • include 'folder/great.php';
  • include 'folder/folder/great.php';
  • include '../folder/great.php';

...y así, rutas relativas.

Require

Cuando intentamos incluir un archivo usando include y este archivo no existe, PHP arrojará una advertencia y seguirá el ejecutando el código, sin embargo, si esto no debe ser así. Si necesitamos de vida o muerte dicho archivo en el sistema, podemos usar require. Que al final es lo mismo pero si el archivo no existe envia un error fatal y detiene el sistema. De hecho el mensaje es Fatal error: require(): Failed opening required 'greet.php'.

Usemos la misma base anterior.

Archivo great.php

<?php

function greet($name, $message) {
    return "{$name}, {$message}!";
}

Archivo index.php

<?php

require 'greet.php';

echo greet('Italo Morales', 'Buenas tardes');

Require Once

A veces por descuido o por falta de conocimientos incluimos dos o mas veces un archivo, pero tranquilo, esto podemos evitarlo usando require_once, veamos los ejemplos:

Esto dará un error: (error intencional)

<?php

require 'greet.php';
require 'greet.php';

echo greet('Italo Morales', 'Buenas tardes');

Aquí es evidente que lo hemos repetido la línea, pero a veces no lo percibimos y si hacemos esto tendríamos un Fatal error: Cannot redeclare greet(). Esto es básicamente definir dos funciones con el mismo nombre, el sistema se confunde, colisiona y salta el error.

¿Solución?

<?php

require_once 'greet.php';
require_once 'greet.php';

echo greet('Italo Morales', 'Buenas tardes');

Así entonces tenemos un buen resultado, solo usando la palabra require_once.

Funciona porque require_once solo incluirá un archivo great.php una sola vez. La segunda vez que se ejecuta, lo detecta he ignora y así no tendríamos confusión ni error.

¿Cuál usar? depende de la necesidad, para vistas usamos include, para clases require y para trabajo en equipo y módulos complejos require_once... No siempre es así, solo aprende esto y poco a poco la experiencia te ayudará con estás decisiones.

Vamos poco a poco hasta conocer estas cosas de PHP... Saber cada sentencia de uso diario te acerca mas a un plano profesional.

Funciones Anónimas - Closures PHP

Las funciones anónimas son funciones especiales ya que no tienen nombres. PHP dice que también son conocidas como cierres (closures), y aunque redunde hay que decir que permiten la creación de funciones que no tienen un nombre especificado. Esto, para que se entienda bien, podemos imaginar a una variable con necesidad de lógica. Como no tiene nombre, esta función anonima se le asigna a una variable. Esto sería una función anonima o closures

<?php

function($name){
    return "Hola, {$name}";
};

Al ver esto nace una pregunta lógica. ¿Cómo llamamos a una función sin nombre?, y la respuesta es sencilla, una función sin nombre podemos asignarla a una variable, es un valor normal y verás que es muy sencillo.

<?php

$greet = function($name){
    return "Hola, {$name}";
};

    echo $greet('Italo Morales');

Puedes notar que la función anónima es el valor de una variable llamada $greet que significa saludar. La variable debe terminar con punto y coma, por eso ves al final el signo llaves junto al punto y coma };, simplemente porque esto forma parte de la sintaxis de asignación.

Nota ademas que para hacer uso de la variable, no debemos olvidar los paréntesis. Ejemplo $greet(), variable con paréntesis.

Ya ves, simplemente añadimos paréntesis a nuestra variable y el código es ejecutado con éxito.

Funciones como parámetros de funciones

Esto quiere decir, pasar pequeñas secciones o bloqués de código a funciones. No parámetro comunes, sino mas bien lógica.

Además decimos el tipo de parámetro usando la palabra Closure delante del parámetro función, esto es para asegurarnos de que unicamente es permitido pasar funciones anónimas y no variable común. Esto es un objeto en PHP.

<?php

function greet(Closure $gender, $name) {
    return $gender($name);
}

$female = function ($name) {
    return "Hola señora, {$name}";
};

$male = function ($name) {
    return "Hola señor, {$name}";
};

echo greet($female, 'Luisa Fantone');
echo '<br>';
echo greet($male, 'Italo Morales');

Explicación:

  • Primero tenemos una función llamada greet(), pero en realidad no está saludando a nadie. Sin embargo su utilidad es recibir una función anónima y ahí está la magía... Porque desde ahí llamamos a la Closure y le pasamos el nombre para que salude a quien deseamos saludar.
  • Mas abajo tenemos dos funciones anónimas asignadas a las variables $female y $male. Ambas reciben el parámetro $name y tienen la lógica para saludar correctamente.
  • Por último tenemos el uso y llamado a la función greet().

Y con esto culminamos lo que para muchos es díficil de entender, las funciones anónimas o closure.

Libro de TDD - Lo que debes saber
Compra el libro
TDD lo que debes saber

Newsletter

Únete a más de 4.000+ personas y no te pierdas nunca más de las nuevas clases, tips, tutoriales y más cada semana.

    No enviamos spam. Puedes darte de baja en cualquier momento.