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

21 Авг 2019 в 07:07
273 +2
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 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир