未知php代码分析,常用辅助分析类函数总结
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文中,苏南大叔将总结对未知代码进行分析的时候,可能会用得到的函数。相对而言,本文的重要性就不是那么重要,因为一般来说,输出变量就可以很好的分析当前代码啦。不过作为代码分析的辅助功能,这些函数还是有必要继续使用的。
取得当前类名
取得当前语句所在类的类名,下述几条语句是等同的效果。
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"));
值得说明的是:
- 可以取得所有的方法名,包括
private
和protected
的方法。 - 可以取得所有的方法名,包括从父类继承的方法。
- 不包括没有显式定义的系统方法,比如:
__destruct()
或者__clone()
等等。当然,如果定义了,就会在返回值中,有体现。 - http://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
的属性情况,也可以取得public
和protected
的属性。 - 传递的参数是个类名,不是个变量实体。
- 返回值是kv键值数组,其中的值是初始化默认定义值。注意并不是
__construct()
中改变的值,就是属性定义时的默认值。 - http://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());
返回值是:
seosn.com:这里是【评论】可见内容
取得某函数(某方法)传递进来的参数
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代码分析,魔术常量及变量总结》 https://newsn.net/say/php-debug-var.html
总结
php
是世界上最好的语言,没有其它。更多php
相关经验文章,请点击苏南大叔的博客查看:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。