PHP:同一个类中的多个命名空间?

时间:2011-11-03 05:47:15

标签: php oop

我正在构建一个与API交互的类。假设API对“foo”对象和“bar”对象有一个“get_something”方法。我希望我的班级公开一个“get_something”方法,但能够区分它是“foo”还是“bar”。

对我来说什么是好的解决方案?我可以创建一个具有多个名称空间的类吗?那会是一个好主意吗?

也许我应该有嵌套类?

2 个答案:

答案 0 :(得分:1)

你应该将命名空间看作java中的包。一个类只属于1个包

你能做的就是

namespace A_NS;
class A { ...}

namespace B_NS;
class A extends \A_NS\A {};

在这种情况下,A类将存在于命名空间A_NS下,而另一个类A'将存在于B_NS下,它将扩展类\ NS_A \ A;

你可以检查一个对象的类,或者在里面实现一些标识符来区分。

总的来说,我建议您的系统设计将每个类视为仅属于1个命名空间。

答案 1 :(得分:0)

有两种方法可以使用接口(http://us3.php.net/interface),这可以确保实现接口的类具有指定的方法。或者使用抽象方法(http://us3.php.net/abstract)get_something创建父类,这将强制任何子类也具有该类。然后你应该能够做一个get_class($ object)来确定实例化了哪个类。