Umr001
@Umr001
php

Правильное определение свойств в классах(php)?

Из документации:
Я понял лишь то, что нельзя делать какие-то вычисления непосредственно в самой переменной. Еще видимо нельзя давать свойствам класса значение других переменных. Нельзя проводить конкатенацию строк. Правильно ли я понимаю, что свойствам класса, можно задавать в качестве значения только константы и массивы?
class SimpleClass
{
   // неправильное определение свойств:
   public $var1 = 'hello ' . 'world';
   public $var2 = <<<EOD
hello world
EOD;
   public $var3 = 1+2;
   public $var4 = self::myStaticMethod();
   public $var5 = $myVar;

   // правильное определение свойств:
   public $var6 = myConstant;
   public $var7 = array(true, false);

   // Это разрешено только в PHP 5.3.0 и более поздних версиях.
   public $var8 = <<<'EOD'
hello world
EOD;
}
  • Вопрос задан
  • 209 просмотров
Решения вопроса 3
DevMan
@DevMan
документацию не читай, сразу на тостере вопрос задавай!

Переменные, которые являются членами класса, называются "свойства". Также их называют, используя другие термины, такие как "атрибуты" или "поля", но в рамках этой документации, мы будем называть их свойствами. Они определяются с помощью ключевых слов public, protected, или private, следуя правилам правильного описания переменных. Это описание может содержать инициализацию, но инициализация должна применяться для константных значений - то есть, переменные должны быть вычислены во время компиляции и не должны зависеть от информации программы во время выполнения для их вычисления.
php.net/manual/ru/language.oop5.properties.php

кстати, некоторые из ваших "неправильных" способов вполне себе правильные в актуальных версиях пыха.
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
Зависит от версии PHP.
Первые 3 примера допустимы в PHP 5.6 и выше. php.net/manual/en/migration56.new-features.php

Вызов метода и обращение к другим свойствам - на данный момент непосредственно в коде объявления недопустимы.
Ответ написан
Комментировать
ruFelix
@ruFelix
Предсказание будущего по руке, таро, кофе.
Всё это можно и нужно делать в function __construct(){}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы