Можно ли использовать $className::$methodName()?

237
28 июля 2021, 02:20

мне приходит вебхук в котором лежит json вида

{
...
  "itemId":"id"
  "itemType":"foo", // "bar", "buzz", etc.
  "event":"update", // "create", "delete", etc.
  "data":{},
...
} 

это удобно обрабатывать статическими методами типа

<?php
Bar::create($json);
Foo::update($json);
/**********************/
Class Foo {
  public static updateItem($json) {
    $foo = Foo::findMethod($json->itemId);
    $foo->updateData($json->data);
    etc.
  }
  public static deleteItem($json) {
    $foo = Foo::findMethod($json->itemId);
    $foo->delete();
  }
}

собственно вопрос: насколько нормальным будет использовать конструктор метода типа

<?php
$className = $jsonReader->getClassName($json); //returns 'Foo'
$methodName = $jsonReader->getMethodName($json); //return 'updateItem'
if (method_exists($className, $methodNаme) {
  $classNAme::methodName($json);
}

или лучше использовать гирлянды ифов

if ($json->itemName == 'foo') {
  switch ($json->event) {
    case 'create':
     Foo::createItem($json);
     break;
    case 'update':
     Foo::updateItem($json);
     break;
    //etc.
  }
} else if ($json->itemName == 'bar') {
  switch ($json->event) {
    case 'create':
     Bar::createItem($json);
     break;
    case 'update':
     Bar::updateItem($json);
     break;
    //etc.
  }
} //etc.

какие есть плюсы-минусы? или ваши варианты?

READ ALSO
Не выводится php-тег в html-странице

Не выводится php-тег в html-странице

подскажите пожалуйста почему не выводятся теги php в html-странице:

160
Порядок выполнения в файле htaccess

Порядок выполнения в файле htaccess

Имеем такой файл htaccess

208
Реализация двух билдеров в одном классе

Реализация двух билдеров в одном классе

Пытаюсь реализовать два билдера для двух разных наборов параметров (тип набора определяется по полю type)

172
Spring Security возвращает ошибку 405 Request Method &#39;POST&#39; Not Supported

Spring Security возвращает ошибку 405 Request Method 'POST' Not Supported

Я использую Spring Security и Spring MVC в своем проекте, и я пытаюсь сделать страницу авторизации, но, к сожалению, при нажатии на кнопку "Log in", появляется...

245