У меня есть проблема, которую я не могу понять.
Я строю небольшой фреймворк (практика), а сейчас я создаю библиотеку Validator. все работает превосходно, кроме случаев, когда я пытаюсь исправить правило "обратного вызова". Правило обратного вызова используется, когда разработчику необходимо использовать правило, которого нет в библиотеке Validator.
Вот как я это делаю.
В контроллере:
$this->validator->check('req|callback:test', $_POST['module_name'], 'Module Name');
Класс валидатора:
public function check($rules, $input, $fieldname='') {
$rule = explode('|', $rules);
foreach ($rule as $r) {
$request = explode(":",$r,2);
$method = array_shift($request);
$parameter = $request;
array_unshift($parameter,$input);
array_push($parameter,$fieldname);
if (method_exists($this, $method)) {
call_user_func_array(array($this,$method), $parameter);
}
}
protected function callback($input, $key, $fieldname='') {
}
Моя проблема в том, как я могу использовать «текущий» контроллер. Например, в этом случае мне нужно найти:
UserController::test();
Я могу найти правильный метод в $ key, но является ли простой способ выяснить, какой контроллер запускается?
Я пытался использовать URL как:
$controller = ucfirst($uri->uri[1]).'Controller';
$controller::$key();
Но это не сработало вообще ... Есть идеи?