【问题标题】:Get methods on a standard class?获取标准类的方法?
【发布时间】:2015-05-07 16:35:14
【问题描述】:

有没有办法获取实例化的标准类对象的所有方法?我说的是一个有一些方法和属性的对象,而不是一个新的 stdClass 对象。 ReflectionClass 似乎只适用于类。

【问题讨论】:

  • 你的对象有类还是无类? (即一些 stdClass 突变体)

标签: php stdclass


【解决方案1】:

试试get_class_methods(),如果我理解正确的话,听起来就像你所描述的那样。

【讨论】:

  • 参数定义为“类名或对象实例”。页面上的示例显示它被用于两者(我也通过给它一个对象来使用它)。
  • PHP 和函数名称,每次 XD 都会让我感到兴奋。.. 制作一个不会误导的函数名称有多难?我们可以得到get_object_methods()吗?
  • 是的,完全同意,这可能会产生误导。我想一开始我在尝试这样做时忽略了它,因为我也是这么想的。
  • 即使只是 get_class_methods 的别名也会让事情变得更加明显!啊,PHP。 :P
【解决方案2】:

您可以使用get_object_vars 获取所有属性的列表,然后遍历它们(或array_filter 它们)并确定它们中的哪一个is_callable

$myClass = new StdClass;
$myClass->someFunc = function($a) {
    return $a - 1;
};
$myClass->someProperty = 42;

$properties = get_object_vars($myClass);

$methods = array_filter($properties, 'is_callable');

我不确定这是否是我的 5.4.39 版本的 PHP,但使用上面的示例并按照 @Mike 的建议执行 var_dump(get_class_methods($myClass)); 会返回一个空数组。

【讨论】:

  • 对,看起来 get_class_methods() 只会返回在生成对象的类中定义的那些。
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
相关资源
最近更新 更多