反射获取类名

本文介绍了一个PHP脚本函数,用于从指定的类中获取所有公共方法的名称。通过反射API实现,能够帮助开发者更好地理解和使用类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?
/* Pass the name of the class, not a declared handler */
function get_public_methods($className) {
  
/* Init the return array */
  
$returnArray = array();

  
/* Iterate through each method in the class */
  
foreach (get_class_methods($className) as $method) {

      
/* Get a reflection object for the class method */
      
$reflect = new ReflectionMethod($className, $method);

      
/* For private, use isPrivate().  For protected, use isProtected() */
       /* See the Reflection API documentation for more definitions */
      
if($reflect->isPublic()) {
          
/* The method is one we're looking for, push it onto the return array */
          
array_push($returnArray,$method);
       }
   }

  
/* return the array to the caller */
  
return $returnArray;
}
?>
<< 在 Python 中有多种方式可以获取的名字,具体取决于你想从实例、本身还是其他上下文中提取这个信息。以下是一些常用的方法: ### 方法一:使用`__class__.__name__` 如果已经有一个对象(即某个的一个实例),可以通过访问该对象的 `__class__` 属性,并读取其名称。 ```python class MyClass: pass obj = MyClass() print(obj.__class__.__name__) # 输出 "MyClass" ``` **解释**: 在这里, `obj` 是 `MyClass` 的一个实例.`__class__` 特殊属性指向创建此实例所用的具体型(也就是它的).然后通过 `. __name__`,我们得到了这个型的名称作为字符串. --- ### 方法二:对于直接操作的情况,也可以直接利用 `__name__` 当没有具体的对象但知道具体的时可以直接调用上的 `__name__`. ```python class AnotherClass: pass print(AnotherClass.__name__) # 输出 "AnotherClass" ``` **解释**: 这里不涉及任何实例化过程;而是单纯地引用了定义好的并且取得它们名字的形式表示法。 --- ### 方法三:使用内置函数 type 和 getattr 获取类名 (稍微复杂一点的方式) 这更多适用于更动态场景下根据反射等技术需求来确定未知变量实际所属别时候采用的手法之一: ```python def get_class_name(an_object): return an_object.__class__.__name__ # 或者更加通用版本为支持传入非仅限于普通自定数据结构元素如列表字典元组等等形式参数处理情形加入判断机制如下所示: def universal_get_class_name(anything): if isinstance(anything,type): return anything.__name__ else : return type(anything).__name__ x=[1,2] y=universal_get_class_name(x) # y会变成'list' z="hello world!" a=universal_get_class_name(z) #'str' ``` 这种方法的好处在于灵活性更高,尤其当你不确定输入是否总是用户自定义的时候特别有用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值