САМОУЧИТЕЛЬ PHP 4



         

Библиотекарь - часть 4


   AbsolutizeINC();

   // Теперь просматриваем пути, начиная с того, по которому была

   // найдена какая-нибудь предыдущая загруженная библиотека. Скорее

   // всего, там окажется загружаемый сейчас модуль. Если нет —

   // что же, просмотрим весь список...

   $l=$LastFound;

   do {

     // В очередном каталоге есть файл модуля?..

     $dir=$INC[$LastFound];

     if(@is_file($file="$dir/$libname.".LibExt)) {

       // Сменить каталог на тот, в котором расположен модуль

       $cwd=getcwd();

       chdir(dirname($file));

       // Делаем доступными для модуля все глобальные переменные

       foreach($GLOBALS as $k=>$v) global $$k;

       // Включаем файл

       $ret=include_once($file);

       // Пока не вернулись в предыдущий каталог, перевести

       // добавленные (возможно?) пути в $INC в абсолютные

       AbsolutizeINC();

       // Вернуться

       chdir($cwd);

       return $ret;

     }

     $LastFound=($LastFound+1)%count($INC);

   } while($LastFound!=$l);

   // Ничего не вышло — "умираем"...

   die("Couldn't find library \"$libname\" at ".join(", ",$INC)."!");

}

// Корректируем некоторые переменные окружения, которые могут иметь

// неверные значение, если PHP установлен не как модуль Apache

@putenv("SCRIPT_NAME=".

  $GLOBALS["HTTP_ENV_VARS"]["SCRIPT_NAME"]=

  $GLOBALS["SCRIPT_NAME"]=

  ereg_Replace("\\?.*","",getenv("REQUEST_URI"))

);

@putenv("SCRIPT_FILENAME".

  $GLOBALS["HTTP_ENV_VARS"]["SCRIPT_FILENAME"]=

  $GLOBALS["SCRIPT_FILENAME"]=

  Url2Path(getenv("SCRIPT_NAME"))

);

// На всякий случай включаем максимальный контроль ошибок

Error_reporting(1+2+4+8);

// ВНИМАНИЕ! После следующего закрывающего тэга

// не должно быть НИКАКИХ ПРОБЕЛОВ! В противном случае

// сценарий, подключающий библиотекаря, будет выводить в самом

// начале своей работы этот пробел, что недопустимо при




Содержание  Назад  Вперед