Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从非层次结构中的另一个类调用的contruct返回致命错误_Php_Oop - Fatal编程技术网

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());