不允许将表达式作为字段默认值(根据情况)

时间:2019-01-29 08:53:27

标签: php oop

我有一个connection.php类,这里是使用PDO对象到我的MySQL数据库的连接字符串。

然后,我在query.php页面中调用connection.php类,但是当我尝试从connection.php获取PDO对象时,出现错误“不允许将表达式作为字段默认值”。 (顺便说一句,我的IDE是phpstorm)

这是connection.php

class connection
{
    private $host = "XXX";
    private $db = "XXX";
    private $login = "XXX";
    private $password = "XXX";

        public function conn()
        {
            try
            {
                $bddconn = new PDO('mysql:host='.$this->host.';dbname='.$this->db, $this->login, $this->password);
            }
            catch(PDOException $e)
            {
                echo "Connection failed " . $e->getMessage();
            }
            return $bddconn;
        }
}

这是query.php

class query extends connection
{
    public $bdd = parent::conn();

    public function checkUser($login, $password)
    {
        $query = 'SELECT login, password FROM user WHERE login = ? AND password = ?;';
        $req = $this->bdd->prepare($query);
        return $req->execute(array($login, $password));
    }
}

但是,在这一点上,IDE在query.php第2行(公共$ bdd = parent :: conn();)上显示错误“不允许将表达式作为字段默认值”

我的代码有什么问题?

1 个答案:

答案 0 :(得分:2)

public $bdd = parent::conn();

您无法通过属性声明中的函数设置属性值

您必须在方法中初始化属性值,例如在构造函数中

class query extends connection
{
    public $bdd;

    public function __construct()
    {
        parent::__construct();
        $this->bdd = parent::conn();
    }
}