Php 从非层次结构中的另一个类调用的contruct返回致命错误
为什么我在尝试调用无关构造函数时出错Php 从非层次结构中的另一个类调用的contruct返回致命错误,php,oop,Php,Oop,为什么我在尝试调用无关构造函数时出错 class Employee { function __construct() { echo "<p>Employee construct called!!</p>"; } } class Manager { function __construct() { Employee::__construct(); echo "<p> Ma
class Employee
{
function __construct()
{
echo "<p>Employee construct called!!</p>";
}
}
class Manager
{
function __construct()
{
Employee::__construct();
echo "<p> Manager Construct Called! </p>";
}
}
错误:
Fatal error: Non-static method Employee::__construct() cannot be called statically, assuming $this from incompatible context in..
您需要像往常一样使用其构造函数实例化不相关的类。像这样:-
class Employee
{
function __construct()
{
echo "<p>Employee construct called!!</p>\n";
}
}
class Manager
{
protected $employee;
function __construct()
{
$this->employee = new Employee();
echo "<p>Manager Construct Called! </p>\n";
}
}
new Manager();
class员工
{
函数_u构造()
{
echo“调用的员工构造!!\n”;
}
}
班级经理
{
受保护的$employee;
函数_u构造()
{
$this->employee=新员工();
echo“已调用管理器构造!\n”;
}
}
新经理();
这是一种简单的方法,但更好的做法是将雇员作为依赖项传递给构造函数:-
class Employee
{
function __construct()
{
echo "<p>Employee construct called!!</p>\n";
}
}
class Manager
{
protected $employee;
function __construct(Employee $employee)
{
$this->employee = $employee;
echo "<p>Manager Construct Called! </p>\n";
}
}
$manager = new Manager(new Employee());
class员工
{
函数_u构造()
{
echo“调用的员工构造!!\n”;
}
}
班级经理
{
受保护的$employee;
函数构造(雇员$雇员)
{
$this->employee=$employee;
echo“已调用管理器构造!\n”;
}
}
$manager=新经理(新员工());
但是如果你现在还不明白,不要太担心
.您只需调用该类,构造将自动触发,即
$employee=new employee()
@watcher它不是家长…请尝试newemployee()
。在玩它之前,请先阅读类管理器扩展了Employee{
和父类::u construct();
@abracdaver我试图在一个不相关的类中调用Employee构造,我知道它在一个层次关系中工作,如何调用一个不相关类的构造?
class Employee
{
function __construct()
{
echo "<p>Employee construct called!!</p>\n";
}
}
class Manager
{
protected $employee;
function __construct(Employee $employee)
{
$this->employee = $employee;
echo "<p>Manager Construct Called! </p>\n";
}
}
$manager = new Manager(new Employee());