Sie sind auf Seite 1von 4

require() vs include() Ambas funciones insertan el cdigo contenido en un archivo dentro de otro.

La diferencia entre utilizar require() o include() puede deducirse de su nombre: la funcin require() establece que el cdigo del archivo invocado es requerido, es decir, es obligatorio para el funcionamiento del programa. Por ello, si el archivo especificado en la funcin require() no se encuentra saltar un error "PHP Fatal error" y el programa PHP se detendr. Por el contrario, si el archivo invocado por la funcin include() no se encuentra, saltar un error tipo "Warning" y el programa seguir ejecutndose (aunque como consecuencia de no incluirse el cdigo puede que no funcione correctamente, o s, depende de la situacin). Debido a estas diferencias entre include() y require() es ms comn utilizar la funcin require, pues lo ms normal es que si llamamos al cdigo de otro archivo es porque lo necesitamos. No obstante, se puede reservar la funcin require() para invocar archivos que contengan el cdigo que maneja la lgica de la aplicacin escrita en PHP, es decir, utilizar require para invocar cdigo que si no es incluido el programa puede llegar a errores muy graves, por lo que si no est es mejor parar la ejecucin del programa. Se puede utilizar include() para la llamada a archivos cuyo cdigo no afecta a otras partes de la aplicacin y que, por tanto, si no estn no se afecta al resto del programa. Por ejemplo, si tenemos un script PHP para mostrar artculos sera mejor utilizar require(), y no include(), para cargar el cdigo que realiza la consulta a la base de datos y recibe los datos del artculo a mostrar, mientras que podemos utilizar include() para invocar el archivo que contiene cdigo html como puede ser el pie de la pgina web u otra parte de la plantilla. En otras palabras, si no podemos cargar el cdigo que maneja la informacin del artculo a mostrar nuestro programa para mostrar artculos no tendra sentido, por ello sera mejor utilizar la funcin require() y que si no se encuentra el archivo el programa se pare; por su parte, si no se encuentra el cdigo html correspondiente al pie, la informacin importante de la pgina, que es el artculo, no se ve afectada y podemos optar por utilizar include().

require_once()/include_once() vs require()/include() Las versiones require_once() e include_once() funcionan de la misma forma descrita anteriormente para sus respectivos salvo que, al utilizar la versin _once se impide la carga de un mismo archivo ms de una vez. Si incluimos el mismo cdigo ms de una vez corremos el riesgo de redeclaraciones de variables, funciones o clases. Puedes pensar que, entonces, es mejor siempre utilizar require_once() o include_once() en lugar de require() o include(). Si embargo, has de saber que las versiones _once() son ms pesadas y consumen ms recursos y por ello hay que utilizarlas slo cundo sea necesario.

require_once() y require() Su funcin es la misma, solo que la unica diferencia es su metodo de uso. Require_once() deberia de usarse en aquellos scripts en los que se necesita un archivo constantemente.

Cmo usar los Namespaces Una de las nuevas incorporaciones y de los cambios ms significativos de PHP 5.3 son los Namespaces, nada nuevo para todos aquellos que hayan programado C# o Java, pero un cambio que mejorar la estructura de nuestros programas y que empezaremos a ver sobre todo en todos los grandes Frameworks (las nuevas versiones de Zend Framework, CakePHP, Doctrine y Symfony entre otros requerirn PHP 5.3). Porqu necesitamos los Namespaces? Segn va aumentando el nmero de libreras escritas en PHP se hace mayor el riesgo de colisin de nombres de clases y funciones entre libreras. En un principio sera totalmente comprensible que diferentes programas implementen por ejemplo una clase llamada Photoque maneje las imgenes en el proyecto, pero eso hasta la llegada de PHP 5.3 estaba mal visto porque haba que intentar evitar tener problemas de compatibilidad con otros proyectos. Por eso mismo era ms probable que esa clase se llamara por ejemploMi_Proyecto_Photo. Ejemplos de este tipo se pueden ver por ejemplo en WordPress dnde todas las clases empiezan por WP_ o en el framework Zend, donde la poltica de nombres (muy descriptiva) hace que se le asignen nombres a veces demasiado largos a las funciones: Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive . Los Namespaces resuelven este problema porque las constantes, clases y funciones pueden quedar definidas dentro de su Namespace, sin entrar en conflicto con otros homnimos que estn dentro de otros namespaces. Cmo se definen los Namespaces? Por defecto, y si no se indica lo contrario, todas las funciones, clases y constantes quedarn definidas en el entorno global, como ha sido siempre en PHP. Ser lo que pase con todas las libreras que carguemos y que no estn realizadas especficamente para PHP 5.3 o superior, y que por lo tanto no tendrn definido su namespace. Pero si vamos a correr nuestro programa sobre PHP 5.3 o superior debemos empezar a definir los namespaces en nuestros programas y para ello simplemente hay que hacerlo utilizando la palabra clave namespace seguido del nombre al inicio de nuestro script; siempre debe ser la primera instruccin del fichero sin tener ningn otro cdigo delante, ni espacios, ni HTML

1. // Definicin del namespace para el cdigo de este script 2. namespace MiProyecto; 3. // A partir de aqu escribe tu cdigo y domina el mundo Lo lgico y lo recomendado es que utilices un fichero por cada namespace que definas, pero si por alguna extraa razn quisieras hacerlo varias veces en el mismo podras de la siguiente manera: 1. // Definicin del namespace para el proyecto 1 2. namespace MiProyecto1; 3. // Cdigo del Proyecto1 4. // Definicin del namespace para el proyecto 2 5. namespace MiProyecto2; 6. // Cdigo del Proyecto2 7. // Definicin del namespace para el proyecto 3 con la sintaxis alternativa 8. namespace MiProyecto3 { 9. // Cdigo del Proyecto3 10. }

Das könnte Ihnen auch gefallen