我正在尝试使用外部库.因为有一些冲突我正在使用命名空间(php 5.3)
目标不是根本不改变外部库(只是在顶部添加名称空间)
问题出在库内有几种情况不起作用
is_a($obj,'3thpartyclassname') 仅当我在3thpartyclassname前添加命名空间时才有效new \Exception)有没有任何方法可以使这项工作没有修改?
将use\Exception更新为Exception; 解决问题2
我只遇到is_a和is_subclass_of的问题.它们都需要命名空间并忽略当前的命名空间.
Gor*_*don 12
不,你必须做一些修改
namespace My\Own\Namespace; // declare your own namespace
use My\ThirdParty\Component; // import 3rd party namespace
$component = new Component; // create instance of it
var_dump(is_a($component, 'Component')); // FALSE
var_dump($component instanceof Component); // TRUE
Run Code Online (Sandbox Code Playgroud)
该is_a和is_subclass_of方法要求你把在完全合格的类名(包括命名空间).据我所知,从PHP 5.3.5开始,没有办法解决这个问题.使用instanceof应该解决两个基础.
导入本机类,例如Exception也应该有效,例如
namespace My\Own\Namespace;
use \Exception as Exception;
throw new Exception('something broke');
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅PHP手册中有关命名空间的章节.
| 归档时间: |
|
| 查看次数: |
8151 次 |
| 最近记录: |