Как сделать метод который мог бы роботать как и динамический и как статический? Как сделать метод который мог бы роботать как и динамический и как статический? Если я б вызывал метод статический, то по первому аргументу смог вернуть нужный обьект, но если динамически, то обьект уже готов и я смог бы с ним работать. Сейчас делаю через __callStatic и __call
Для того чтобы создать метод, который можно вызывать как статический, так и динамически, можно воспользоваться магическими методами 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 могут быть вызваны как статически, так и динамически.
Для того чтобы создать метод, который можно вызывать как статический, так и динамически, можно воспользоваться магическими методами 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 могут быть вызваны как статически, так и динамически.