意外的T_VARIABLE,期待T_FUNCTION

时间:2011-06-26 20:50:37

标签: 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

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

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

    $udb = new UserDatabaseConnection;
?>

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

5 个答案:

答案 0 :(得分:21)

你不能把

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

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

答案 1 :(得分:16)

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

来自PHP Manual on class properties

  

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

工作代码示例:

<?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的更好选择。这可以保护您免于意外关闭或弄乱连接。

答案 2 :(得分:5)

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

    private $connection;

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

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

答案 3 :(得分:4)

在$ connection之前设置public,protected或private。

答案 4 :(得分:-1)

检查是否已输入带有$符号的变量作为参数