为什么 PEAR 这样做:
require_once 'HTML/QuickForm2/Exception.php';
而不是这个?:
require_once dirname(__FILE__) . '/Exception.php';
关于这个问题,我唯一能找到的是:
https://pear.php.net/bugs/bug.php?id=17517
它应该是“与 PEAR 标准和设计指南完全相反的方向”。我的问题是……为什么?
为什么 PEAR 这样做:
require_once 'HTML/QuickForm2/Exception.php';
而不是这个?:
require_once dirname(__FILE__) . '/Exception.php';
关于这个问题,我唯一能找到的是:
https://pear.php.net/bugs/bug.php?id=17517
它应该是“与 PEAR 标准和设计指南完全相反的方向”。我的问题是……为什么?
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
类,无需任何修改。