没有反射,如何检查方法或属性可见性?

时间:2012-01-31 17:55:22

标签: php reflection

我正在编写一个简单的php框架。现在我需要一种更好的方法来检查方法或属性是私有的还是公共的。目前我正在使用Reflection类,但几乎每个属性访问都需要它。

我需要魔法__get,如果其中有公共方法$object->testProperty,则可以拨打getTestProperty()

我正在寻找另一种方法(因为性能)。有没有更快的可能性?

2 个答案:

答案 0 :(得分:1)

您可以使用is_callable检查是否可以在对象上调用该方法:

is_callable(array($object, 'methodName'))

如果您需要检查某些属性,请使用property_exists

property_exists($someObject', 'userId')

最后有method_exists

method_exists('someClass', 'someMethod');

答案 1 :(得分:0)

还有两个有用的功能: bool method_exists(class_name_or_object,method_name) - 如果方法存在(公共,甚至保护和私有),则返回true array get_class_methods(class_name_or_object) - 返回类或对象的公共方法数组