当进行测试时,需要知道是否得出正确的数据,比如打印一个对象,看看这个对象由那些属性,其值是什么,在代码中直接var_dump一个对象,是可以看到此对象的属性和属性值的,如果在类中定义了__toString方法,我们就可以自定义对象的输出信息了,当使用echo 打印的时候,会自动调用__toString方法,并打印出输出信息同时我们可以用一些获取类名 ,方法名的函数,来组织我们的自定义信息。
PHP中关于获取类名,方法名的操作有:
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
注:这些常量前后均是两个下划线。
get_class(class name);//取得当前语句所在类的类名
get_class_methods(class name);//取得class name 类的所有的方法名,并且组成一个数组
get_class_vars(class name);//取得class name 类的所有的变亮名,并组成一个数组
例子:
<?php
class Person{
private $name;
private $age;
public $sex;
public function __toString(){
//这里也可以使用get_class函数获取类名
//$classname = get_class($this);
$classname = __CLASS__;
$method = __METHOD__ ;
return "当前调用{$classname}类的{$method}方法,用户名:{$this->name},名字:{$this->age}";
}
public function __construct($name,$age){
$this->name = $name;
$this->age = $age;
}
private function __testMethod(){
echo "testMethod";
}
public function setSex($sex){
$this->sex = $sex;
}
}
$a = new Person("小明","18");
$arry_methods = get_class_methods($a);
$arry_vars = get_class_vars(get_class($a));//参数是类名
var_dump($arry_methods);//私有的方法 没有显示
var_dump($arry_vars);//私有的变量,没有显示 vardump $a 可以显示私有的变量
echo $a;//会调用 __toString方法
//默认类对象可以调用var_dump函数 返回类的属性和属性值的数据
var_dump($a);
$a->setSex("男");
var_dump($a);
/*输出
array (size=3)
0 => string '__toString' (length=10)
1 => string '__construct' (length=11)
2 => string 'setSex' (length=6)
array (size=1)
'sex' => null
当前调用Person类的Person::__toString方法,用户名:小明,名字:18
object(Person)[1]
private 'name' => string '小明' (length=4)
private 'age' => string '18' (length=2)
public 'sex' => null
object(Person)[1]
private 'name' => string '小明' (length=4)
private 'age' => string '18' (length=2)
public 'sex' => string '男' (length=2)
*/
?>