Я пишу метод «поймать все» для моего контроллера для ajax. Это называется «Аяксом»: PПомощь с PHP method_exists()
Это то, что в настоящее время он выглядит как
public function ajax($method = null) {
if (! $method OR ! request::is_ajax()) {
return false;
}
if (method_exists(array($this, 'searchModel'), $method)) {
echo $this->searchModel->$method();
}
exit;
}
В случае, если это не очевидно, я хочу Аякс к первому выручать, если он считает, что это не запрос Ajax , а затем, проверьте мой $this->searchModel
, чтобы узнать, есть ли у него метод, который был передан как аргумент метода ajax.
Если он найдет метод, он должен повторить его возвращаемое значение, а затем выйти.
Моя проблема: я не могу получить method_exists()
, чтобы найти способ! Я знаю, что он существует ... Я даже сильно закодировал (для целей тестирования) методы, которые, как я знаю, существуют.
Это заставило меня немного сумасшедшим, может ли кто-нибудь сказать мне, что я делаю неправильно?
Спасибо!
P.S. Я использую структуру Kohana, но я не думаю, что это должно иметь значение.
UPDATE
Как вы думаете, обнажая свои внутренние имена методов в JavaScript (т.е. общественности) может быть проблемой безопасности?
Thanks Bill! Если бы я сделал что-то вроде этого, вы думаете, что это сделает его безопасным '$ method = 'ajax_'. $ method' .i.e. Префикс 'ajax_' гарантирует, что они не смогут получить доступ к каким-либо другим методам моей модели? – alex
На самом деле я больше беспокоился о вредоносных запросах, которые * do * вызывают методы ajax, а не запросы, которые вызывают методы, отличные от ajax. –
Ну, эта модель касается только запросов пользователей - она должна быть безопасной. – alex