【问题标题】:Method Exists but php says it doesn't方法存在,但 php 说它不存在
【发布时间】:2012-01-24 01:04:12
【问题描述】:

我不知道为什么会这样,但也许这里有人知道。我遇到了 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”。那么为什么返回false呢?

谢谢

【问题讨论】:

  • 你不是在调用函数吗? id 是一个属性,而不是一个方法。
  • 我觉得这很愚蠢,哈哈。谢谢。
  • echo var_dump 是错字吗? var_dump 已经输出到屏幕

标签: php function codeigniter methods


【解决方案1】:

这不是一种方法:它是一种属性。试试property_exists

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

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

public function someMethod($someParam) {...

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

public $id = 0;

【讨论】:

  • 原来如此。谢谢。我不知道 php 中存在该函数。我看到了 function_exists 但没有看到这个。再次感谢。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多