我知道使用受保护的方法或构造函数非常罕见。我已在SO和其他网站上阅读过关于此的讨论。 我得到的任务相当简单。我必须从我的程序中访问受保护的方法/构造函数。必须将所有属性/方法声明为protected。
我的代码可以简化为此。我基本上被要求用最简单/最简单的方式做到这一点。我能想到的所有解决方案要么使用更先进的技术(“朋友”等),要么使用违反规则的公共功能。
谢谢。
class one
{
protected $attribute1;
}
class two extends one
{
protected $attribute2;
protected $attribute3;
protected function __construct($arg1, $arg2, $arg3)
{
$this->attribute1= $arg1;
$this->attribute2= $arg2;
$this->attribute3= $arg3;
}
}
$object = new two(" 1", "2", "3");
答案 0 :(得分:3)
私有或受保护的构造函数的目的是防止类从类外部实例化。
您可以在返回新对象的类中创建一个公共静态函数,但如果您希望构造函数受到保护或私有,则无法直接创建它。您必须将某些内容声明为公共内容,否则您将无法使用该类。