Zend Framework использует этот метод, который делает все приложение безопасным для вывода чувствительного PHP-кода в виде обычного текста, поскольку все находится вне корня документа и с помощью mod_redirect, чтобы узнать, какой модуль/контроллер/действие нужно отправить.
Основной макет проекта выглядит как
application
- controllers
- views
- - scripts
public
- .htaccess
- index.php
library
- Zend
и имеющий ../library
в вашем включают путь давайте вы автозагрузку все классы Zend (i.g. Zend_View) легко из любого места в приложении. Естественно, Zend также поставляется с автозагрузчиками классов для помощников вида и других префиксов пользовательских классов, но это не касается области вопросов.
Поскольку все находится за пределами корня документа (/ public), единственный скрипт, который пользователь мог видеть (в случае, если что-то пошло не так, и пользователи начинают видеть открытый PHP-код) - это вызов бутстрапа приложения и других строк инициализации (ig включают в себя пути и некоторые константы, но вы также можете инициализировать все, включив другой внешний файл ...).
Короче говоря, это хорошая идея и хорошая практика, чтобы положить основные классы вне корня документа. Все, что вам нужно, то, чтобы добавить путь к общей библиотеке в списке путей включают что-то вроде:
set_include_path(implode(PATH_SEPARATOR, array(
LIBRARY_PATH,
get_include_path(),
)));
где library_path является относительным или абсолютным путем к общей библиотеке.
Следует помнить, что чем больше путей вы добавите, тем медленнее будут классы автозагрузки. Хорошая практика состоит в том, чтобы иметь только около 3 путей или меньше. Взгляните на то, как Zend удалось обойти это с помощью своих autoloaders.
Symfony делает что-то подобное. Я не думаю, что это плохая идея. –