Задать вопрос
@cybernoob

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

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


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

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

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

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

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

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

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

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

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

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

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

Похожие вопросы
FoodSoul Калининград
от 160 000 до 250 000 ₽
BGStaff Москва
До 300 000 ₽
Greenway Global Новосибирск
от 150 000 до 250 000 ₽