意想不到的T_VARIABLE,期待T_FUNCTION

2022-08-30 16:57:53

我期望这是我忽略的基本语法错误,但我无法弄清楚。

在PHP脚本中,我不断收到以下错误。

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in [path]/scripts/users/database_connection.php on line 4

当使用 .我将脚本简化为最基本的代码(保留其他代码所需的代码),它仍然调用此错误。include_once()

<?php
    class UserDatabaseConnection
    {
        $connection = sqlite_open("[path]/data/users.sqlite", 0666);
        public function lookupUser($username)
        {
            // rest of my code...
        }
    }

    $udb = new UserDatabaseConnection;
?>

我已经为此挣扎了一段时间,只是想知道是否有其他人能发现我出错的地方。


答案 1

你不能把

$connection = sqlite_open("[path]/data/users.sqlite", 0666);

课外建设。您必须将该行放在函数或构造函数中,但不能将其放置在现在的位置。


答案 2

不能在类构造中使用函数调用,而应在构造函数中初始化该值。

PHP 手册中关于类属性:

此声明可能包括初始化,但此初始化必须是常量值,也就是说,它必须能够在编译时进行计算,并且不得依赖于运行时信息才能进行评估。

工作代码示例:

<?php
    class UserDatabaseConnection
    {
        public $connection;
        public function __construct()
        {
            $this->connection = sqlite_open("[path]/data/users.sqlite", 0666);
        }
        public function lookupUser($username)
        {
            // rest of my code...
            // example usage (procedural way):
            $query = sqlite_exec($this->connection, "SELECT ...", $error);
            // object oriented way:
            $query = $this->connection->queryExec("SELECT ...", $error);
        }
    }

    $udb = new UserDatabaseConnection;
?>

根据您的需要,或者可能是 更好的选择。这可以防止您意外关闭或弄乱连接。protectedprivate$connection


推荐