我希望这是一个我忽略的基本语法错误,但我无法理解。
在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;
?>
我已经挣扎了一段时间,只是想知道是否有其他人可以发现我出错的地方。
答案 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;
?>
根据您的需求,protected
或private
可能是$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)
检查是否已输入带有$符号的变量作为参数