definir mi propia BASE_PATH vs. set_include_path?

Aprendí de la función set_include_path (). Todo este tiempo, definí una constante en el archivo config.php

define('BASE_PATH', '/var/www/mywebsite/public_html/'); 

Y en todos los archivos php subsiguientes, lo incluiría como tal

 include(BASE_PATH.'header.php'); include(BASE_PATH.'class/cls.data_access_object.php'); 

¿Hay alguna ventaja con el enfoque constante frente al enfoque set_include_path y viceversa? ¿El enfoque constante es obsoleto?

El uso de set_include_path () (o ini_set (‘include_path’, …)) le permite especificar múltiples carpetas que contendrán su código de biblioteca. Por ejemplo, si su aplicación se basa en una variedad de marcos / bibliotecas diferentes, por ejemplo, PEAR y Zend FW, es posible que tenga algo así como:

ini_set (‘include_path’, ‘/ usr / local / php / pear: / usr / local / php / zendfw’);

La desventaja de ese enfoque es que utilizará cualquier archivo que encuentre primero; si tiene un archivo llamado “Mailer.php” en más de una de sus rutas de inclusión, incluirá el primero que encuentre, causando errores sutiles si esa no es su intención. Una buena organización de código generalmente resuelve ese problema. Además, include_path recorre el caché realpath ( http://us2.php.net/realpath ), que a veces necesita ser modificado para obtener un mejor rendimiento según su configuración.

Ambas formas están bien, sin embargo, usar el método define () es más explícito.

FWIW, generalmente uso ini_set (‘include_path’, …).

Creo que la explicación de Micahel es muy clara.

Le recomendé que use “set_include_path” cuando almacene todos sus archivos PHP en una carpeta, por ejemplo: “libs /” (es más fácil). El uso del método define () debe ser más rápido ya que se especifica la ruta del archivo de forma explícita.

Siempre trate de evitar el uso de rutas absolutas a menos que sean realmente necesarias. Me pareció muy útil para especificar sus caminos de esta manera:

 define("BASE_PATH", dirname(__FILE__)); 

De esta forma, evitará tener que actualizar la ruta cada vez que mueva el código.