【问题标题】:Expression is not allowed as field default value (on oop)不允许将表达式作为字段默认值(在 oop 上)
【发布时间】:2019-06-22 08:20:18
【问题描述】:

我有一个 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 行 (public $bdd = parent::conn();) 上显示错误“不允许将表达式作为字段默认值”

我的代码有什么问题?

【问题讨论】:

  • 正如它所说,你不能将表达式(parent::conn() 是一个表达式)作为默认属性值。请改用__construct 调用它。
  • ....你试过用谷歌搜索那个错误信息吗?如果有的话,请在您的情况下提供链接,这很有帮助;)

标签: php oop


【解决方案1】:
public $bdd = parent::conn();

您不能在属性声明中从函数中设置属性值

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

class query extends connection
{
    public $bdd;

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

【讨论】:

    猜你喜欢
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2012-09-02
    • 1970-01-01
    • 2014-10-11
    • 2011-06-30
    相关资源
    最近更新 更多