Помогите с помощью __call с codeigniter - PullRequest
1 голос
/ 18 ноября 2010

У меня есть класс в codeigniter, который имеет дело только с ajax.В этом классе я создал функцию, которая проверяет, является ли refferal рефералом ajax. Я хочу иметь возможность вызывать эту функцию каждый раз, когда используется какая-либо функция из этого класса.__call магический метод

class Ajax_content extends Controller {

    function __construct()
    {
        parent::Controller();


    }

    function __call($method, $arguments){

            $this->ajaxCheck(); //set up to return false and exit.
            call_user_func_array(array($this,"_".$method),$arguments);

        }

В настоящее время ajaxCheck() всегда возвращает false и exit() с.Но он не вызывается (в настоящее время мой ajax-запрос по-прежнему возвращает данные) Это правильный способ решения проблемы?

Ответы [ 2 ]

5 голосов
/ 18 ноября 2010

Я хочу иметь возможность вызывать эту функцию каждый раз, когда используется любая функция из этого класса

__ Вызов запускается только при вызове недоступных методов.Если вы хотите, чтобы определенные функции выполнялись каждый раз, когда вызывается метод контроллера (и под этим я предполагаю, что вы имеете в виду метод, сопоставленный с веб-запросом, а не любая функция в классе), Вы должны поместить эту функциональность в конструктор.

0 голосов
/ 20 мая 2019

Если вы хотите, чтобы метод выполнялся перед любым методом вместо использования magic php __call в контроллере codeigniter, вы можете использовать метод Remaping для codeigniter

    public function _remap($method)
    {
        // call and start a method before any other method in codeigniter  controller
    }

для получения дополнительной информации см. эту страницу

...