1.反射类
格式:$str=new ReflectionClass('类名')
以数组的形式获取反射类里面的所有变量:$class_property=$str->getProperties()
以数组的形式获取反射类里面的所有方法:$class_method=$str->getMethods()
因为获取的是一个数组,所以要遍历以下 代码如下
forecah($class_property as $v){
echo "$v['name'].'<br>';
//获取变量的注释
echo $v->getDocComment().'<br>';
}
getProerties和getMethods()里面可以通过参数判断变量和方法的类型.RelectionProperty::IS_STATIC //静态类型 RelectionProperty::IS_PUBLIC //公共类型 RelectionProperty::IS_PROTECTED //受保护的类型 RelectionProperty::IS_PRIVATE //隐私类型
反射类可以实例化
$instance=$str->newInstanceArgs(['参数1','参数2'])//相当于new Person('参数1','参数2')
通过$ec=$str->getMethod('show'),可以获得想要的方法
$ec->invoke($instance),输出show方法
2.命名空间
格式:namespace 空间名;
作用:避免类名和方法名的重名问题
跨空间里面类名的三种格式
a.非限定名称,类名前面没有前缀。例如$comment=new comment(),当空间名是b\a,类名会被解析为b\a\comment
b.限定名称,类名前面有前缀.例如$comment=new a\comment(),当空间名是b\c,类名会被解析为b\c\acomment
c.完全限定名称.类前面有全局前缀限定符号:\.例如$comment=new \a\c\comment(),当空间名为d.类名总会被解析为\a\c\comment.完全限定名称与空间名没关系
空间里面类名的别名
当空间里面类名的目录过长,或者类的目录名过长,可以给类定义别名
格式:1.use 类名 as 别名
2.use c\a\b\d 省略as的话系统会自动将最后一个\后面的字符串当作别名
应用:可以给目录别名
3.开发者模式//下面转到middle4_2
4.错误类型
格式:error_reporting(0)//屏蔽所有错误
error_reporting(E_ALL)//展示所有错误
error_reporting(E_ALL & ~E_NOTICE)//展示所有错误并且屏蔽提示错误
&并且 ~否 | 或者
E_ALL E_NOTICE//提示错误 E_WARNING//警告错误 E_ERROR//普通错误 E_PARSE//语法错误
ini_set(param1,param2) 设置配置项的值 参数1是配置的项 参数2是值
ini_get(配置项)获取配置项的值
5.异常类Exception
作用:用来捕获异常.
异常是一个处理错误的面向对象方法,异常也是一种对象.而且Execption是系统的内置对象
格式: try{
throw newExecption('错误信息','错误码');
}catch(Exception $e){
echo $e->getCode();//获取错误码
echo $e->getLine();//获取错误行
echo $e->getMessage();//获取错误信息
echo $e->getFile();//获取错误文件
}
//当throw抛出一个错误的时候,代码会停止执行,并且输出catch里面的信息
try是代码块体,异常都写在这个里面
throw用来抛出异常
catch用来捕获异常
浙公网安备 33010602011771号