Задать вопрос
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 (который по умолчанию)
}

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

Заранее спасибо!
  • Вопрос задан
  • 131 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 2
@D3lphi

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

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

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

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

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

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