方法存在,但PHP说它没有

时间:2011-12-19 23:52:49

标签: php function codeigniter methods

我不知道为什么会这样,但也许有人在这里知道。我遇到了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

那么如果objects方法有效,它怎么能返回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”的人。那为什么它会返回假?

由于

2 个答案:

答案 0 :(得分:7)

这不是一种方法:它是一种财产。试试property_exists

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

方法只是定义为类的一部分的函数,例如:

public function someMethod($someParam) {...

属性是在对象上设置的有效变量,例如:

public $id = 0;

答案 1 :(得分:3)

id是属性而不是方法。你想要property_exists()。