PHP-继承时构造函数如何解析数据?

PHP-继承时构造函数如何解析数据?,php,oop,Php,Oop,我有两个类,一个扩展另一个: class Human { const PERKS = 'none'; public function __construct() { echo self::PERKS; } } class King extends Human { const PERKS = 'crown'; } 忽略这个愚蠢的例子。然而,无论我初始化谁,我都会被打印为“无” 构造函数究竟是如何工作的 我怎样才能避开这件事 谢谢。self总是指使

我有两个类,一个扩展另一个:

class Human {
    const PERKS = 'none';
    public function __construct() {
        echo self::PERKS;
    }
}

class King extends Human {
    const PERKS = 'crown';
}
忽略这个愚蠢的例子。然而,无论我初始化谁,我都会被打印为“无”

  • 构造函数究竟是如何工作的
  • 我怎样才能避开这件事

  • 谢谢。

    self
    总是指使用它的确切类。发件人:

    对当前类的静态引用,如self::orclass使用函数所属的类进行解析,如在定义函数的位置

    为了解决这个问题,您可以使用
    静态
    类解析操作符,它在运行时解析,例如

    class Human {
        const PERKS = 'none';
        public function __construct() {
            echo static::PERKS;
        }
    }
    
    class King extends Human {
        const PERKS = 'crown';
    }
    
    new King;
    // crown
    
    new Human;
    // none
    

    请参见

    self
    始终指使用它的确切类。发件人:

    对当前类的静态引用,如self::orclass使用函数所属的类进行解析,如在定义函数的位置

    为了解决这个问题,您可以使用
    静态
    类解析操作符,它在运行时解析,例如

    class Human {
        const PERKS = 'none';
        public function __construct() {
            echo static::PERKS;
        }
    }
    
    class King extends Human {
        const PERKS = 'crown';
    }
    
    new King;
    // crown
    
    new Human;
    // none
    
    请参见

    在那里阅读-在那里阅读-