@cybernoob

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

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


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

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

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

PS: другими словами - статический метод, это просто функция, которую можно вызвать без создания объекта этого класса, а статическое свойство - это "статическая переменная".
Ответ написан
OnYourLips
@OnYourLips
PHP не содержит синтаксиса статических классов.
Однако вы все равно можете их иметь, сделав конструктор приватным (private function __construct() {}), а все методы - статическими.
Внутри статического класса нельзя обратиться к свойству класса.
Ответ написан
AK-VoronM
@AK-VoronM
"Мало-мало программист"
1. Если в классе есть статический метод у класса что, не может быть конструктора?

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

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

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

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

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

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

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

Войти через TM ID
Похожие вопросы
Zaymigo Нижний Новгород
от 20 000 до 100 000 руб.
Devmasterz Тюмень
от 80 000 до 120 000 руб.
19 июля 2018, в 12:41
150000 руб./за проект
19 июля 2018, в 12:40
8000 руб./за проект