неожиданный T_VARIABLE, ожидающий T_FUNCTION

Я ожидаю, что это будет основной синтаксической ошибкой, которую я забыл, но я не могу понять это.

В 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; ?> 

Некоторое время я боролся с этим, и просто задавался вопросом, может ли кто-нибудь еще где-нибудь обнаружить, что я ошибся.

Related of "неожиданный T_VARIABLE, ожидающий T_FUNCTION"

Вы не можете

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

вне класса строительства. Вы должны поместить эту строку внутри функции или конструктора, но вы не можете разместить ее там, где у вас есть.

Вы не можете использовать вызовы функций в построении класса, вы должны инициализировать это значение в функции конструктора.

Из руководства 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; ?> 

В зависимости от ваших потребностей protected или private может быть лучшим выбором для $connection . Это защищает вас от случайного закрытия или возиться с соединением.

Используйте модификатор доступа до определения члена:

  private $connection; 

Поскольку вы не можете использовать вызов функции в определении члена в PHP, сделайте это в конструкторе:

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

публиковать, защищать или закрывать до подключения $.