JackShcherbakov
@JackShcherbakov

Почему ошибка при отсутствии необязательного модификатора доступа в классе PHP?

Здравствуйте!

Вот цитата из документации:

Методы класса должны быть определены через модификаторы public, private, или protected. Методы, где определение модификатора отсутствует, определяются как public.


Тогда почему так нельзя:
class A{
	 $attribute = 5; //без модификатора доступа public (который по умолчанию)
}

- выдается следующее предупреждение:

Parse error: syntax error, unexpected '$attribute' (T_VARIABLE), expecting function (T_FUNCTION) in C:\OpenServer\domains\comet\php.php on line 4

В то время как код с явкным указанием модификатора доуступа упешео справляется со своей задачей:
class A{
	 public $attribute = 5; //без модификатора доступа public (который по умолчанию)
}

Мне кажется, что я где-то что-то упустил и не понимаю. Тут же явное противоречие с документацией.

Заранее спасибо!
  • Вопрос задан
  • 108 просмотров
Решения вопроса 2
@D3lphi

Методы класса должны быть определены через модификаторы public, private, или protected. Методы, где определение модификатора отсутствует, определяются как public.

Внимание, вопрос: ниже вы объявляете метод или, все-таки, свойство?
class A{
   public $attribute = 5;
}
Ответ написан
@f_u_s_s
Любопытный кодер
Могу ошибаться, но документация говорит лишь о методах класса, а свойства в них не входят.
Потому, если вы укажете
class A {
function foo(){
// код метода
}
}

То он будет определен как public, а для свойств надо явно указывать, т.е.
class A {
public $foo;

}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Duotek Москва
До 120 000 руб.
Zaymigo Нижний Новгород
До 60 000 руб.
Вебформат Екатеринбург
от 40 000 до 80 000 руб.
21 авг. 2018, в 16:11
1500 руб./за проект
21 авг. 2018, в 15:45
4000 руб./за проект
21 авг. 2018, в 15:42
2500 руб./за проект