Re: Re: Trouble with include/require

From: Date: Fri, 16 Jul 2004 16:46:26 +0000
Subject: Re: Re: Trouble with include/require
References: 1 2 3 4  Groups: php.general 
Request: Send a blank email to php-general+get-190730@lists.php.net to get a copy of this message
That will try and find a file in these locations in order: /var/www/html/projects/include/db.inc ./db.inc /php/includes/db.inc And will use the first one found. I would not suggest using ini_set() inside you're scripts to adjust your paths. Curt
Hey Curt, why do you suggest we don't use ini_set to adjust paths? I'm using it as part of my library autoloader - it may not be as efficient as changing the path directly but it seems to work well. <?php /** * Used to load all class definitions. It temporarily adds directories * listed in $classDirs to the include path and tries to load the class * definition from the new temporary path. Path resets to original * after failure / success. * * @param string The name of the class that you want to instanciate.
 *                 This should use PEAR-style class names, e.g.
 *                 Directory_Subdir_File
* @return object|void */ function __autoload($class) { if (empty($class) || strpos($class, '://')) {
    // Zend engine can't throw exceptions in __autoload()
    trigger_error('Cannot get class file', E_USER_WARNING);
    return;
} if (!defined('PATH_SEPARATOR')) {
    if (strstr(PHP_OS, 'WIN')) {
      define('PATH_SEPARATOR', ';');
    } else {
      define('PATH_SEPARATOR', ':');
    }
} static $origPath = null; if (is_null($origPath)) {
    $origPath = ini_get('include_path');
} static $newPath = null; if (is_null($newPath)) {
    $cur       = dirname(__FILE__ . DIRECTORY_SEPARATOR);
    $classDirs = array($cur);
    $aryPath   = explode(PATH_SEPARATOR, $origPath);
    $aryPath   = array_merge($aryPath, $classDirs);
    $newPath   = implode(PATH_SEPARATOR, $aryPath);
} // Do PEAR-like file inclusion $class = str_replace('_', DIRECTORY_SEPARATOR, $class); ini_set('include_path', $newPath); include_once ($class . ".php"); if (!class_exists($class)) {
    trigger_error("No class definition for $class found in library",
                  E_USER_ERROR);
} ini_set('include_path', $origPath); } ?>

« previous php.general (#190730) next »