Ошибка при назначении публичной собственности - PullRequest
0 голосов
/ 11 ноября 2011
function CharField($len)
{
    return "VARCHAR($len)";
}


class ArticleModel extends Model
{
    public $name = CharField(100); // Error Here
}

Когда я назначаю открытое свойство, подобное этому, с возвращенным значением из функции, оно выдает ошибку:

Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданная '(', ожидаемая ',' или ';' в /var/www/test/db.php

В чем может быть причина?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2011

Вы можете инициализировать свойства только с константами:

http://www.php.net/manual/en/language.oop5.properties.php

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

Так что, действительно, инициализируйте их в своем конструкторе.

1 голос
/ 11 ноября 2011

Инициализируйте значение в вашем конструкторе

0 голосов
/ 11 ноября 2011

Согласно руководству постоянное значение можно назначать только при создании экземпляра свойства класса.

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