扩展外部类的名称空间

时间:2015-09-09 11:57:49

标签: php namespaces

这个问题是针对所有php naespace gurus的。 方案如下。

./ namespace.inc.php - 使用命名空间

创建b的实例的类
<?php
  // has no namespace definition and is an external class
  class A {}
?>

./ a-wons.class.php - 类b从没有名称空间继承的类

<?php
  namespace foo;
  class B extends A {}
?>

./ b-wns.class.php - 带有扩展名

的命名空间的类
$ php namespace.inc.php
PHP Fatal error:  Class 'foo\A' not found in b-wns.class.php on line 5

在调用'namespace.inc.php'时会遇到由外部类a产生的命名空间错误,没有提供子节点的命名空间定义集 名称空间为默认值

namespace bar;

我知道我可以将类'命名空间设置为例如use bar\A as A;并在namespace.inc.php中使用<a target="_self" ng-href="{{csv_link}}">download csv</a> 之类的别名定义,但是我不想修改类A 因为它可能是外部类而且我想保留我自己的名字我只是问自己是否

可以伪装类'一个命名空间在类b中保留我自己的命名空间,并在namespace.inc.php中调用吗?

1 个答案:

答案 0 :(得分:0)

简单地使用class B extends \A {}作为@u_mulder建议不起作用,但结合名称空间的别名定义它似乎有效。

./ B-wns.class.php

<?php
  namespace foo;
  use \A as A; // needs to be added otherwise 
               // extending external class A will not work
  class B extends A {}
?>

我还不知道是否可能导致其他错误,所以请随意添加任何评论。谢谢。