意外的T_VARIABLE,期待T_FUNCTION

Rya*_*ard 20 php sqlite syntax-error

我期待这是一个我忽略的基本语法错误,但我无法弄清楚.

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

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in [path]/scripts/users/database_connection.php on line 4
Run Code Online (Sandbox Code Playgroud)

当我使用a调用连接到数据库的脚本时会发生这种情况include_once().我将我的脚本删除到最基本的代码(留下其他代码所需的代码),它仍然在调用此错误.

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

    $udb = new UserDatabaseConnection;
?>
Run Code Online (Sandbox Code Playgroud)

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

Sab*_*lik 23

你不能放

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

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


Lek*_*eyn 19

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

从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;
?>
Run Code Online (Sandbox Code Playgroud)

根据您的需要,protected或者private可能是更好的选择$connection.这可以保护您免于意外关闭或弄乱连接.


Sti*_*egt 6

在 $connect 之前放置 public、protected 或 private。


dur*_*uri 5

在成员定义之前使用访问修饰符:

    private $connection;
Run Code Online (Sandbox Code Playgroud)

由于您不能在PHP的成员定义中使用函数调用,请在构造函数中执行:

 public function __construct() {
      $this->connection = sqlite_open("[path]/data/users.sqlite", 0666);
 }
Run Code Online (Sandbox Code Playgroud)