Вот мой класс
class Databases { public $liveresellerdb = new Database('1host1','user','pswd','db'); }
ошибка, которую я получаю, – это
Parse error: syntax error, unexpected T_NEW in /home/abhijitnair/sandbox/newreseller/Databases.php on line 33
почему эта ошибка наступает?
Свойства не могут быть заданы с информацией о времени выполнения.
Указание руководства PHP:
Переменные элемента класса называются «свойствами». Вы также можете увидеть, как они ссылаются на другие термины, такие как «атрибуты» или «поля», но для целей этой ссылки мы будем использовать «свойства». Они определяются с использованием одного из ключевых слов public, protected или private, за которым следует объявление нормальной переменной. Это объявление может включать инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.
<?php class Databases { public static $liveresellerdb; } Databases::$liveresellerdb = new Database('1host1','user','pswd','db'); ?>
Вот как вы инициализируете статический член …
Потому что вы забыли написать static
ключевое слово, чтобы сделать свойство static.
Кроме того, вы не можете инициализировать статические свойства с помощью таких выражений. Вот обходной путь .
вы не можете назначить объект во время стадий подготовки класса, только для представления класса:
class Databases { public $liveresellerdb; public function __construct() { $this->liveresellerdb = new Database('1host1','user','pswd','db'); } }
что-либо внутри конструктора может быть общим кодом PHP, вне функции, и вместо этого тело класса имеет определенные законы.
если вам требуется, чтобы база данных была статичной, вам необходимо установить / получить доступ к ней по-разному.
class Databases { public static $liveresellerdb; } Databases::liversellerdb = new Database('1host1','user','pswd','db');