get_class_methods()
获取类的方法外(但这个只可以获取 public 类型的方法),还可以通过 ReflectionClass
来获取,是一个 debug 的好方法,尤其对于使用某个扩展类,而文档不全的情况下。
ReflectionClass
类报告了一个类的有关信息,比如通过调用 ReflectionClass
,来获取 protobuf 3 中支持的方法列表:
<?php $class = new ReflectionClass('\Google\Protobuf\Internal\Message'); $methods = $class->getMethods(); print_r($methods);die;
返回结果:
array(14) { [0]=> object(ReflectionMethod)#3 (2) { ["name"]=> string(5) "clear" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [1]=> object(ReflectionMethod)#4 (2) { ["name"]=> string(20) "discardUnknownFields" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [2]=> object(ReflectionMethod)#5 (2) { ["name"]=> string(17) "serializeToString" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [3]=> object(ReflectionMethod)#6 (2) { ["name"]=> string(15) "mergeFromString" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [4]=> object(ReflectionMethod)#7 (2) { ["name"]=> string(21) "serializeToJsonString" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [5]=> object(ReflectionMethod)#8 (2) { ["name"]=> string(19) "mergeFromJsonString" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [6]=> object(ReflectionMethod)#9 (2) { ["name"]=> string(9) "mergeFrom" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [7]=> object(ReflectionMethod)#10 (2) { ["name"]=> string(16) "readWrapperValue" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [8]=> object(ReflectionMethod)#11 (2) { ["name"]=> string(17) "writeWrapperValue" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [9]=> object(ReflectionMethod)#12 (2) { ["name"]=> string(8) "hasOneof" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [10]=> object(ReflectionMethod)#13 (2) { ["name"]=> string(9) "readOneof" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [11]=> object(ReflectionMethod)#14 (2) { ["name"]=> string(10) "writeOneof" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [12]=> object(ReflectionMethod)#15 (2) { ["name"]=> string(10) "whichOneof" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } [13]=> object(ReflectionMethod)#16 (2) { ["name"]=> string(11) "__construct" ["class"]=> string(32) "Google\Protobuf\Internal\Message" } }