《PHP初体验(二)》要点:
本文介绍了PHP初体验(二),希望对您有用。如果有疑问,可以联系我们。
这是《PHP初体验》内容第后半部门,前半部门请查我们的头条号.
PHP中的反射机制
反射,直观的理解就是根据到达地找到出发地和来源.比如给出一个对象就可以找到对象所属的类、拥有哪些办法.反射可以在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、办法、属性、参数等的详细信息,这种动态获取信息以及动态调用对象办法的功能称为反射API.
如上代码中介绍的是通过对象获取类的办法和属性字段,而反射不仅仅可以用于类和对象,还可以用于函数、扩展模块、异常等.既然反射可以探知类的内部结构,那么就可以利用反射机制实现插件的功能,也可以利用反射机制实现动态代理.接下来举个简单的例子看看如何通过反射机制实现动态代理.
如上的代码中真正实现sayHello()动作的是Person类中的sayHello()办法,而Dynamicproxy仅是一个代理类,其中并没有定义sayHello()办法,而是通过__call()办法动态调用类Person的sayHello()办法.在DynamicProxy类中可以做sayHello()办法的前后拦截,并且可以动态的改变类中的办法和属性.很多时候,善用反射可以保持代码的优雅和简洁,但反射也会破坏类的封装性,因为反射可以使本不应该暴露的办法或属性被强制暴露了出来.
PHP中的异常和差错
在语言级别通常有许多错误处理模式,但这些模式往往建立在约定俗称的基础上,也就是错误都是可预知的.不同的语言对异常和错误的定义也是不一样的,在PHP中,遇到任何自身错误都会触发一个错误,而不是抛出异常.也就是说PHP一旦遇到非正常代码,通常都会触发错误,而不是抛出异常.因此如果想使用异常处理不可预料的问题,是办不到的.好比,想在文件不存在或数据库无法建立连接时触发异常,是不可行的.PHP会把这些作为错误抛出,而不是作为异常捕获.还是回到PHP的错误处理上,PHP中的错误级别大致分为以下几类:
最高级其余错误是语法解析错误 prase error.该错误属于语法检查阶段错误,这会导致PHP代码无法通过语法检查.
次之的差错是fetal error.该类差错会导致PHP流程终止,其后的代码无法继续执行.
warning是警告级其余错误,在语法中出现很不恰当的情况才会报此错误,如参数不匹配、除数为0等.这种错误会导致不可预期的结果.
notice是通知级其余错误,这种错误是在如变量使用前未定义、数组索引是字符时没有加引号等情况.
最低级别的错误是deprecated的错误,表示不保举,不建议.如在PHP5中使用ereg系列的正则匹配函数就会报此类错误,该错误是由于使用了不保举、过时的函数或语法造成的,不影响PHP正常流程.
接下来我们看一看针对上边介绍的各个级其余错误PHP是如何处理的.PHP中提供了set_error_handler()函数来处理错误,当然该函数也不是可以托管所有种类的错误,如E_ERROR、E_PARSE、E_CORE_ERROR等错误,这些错误会以原始的方式显示.当然也可以通过restore_error_handler()取消接管:
如上这种“曲折迂回”的处理方式也存在问题:必须依靠程序员本身来掌控对异常的处理,对于异常高发区、敏感区,如果处理不好就会出现业务数据不一致的问题,但是优点就是可以获得程序运行的上下文信息,以进行针对性补救.
对于代码中存在的异常,必要认为的进行抛出,接下来我们通过自定义一个异常类来处理抛出的异常,
初体验就为年夜家介绍到这里吧,以后有机会在深入的去了解PHP函数、PHP与网络、PHP与数据库等等的内容吧.
IT行业最新资讯:
优待业500万阳光待业基金:
http://www.ujiuye.com/zt/jyfc/?wt.bd=fq37300
优待业官网:http://www.ujiuye.com/?wt.bd=fq37300
维易PHP培训学院每天发布《PHP初体验(二)》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/6909.html