function_exists возвращает false каждый раз - PullRequest
3 голосов
/ 08 марта 2012

Я пытаюсь проверить, существует ли функция или нет, но я продолжаю получать значение false в моем, если

Я пытаюсь вызвать такую ​​функцию, где $ function - это имя функции :

if (function_exists($this->module->$function))
{
    $this->module->$function($vars);
}
else
{
    echo 'no';
}

Переменная module определяется как класс, в котором должна вызываться функция:

$this->module = $module;
$this->module = new $this -> module;

Я что-то здесь упускаю? Спасибо!

Ответы [ 5 ]

4 голосов
/ 08 марта 2012

Только мог бы разобраться: Использование method_exists () решило мою проблему

method_exists($this->module,$function)

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

3 голосов
/ 08 марта 2012

Вам нужно использовать method_exists():

if (method_exists($this->module, $function)) {
    // do stuff
}
2 голосов
/ 08 марта 2012

function_exists () ожидает строку в качестве параметра. Это сделает свое дело:

method_exists($this->module, $function);

Удачи!

2 голосов
/ 08 марта 2012

function_exists принимает имя функции в виде строки и не имеет понятия иерархии классов.

Если $function - имя функции, просто используйте этот код:

if(function_exists($function)) {
    // Call $function().
}

Однако, глядя на ваш код, вы увидите, что вы хотите определить, существует ли метод объекта.

method_exists принимает два параметра: 1: объект для проверки, 2: имя метода для обнаружения.

if(method_exists($this->module, $function)) {
    $this->module->$function($vars);
}
2 голосов
/ 08 марта 2012

Вам необходимо проверить, существует ли метод, а не функция:

if (method_exists($this->module, $function))
{
    $this->module->$function($vars);
}
else
{
    echo 'no';
}

Ознакомьтесь с документацией: http://php.net/manual/en/function.method-exists.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...