Я пытаюсь определить мою функцию PHP __autoload, чтобы она была максимально пуленепробиваемой и гибкой.
Вот структура моего приложения:
/dev (root)
/my_app
/php
/classes
- Class1.php
- Class2.php
- Class3.php
/scripts
myscript.php (the file I have to include the classes in)
Это довольно просто.Моя проблема заключается в следующем: как мне написать свою функцию __autoload, чтобы я мог включить любой класс, который я хочу, независимо от того, насколько глубоко вложенный вызывающий файл находится в структуре каталога.Я знаю, что это как-то связано с функциями __FILE__
, realpath
и dirname
, но я не уверен в том, как правильно комбинировать их для достижения желаемой гибкости.
Вот быстрый тест, который я сделал:
<?php
echo realpath(dirname(__FILE__)) . "/php/classes/Class1.php";
?>
Результат:
/ home / mydirectory / dev.mysite.com / my_app / php / scripts / php / classes / Class1.php
Как видите, результат не соответствует месту расположения класса.Однако, если бы я переместил файл myscript.php в папку / my_app, он распечатался бы правильно.
Предложения по повышению гибкости?