如何解决不能直接创建A类的对象,而只能通过B类来创建
|class A
{
public function foo()
{
}
}
class B
{
$a = new A;
public function go()
{
}
}
我希望不能直接创建对象,而只能由类B创建。
我该怎么做。
解决方法
你为什么需要那个?
记住-类是对象的事实上的工厂,对象应该执行操作,并且应该通过传递的参数和可用的实例变量来执行操作,这意味着您应该将对象需要的所有内容传递给构造函数,而不必关心事实每个人都可以创建对象。
说真的
,听起来您想扩展一个抽象类。
abstract class A {
protected function foo() {
echo \"Hello world!\";
}
}
class B extends A {
public function go() {
$this->foo();
}
}
$obj = new B;
$obj->foo(); // error - cannot call a protected method directly
$obj->go(); // echo\'s \"Hello world!\"
,如果您确实要执行此操作,请检查工厂设计模式。我认为这将是您所要的。在那里,我们将有一个单独的工厂类来管理对象创建。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。