Incluir en PHP (include, require, require_once)

↑ Me gusta (4)

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.

El código está en Github de Rimorsoft Regalanos estrellas y está pendiente de los otros post de PHP.

  • Manuel Dautt (CTO)
  • Antonio
  • Edwin Martínez
  • Sr Misterioso

Italo Morales F. Italo Morales F. 3,230.00 XP