За последние 24 часа нас посетил 20931 программист и 1109 роботов. Сейчас ищут 383 программиста ...

Как реализовать call_user_func_array в конструкторе?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Вероломство, 14 мар 2021.

  1. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    615
    Симпатии:
    24
    PHP:
    1. public static function dispatch($url)
    2. {
    3.     if (!self::matchRoute($url)) {
    4.         throw new Error('Страница не найдена');
    5.     }
    6.  
    7.     $controller = self::$namespace . self::$route['controller'] . 'Controller';
    8.  
    9.     if (!class_exists($controller)) {
    10.         throw new Error("Контроллер {$controller} не найден", 404);
    11.     }
    12.  
    13.     // тут в конструкторе создаваемоого объекта имена параметров можно именовать как угодно
    14.     // они тупо принимают значения ключей массива по порядку
    15.     // это не есть гут :)
    16.     $cObj = new $controller(self::$route, ...array_values(self::$params));
    17.  
    18.     $action = self::$route['action'] . 'Action';
    19.  
    20.     if (!method_exists($cObj, $action)) {
    21.         throw new Error("Метод {$controller}::{$action} не найден", 404);
    22.     }
    23.      
    24.     // тут в вызываемом методе имена параметров соответствуют ключам массива
    25.     call_user_func_array([$cObj, $action], self::$params);
    26. }
    Хотелось бы конструкторе юзать ключи массива по именам параметров тоже.

    Как реализовать call_user_func_array в конструкторе?
     
  2. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    615
    Симпатии:
    24
    туплю, решено
     
  3. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    845
    Симпатии:
    131
    Оффтоп. Откуда такая любовь к статике? Тесты на код не пишете?
     
  4. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    615
    Симпатии:
    24
    тут нечего тестировать
     
  5. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    845
    Симпатии:
    131
    Блажен, кто верует :)