Метод существует, но php говорит, что нет - PullRequest
1 голос
/ 20 декабря 2011

Понятия не имею, почему это происходит, но, может быть, кто-то здесь знает. У меня проблемы с функцией PHP method_exists (). Я передаю объект и имя метода в виде строки:

method_exists($question, "id")

Я делаю var_dump и он говорит, что он возвращает false

echo var_dump(method_exists($question, "id")); // returns bool(false)

Но вот странная часть. Я заменяю эту строку следующим текстом:

echo $question->id; // returns the id number

Так как же он может вернуть false, если работает метод объектов?

Я сделал var_dump для самого объекта, чтобы вы могли посмотреть и посмотреть

object(stdClass)#19 (11) { 
  ["id"]=> string(1) "4" 
  ["question"]=> string(67) "This is a question?" 
  ["answer_id"]=> string(1) "0" 
  ["status"]=> string(6) "active"
  ["author_id"]=> string(1) "1" 
  ["created_on"]=> string(10) "1323221575" 
  ["last_edited"]=> string(10) "1324335140" 
  ["order"]=> string(6) "random" 
  ["answer_position"]=> string(1) "1" 
  ["first_name"]=> string(3) "Joe" 
  ["last_name"]=> string(8) "McMurray" }

Вы можете сразу увидеть его первый с именем "id". Так почему же он возвращает false?

Спасибо

Ответы [ 2 ]

7 голосов
/ 20 декабря 2011

Это не метод: это свойство.Попробуйте property_exists:

echo var_dump(property_exists($question, "id")); // returns bool(true)

Методы - это только функции, определенные как часть класса, например:

public function someMethod($someParam) {...

Свойства являются фактически переменными, установленными для объектаНапример:

public $id = 0;
3 голосов
/ 20 декабря 2011

id - это свойство, а не метод.Вы хотите property_exists ().

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