可以';无法正确访问父变量


Can't gain proper access to parent variable

从超类访问变量时遇到问题。请参阅以下两个类别:

abstract class StaticEndpoint {
    // API Arguments
    protected $arguments;
    // PDO Object
    protected $PDO;
    public function __construct($args) {
        $this->arguments =  $args;
        try {
                $this->PDO = new PDO('mysql:dbname=dbname;host=127.0.0.1','user', 'pass');
                $this->PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $this->PDO->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        } catch (PDOException $e) {
                echo 'Connection failed: ' . $e->getMessage();
        }
    }
    public abstract function executeAll();
    public abstract function executeList();
    public abstract function executeOne();
}
class Endpoint extends StaticEndpoint {
    public function __construct($args) {
        parent::__construct($args);
    }
    public function executeAll() {
    }
    public function executeList() {
        global $status,$response;
        $stmt = parent::PDO->prepare("SELECT id,name FROM users");
        $stmt->execute();
        $users = $stmt->fetch(PDO::FETCH_ASSOC);
        $status['code'] = 200;
        $status['message'] = "Success";
        $response = $users;
    }
    public function executeOne() {
    }
}

然而,这是行不通的。我得到以下错误Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /path/to/file/Endpoint.php on line 19。第19行为$stmt = parent::PDO->prepare("SELECT id,name FROM users");。我曾尝试将这条线路换出并使用$stmt = $this->PDO->prepare("SELECT id,name FROM users");,但这会导致以下错误Notice: Undefined property: Endpoint::$PDO in /path/to/file/Endpoint.php on line 19。从超类访问变量的正确方法是什么?

$this->PDO是访问父类的公共/受保护字段的正确语法。这些错误消息告诉我,当你出现错误时,你可能没有让Endpoint正确扩展StaticEndpoint。