Как сделать метод который мог бы роботать как и динамический и как статический? Как сделать метод который мог бы роботать как и динамический и как статический?
Если я б вызывал метод статический, то по первому аргументу смог вернуть нужный обьект, но если динамически, то обьект уже готов и я смог бы с ним работать.
Сейчас делаю через __callStatic и __call

21 Авг 2019 в 07:07
186 +1
0
Ответы
1

Для того чтобы создать метод, который можно вызывать как статический, так и динамически, можно воспользоваться магическими методами callStatic() и call().

Пример:

class MyClass {
public static function __callStatic($name, $arguments) {
if ($name == 'myStaticMethod') {
// Обработка статического вызова метода
// Возвращаем нужный объект, например
return new self();
}
}
public function __call($name, $arguments) {
if ($name == 'myDynamicMethod') {
// Обработка динамического вызова метода
// Работаем с уже существующим объектом
echo "Dynamic method called";
}
}
}

Теперь вы можете вызывать методы как статически, так и динамически:

$obj = MyClass::myStaticMethod(); // вызов статического метода
$obj->myDynamicMethod(); // вызов динамического метода

Таким образом, методы myStaticMethod и myDynamicMethod в классе MyClass могут быть вызваны как статически, так и динамически.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир