При создании статического класса для базы данных получаю эту ошибку - PullRequest
0 голосов
/ 16 марта 2011

Вот мой класс

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

Почему эта ошибка возникает?

Ответы [ 4 ]

3 голосов
/ 16 марта 2011

Свойства не могут быть предварительно установлены с информацией времени выполнения.

Цитирование PHP Manual:

Переменные-члены класса называются «свойствами». Вы также можете видеть, что они упоминаются с использованием других терминов, таких как «атрибуты» или «поля», но для целей данной ссылки мы будем использовать «свойства». Они определяются с использованием одного из ключевых слов public, protected или private, за которым следует обычное объявление переменной. Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения , чтобы быть оцененной ,

1 голос
/ 16 марта 2011
<?php

class Databases {
    public static $liveresellerdb;
}
Databases::$liveresellerdb = new Database('1host1','user','pswd','db');

?>

Вот как вы инициализируете статический член ...

0 голосов
/ 16 марта 2011

Вы не можете назначить объект на этапах подготовки класса, только экземпляр класса:

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');
0 голосов
/ 16 марта 2011

Поскольку вы забыли написать ключевое слово static - на самом деле сделать свойство статическим.

Кроме того, вы не можете инициализировать статические свойства с помощью выраженийкак это. Вот обходной путь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...