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用来捕获异常

posted on 2017-10-13 16:21  顾君临  阅读(107)  评论(0)    收藏  举报