如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

本文中,苏南大叔将总结对未知代码进行分析的时候,可能会用得到的函数。相对而言,本文的重要性就不是那么重要,因为一般来说,输出变量就可以很好的分析当前代码啦。不过作为代码分析的辅助功能,这些函数还是有必要继续使用的。

取得当前类名

取得当前语句所在类的类名,下述几条语句是等同的效果。

echo get_class($this);
echo get_class();
echo __CLASS__;

当然,如果对get_class()传递一个类实体变量的话,就可以返回对应的类名。参数如果写的话,就必须是个object,否则直接报错get_class() expects parameter 1 to be object

echo get_class($obj);

取得某类名下的所有方法

取得类的所有的方法名数组。参数可以是类实体,也可以是类名。失败的话,返回NULL

var_dump(get_class_methods(__CLASS__));
var_dump(get_class_methods($this));
var_dump(get_class_methods(new class1()));
var_dump(get_class_methods("class_name"));

值得说明的是:

  • 可以取得所有的方法名,包括privateprotected的方法。
  • 可以取得所有的方法名,包括从父类继承的方法。
  • 不包括没有显式定义的系统方法,比如:__destruct()或者__clone()等等。当然,如果定义了,就会在返回值中,有体现。
  • https://doc.php.sh/zh/function.get-class-methods.html

取得某类名下的所有属性kv数组

从函数名称上面看,是取得vars,其实就是属性的名称和值的集合了。失败的话,返回NULL

var_dump(get_class_vars(__CLASS__));
var_dump(get_class_vars(get_class($this)));
var_dump(get_class_vars("class_name"));

这里需要注意的是:

  • 可以取得private的属性情况,也可以取得publicprotected的属性。
  • 传递的参数是个类名,不是个变量实体。
  • 返回值是kv键值数组,其中的值是初始化默认定义值。注意并不是__construct()中改变的值,就是属性定义时的默认值。
  • https://doc.php.sh/zh/function.get-class-vars.html

取得某类名下所有常量

$reflect = new ReflectionClass("class_name");
//$reflect = new ReflectionClass(get_class($this));
return $reflect->getConstants();

这个有些高级了,因为用到了反射ReflectionClass的概念,返回的范围是对应类名中用const定义的常量的集合数组。下面是个范例。

class TestCase
{
    public $a    = 1;
    protected $b = 2;
    private $c   = 3;
    const AUTHOR = "苏南大叔";
    const VERSION = "0.0.1";
    const DEBUG  = FALSE;
}
$reflect = new ReflectionClass("TestCase");
var_dump($reflect->getConstants());

返回值是:

newsn.net:这里是【评论】可见内容

取得某函数(某方法)传递进来的参数

var_dump(func_num_args());
var_dump(func_get_arg(0));
var_dump(func_get_args());

这个主要用于传递的参数未知的情况下,就可以用这些函数了。

  • func_num_args(),传递的参数名。
  • func_get_arg($index),传递的第$index个参数的实参值。当然了,第一个参数的话就写0,这个不解释。
  • func_get_args(),传递进来的参数的数组。知道为啥上边填0了吧?

相关链接

总结

php是世界上最好的语言,没有其它。更多php相关经验文章,请点击苏南大叔的博客查看。

 【源码】代码片段及相关软件点此获取

 【php】秘籍文章入口,仅传授于有缘之人   php    debug

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!