diferencias entre include, require, include_once y require_once
en general las 4 funciones hacen lo mismo, importar en un documento php, funciones o variables de otros documentos escritos en php o html
esto resulta muy util y practico a la hora de dividir y organizar nuestro codigo
pongo un caso, imaginen una funcion que se ejecuta en 4 ficheros php, para poder utilizar la misma funcion esta tendria que estar escrita en cada uno de los ficheros
¿inconvenientes?
- si queremos modificar la funcion, tenemos que cambiar cada una de los ficheros donde este escrita
- tenemos mas trabajo y necesitamos mas tiempo a la hora de modificar cada uno de los ficheros
- mas dificil de mantener
- mas codigo
- mas espacio ocupado
solucion:
creamos un fichero llamado por ejemplo general.php con las funciones que necesitamos y añadimos un include a cada uno de los ficheros
luego para modificar la funcion solo tenemos que editar el fichero general.php
ejemplo de include:
fichero1.php
-
include 'fichero2.php';//$variable es igual a 10
fichero2.php
-
$variable = 10;
si ejecutamos el fichero1.php, mostrara por pantalla el valor de la variable $variable, 10
la diferencia entre require e include, es que si el fichero no existe:
- include mostrara un warning y continuara con la ejecucion
- require mostrara un fatal error y parara la ejecucion
ejemplo de include_once:
fichero1.php
-
include_once("fichero2.php"); //$variable es igual a 10
-
$variable = 20; //$variable es igual a 20
-
include_once("fichero2.php"); //$variable es igual a 20
fichero2.php
-
$variable = 10
si ejecutamos fichero1.php, mostrara por pantalla 20
¿porque 20 y no 10?
tanto include_once como require_once solo se pueden ejecutar una vez
la segunda vez que se llama a include_once, esta es como si no existiera.
si en vez de utilizar include_once, utilizamos include o require el valor final de $variable seria 10
include se comporta igual que include_once, a la hora de importar el fichero, si este no existe mostrara warning y continuara la ejecucion
lo mismo passa con require y require_once, si el fichero no existe muestra un fatal error y para la ejecucion
algunas anotaciones:
- vigila a la hora de hacer mas de un include con ficheros que contengan funciones
si importas un fichero que ya ha sido incluido antes o que contenga alguna funcion declarada anteriormente, aparacera un Fatal error y la ejecucion terminara, ya que no se puede declarar la misma funcion 2 veces - si quieres importar ficheros con solo variables, no tendras problemas para llamarlo mas de una vez (solo con include y require)
- utiliza require o require_once, para cargar archivos de configuracion, que contengan constantes
- puedes hacer un fichero php que contenga una plantilla html de un mensaje de foro y hacer un include a este fichero dentro de un while o for, ojo con include_once no lo puedes hacer
- si el fichero que quieres incluir esta escrito en php, este debe tener encima del codigo <?php y al final ?>, si es codigo html no hace falta
curiosidades de echo
- Utiliza la comilla simple (') en vez de la comilla doble (") siempre que no vayas a usar variables dentro, la comilla doble hace que el intérprete analice lo que hay dentro de las comillas.
- La forma más rápida de concatenar texto es usando comillas simples.
- Cuando uses echo, separa los strings por comas mejor que con puntos, es más rápido. Esto solo funciona con echo.
- echo es más rápido que print.
Sobre el segundo punto la verdad es que no lo sabia, Alejando Torres hizo un comentario en mi post sobre mis manias a la hora de programar
El tercero tambien me ha sorprendido he hice un ejemplo:
-
$var = 13;
El resultado de este codigo es:
los 13 monos voladores
Via | Sentido Web
mis manias al programar
- " - las comillas dobles las utilizo para PHP
- ' - las comillas simples para javascript
- los IF simples en una sola linea:
$var2 = ($var1==55) ? 10 : 3;
Nota: lo que hace el ejemplo de arriba es si $var1 es igual a 55 la variable $var2 se le asignara el valor 10 en caso contrario 3 - include "prueba.php"; sin los parentesis
- utilizar <?=$valor;?>, pero ya lo estoy intentado evitar y utilizar la forma correcta <?php echo $valor;?>, ya que leei por algun sitio que el <? corresponde al lenguaje xml
- para hacer 3 condiciones lo hago con if, else if, else
- si son mas de 3 condiciones utilizo el switch
- otra mania que me viene del c# y que hago en mis classes, es antes de cerrar el ultimo } es escribir las barras de comentarios //////////, asi me aseguro de que no borro el ultimo }
- evito el maximo poner la arroba delante de las funciones para que no muestre los errores, pero no lo niego a veces la cosa no funciona y nadie mira jeje
y tu que manias tienes a la hora de escribir codigo ? te parecen correctos mis habitos o tendria que cambiarlos ?
funciones interesantes en PHP
- nl2br("esto es una\nprueba");
sustituye los \n por <br/> - substr_count("esto es una prueba", "e");
cuenta el numero de repeticiones de la letra e en una caden el resultado 3 - flush()
si tenemos fors o whiles muy largos y queremos mostrar la info antes de que acabe de ejecutar la aplicacion, con esta funcion mostraremos lo que haya cargado - $tabla = file("fichero.txt");
devuelve el contenido de un fichero en una $tabla, cada espacio sera una fila de la tabla
concatenar strings y variables en php
Editado: 26/06/2007
* "concatenar" para novatos seria juntar
sabia las siguientes maneras para concatenar un string:
- $var1 = "texto$var2";
- $var1 = "texto".$var2;
- $var1 = $var2.$var3;
- $var1 .= $var2;
pero hoy, mirando en el codigo fuente del wordpress encontre esta manera:
$var1 = "texto{$var2}";
la diferencia de las dos es que en las dos primeras NO puedes hacer:
$var1 = "$var2texto"; //la variable $var2texto no existe
en cambio con la segunda si:
var1 = "{$var2}texto";
Vaaaaaale, este sí se ve apetitoso