Почему 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
класс, без необходимости каких-либо изменений.