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




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


     }

     // Иначе просто имя очередного каталога

     elseif($s!=="") $Path.="/$s";

   }

   return ($Path!==""?$Path:"/");

}

// Преобразует URL в абсолютный файловый путь.

// Т. е. если адрес начинается со слэша, то результат рассматривается

// по отношению к каталогу DOCUMENT_ROOT, а если нет — то относительно

// dirname($SCRIPT_NAME). Конечно, функция не безупречна (например, она

// не умеет обрабатывать URL, заданные Alias-директивами Apache, но в

// большинстве случаев это и не нужно.

function Url2Path($name)

{  $curUrl=dirname($GLOBALS["SCRIPT_NAME"]);

   $url=abs_path(trim($name),$curUrl);

   return getenv("DOCUMENT_ROOT").$url;

}

// Превращает все пути в списке $INC в абсолютные, однако делает это

// не каждый раз, а только если массив изменился с момента последнего

// вызова.

function AbsolutizeINC()

{  global $INC;

   static $PrevINC="";   // значение $INC при предыдущем входе

   // Сначала проверяем — изменился ли $INC. Если да, то преобразуем

   // все пути в массиве в относительные, иначе ничего не делаем.

   // Нам это нужно только из соображений повышения производительности

   // функции.

   if($PrevINC!==$INC) {

     // Мы не можем использовать foreach, т. к. нам надо

     // модифицировать массив

     for($i=0; $i<count($INC); $i++) {

       $v=&$INC[$i];

       if($v[0]=="." && (strlen($v)==1 || $v[1]=='\\' || $v[1]=='/'))

         continue;

       $v=abs_path($v);

     }

     // Запоминаем текущее состояние массива

     $PrevINC=$INC;

   }

  }

// Загружает указанную библиотеку функций. Для поиска файла

// просматривает каталоги в массиве $INC.

function Uses($libname)

{  global $INC;

   static $PrevINC="";   // значение $INC при предыдущем входе

   static $LastFound=0;  // для ускорения работы

   // Переводим все пути в $INC в относительные — вдруг вызывающая

   // программа добавила что-нибудь в массив?..




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