我正在构建一个与API交互的类。假设API对“foo”对象和“bar”对象有一个“get_something”方法。我希望我的班级公开一个“get_something”方法,但能够区分它是“foo”还是“bar”。
对我来说什么是好的解决方案?我可以创建一个具有多个名称空间的类吗?那会是一个好主意吗?
也许我应该有嵌套类?
答案 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)来确定实例化了哪个类。