@cybernoob

Вопрос по статическим классам?

Цитата:
В статических классах не используются конструкторы. Поэтому каждый статический метод сам должен выполнять проверку своих зависимостей, а вызывающий код должен инициализировать все параметры метода, если не используются значения по умолчанию.


1. Если в классе есть статический метод у класса что, не может быть конструктора?
2. О каких зависимостях идёт речь? Можно передать в него всё, что нужно

3.
вызывающий код должен инициализировать все параметры метода

Внутри статического класса нельзя обратиться к свойству класса? Например $a = $this->var;
  • Вопрос задан
  • 100 просмотров
Решения вопроса 2
kimono
@kimono
Web developer
Нет понятия статического класса. Статическими могут быть свойства или методы класса, но не сам класс.
1. У класса может быть конструктор вне зависимости от наличия статических методов.
2. Статический метод не имеет доступа к свойствам класса, поэтому да, туда надо передавать или подтягивать внурти зависимости метода от класса.
3. Из статического метода нельзя обратиться через $this.

PS: другими словами - статический метод, это просто функция, которую можно вызвать без создания объекта этого класса, а статическое свойство - это "статическая переменная".
Ответ написан
AK-VoronM
@AK-VoronM
"Мало-мало программист"
1. Если в классе есть статический метод у класса что, не может быть конструктора?

Наличие статического метода не делает класс статическим. Формально вам ни кто не запрещает реализовывать конструктор в статических классах, но вызваны они никогда не будут.

2. О каких зависимостях идёт речь? Можно передать в него всё, что нужно

Речь идет о внутренних зависимостях. Например подключение к бд, определенное в конструкторе не будет доступно.

Внутри статического класса нельзя обратиться к свойству класса? Например $a = $this->var;

Нельзя. Нет объекта, нет указателя $this. Для доступа к свойствам используется конструкция self:$var. Но, чтобы свойство было доступно - оно должно быть заранее определено прям в классе. Рассматривайте статические классы, как наборы связанных функций.

з.ы. Еще раз, наличие статического метода или свойства в классе, не делает этот класс статическим. Для статических классов никогда не создают инстансы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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