前言
恰好看到一个很短小又很有迷惑性的类方法,顺便给大家分解一下其语法。
适合人群
对PHP语法比较熟悉,或有一定框架使用经验的同学。
刚学完十天系列的话,理解起来比较困难。
代码
解析
class Kernel
无需多说,表示这是一个类。
protected
设置方法的可见性。有三个选项:
public 公开的,内外均可用
protected 受保护的,仅对象内部可用
private 私有的,仅当前对象可用
function reportException
定义方法名, 翻译成中文是 ,的意思。就是说,这个方法用于报告代码异常。
(Exception $e)
参数列表。
仅有一个参数”“,提示类型为 Exception,传入的参数必须是 类的实例化对象,否则会报错。这种用法在框架中非常常见,PHP目前主流的依赖注入,都是借此实现的。
注:Exception 类是PHP自带的一个异常处理类。
ExceptionHandler::class
返回 类的名称(包含命名空间) 这种用法大约是PHP5.3之后才有的。
$this->app[ExceptionHandler::class]
这样的语法,新人特别容易晕,其实拆开之后并不难理解。先将 去掉:
指向当前对象, 是对象的属性, 表示这是一个数组。完整的含义是:从当前对象的 app 属性中,取 这个键的值。
提问:你猜猜值是什么数据类型?
->report($e)
的左边必然是对象,右边是对象里的属性或方法。
答案:上面的“值”数据类型是对象(object)
方法说明
这是 Kernel 类中的一个方法,用于报告异常,它接受一个”Exception“类型的参数,之后调用ExceptionHandler类的report方法处理异常。
总结
新同学刚入门时,能看懂语法,但不会灵活使用,或者一堆陌生语法堆在一起时,就感觉一团乱麻。不要慌,所有看起来花里胡哨的功能,都是基础语法的灵活运用,一点点拆开,自然能够理解。
慢下来细细分析,不熟悉的语法立刻去查手册,写一点例子来求证,慢慢的就入门了。
领取专属 10元无门槛券
私享最新 技术干货