Php 如何将自定义命名空间应用于外部库而不更改其源?

Php 如何将自定义命名空间应用于外部库而不更改其源?,php,namespaces,Php,Namespaces,是否可以使用带有自定义名称空间的外部PHP库,而不更改其源代码 我想使用名称空间前缀为“ext”的所有外部库 例如,我希望能够将的客户端类实例化为new ext\Predis\Client(),而不是new Predis\Client()(从根目录) 注:我正在自动加载所有内部类,如下所示: spl_autoload_register(function($class) { $path = str_replace("\\", "/", $class); $file = __DIR__ .

是否可以使用带有自定义名称空间的外部PHP库,而不更改其源代码

我想使用名称空间前缀为“ext”的所有外部库

例如,我希望能够将的客户端类实例化为new ext\Predis\Client(),而不是new Predis\Client()(从根目录)

注:我正在自动加载所有内部类,如下所示:

spl_autoload_register(function($class)
{
  $path = str_replace("\\", "/", $class);

  $file = __DIR__ . "/" . $path . ".php";

  require_once $file;
});

这是不可能的。名称空间在编译时解析。这也与以下观点相矛盾:

完全限定类名必须具有顶级命名空间名称, 也称为“供应商名称空间”


更好的主意。。。。更改Predis包装器使用的任何名称空间,而不是尝试更改第三方名称空间