Почему PEAR не использует абсолютные пути?

Почему PEAR делает это:

require_once 'HTML/QuickForm2/Exception.php'; 

Вместо этого?:

require_once dirname(__FILE__) . '/Exception.php';

Единственное, что я мог найти по этому вопросу, это:

https://pear.php.net/bugs/bug.php?id=17517

Предполагается, что это "полностью противоположное направление стандартов и рекомендаций PEAR". Мой вопрос... почему?

1 ответ

Решение

PEAR сильно зависит от пути включения, что позволяет перезаписывать классы, просто добавляя другой каталог к ​​пути включения.

Пример:

require_once 'Foo/Bar.php';

будет искать Foo/Bar.php в каждом из каталогов, указанных в include_path, Если вы хотите предоставить свой патч Foo/Bar.phpВы можете просто сделать

set_include_path(__DIR__ . '/patches/' . PATH_SEPARATOR . get_include_path());

и создайте файл Foo/Bar.php в patches/ каталог. Используемые вами классы библиотеки теперь будут автоматически использовать ваши пользовательские Foo_Bar класс, без необходимости каких-либо изменений.

Другие вопросы по тегам