Переменные класса PHP с константами - PullRequest
1 голос
/ 14 октября 2010

Я получаю ошибку разбора в строках с константой (DEPLOYMENT).Почему это теперь разрешено, или я что-то упустил.

Ошибка разбора: ошибка разбора, ожидание `')' 'в

class UploadComponent extends Object {

    private $config = array(
        'accessKey' => 'XXXX',
        'secretKey' => 'XXXX',

        'images' => array(
            'bucket' => DEPLOYMENT.'-files/images',
            'dns' => false
        ),

        'files' => array(
            'bucket' => DEPLOYMENT.'-files/files',
            'dns' => false
        ),

        'assets' => array(
            'bucket' => DEPLOYMENT.'-files/assets',
            'dns' => false
        )
    );
    ....
}

Ответы [ 2 ]

7 голосов
/ 14 октября 2010

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

class UploadComponent extends Object {

    private $config;

    function __construct() {
        $this->config = array(
            'accessKey' => 'XXXX',
            'secretKey' => 'XXXX',

            'images' => array(
                'bucket' => DEPLOYMENT.'-files/images',
                'dns' => false
            ),

            'files' => array(
                'bucket' => DEPLOYMENT.'-files/files',
                'dns' => false
            ),

            'assets' => array(
                'bucket' => DEPLOYMENT.'-files/assets',
                'dns' => false
            )
        );
    }
}
5 голосов
/ 14 октября 2010

Причина в том, что «константы» могут быть определены динамически. Поэтому их содержимое известно только во время выполнения, а не во время компиляции.

...