2011-12-19 18 views
1

私はこれがどうして起こっているのか分かりませんが、誰かが知っているかもしれません。私はPHPのmethod_exists()関数に問題があります。私はそうのような文字列としてオブジェクトとメソッド名を渡す:メソッドありますが、PHPはそうではないと言います

method_exists($question, "id") 

私はそれでのvar_dumpを行うと、それが偽

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

しかし、奇妙な部分をHERESを返すと言っています。私はその行を次のように置き換えます:

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

オブジェクトメソッドが動作すると、どうしてfalseを返すことができますか?あなたが見て、あなたはすぐに「ID」という名前のその最初のものを見ることができます

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" } 

を見ることができるように

私はオブジェクト自体でのvar_dumpをしました。だから、それはなぜ偽に戻るのですか?

ありがとう

+3

あなたがしています関数を呼び出さない? 'id'はプロパティであり、メソッドではありません。 – Halcyon

+0

私はそれが何かばかげた笑いだと感じました。ありがとう。 – JoeMoe1984

+0

は 'echo var_dump'と打ち間違いがありますか? var_dumpは既に画面に出力されています – HorusKol

答えて

7

これは方法ではなく、プロパティです。 property_existsをお試しください:

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

方法は例えば、クラスの一部として定義された関数だけです:

public function someMethod($someParam) {... 

プロパティは、例えば、効果的にオブジェクトに設定変数です:

public $id = 0; 
+0

それは何だったのですか?ありがとう。私はその関数がPHPで存在するのか分からなかった。私はfunction_existsを見ましたが、これはありません。再度、感謝します。 – JoeMoe1984

3

idはメソッドではありません。あなたはproperty_exists()が必要です。

関連する問題