🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 聊聊PHP的作曲家composer(5)-psr/log ## (一)搜索 在 https://packagist.org/ 搜索 `psr/log` 首先我们可以看到使用它的人还真TM的多啊!将近2亿8千万。 如果你从来没用过,或者你从来不知道它是什么?那你应该想一想,你现在的PHP水平到底处于一个什么样的水平。 PS:该好好学习PHP喽! ![](https://img.kancloud.cn/8a/d9/8ad9dbe38ee1d6238fac60566c25e063_991x360.png) ## (二)描述: `psr/log` 是一个 `日志库通用接口`,提供了上文描述过的接口和类,以及相关的异常类,还有一组用来验证你的实现的单元测试。 他的维护者是 ![](https://img.kancloud.cn/e3/e2/e3e28971b4f0838a61ca98f2711d9158_282x369.png) ## (三)分析 我们可以来细细的分析一下,如下图所示: ![](https://img.kancloud.cn/d1/64/d1648976b047fea19b5b941b306f2dad_453x371.png) `LoggerInterface.php`,这是一套日志正常的接口,这是一个`接口类`,不是`普通类`,不能实例化的! ## (四)简单使用 ``` require './vendor/autoload.php'; use Psr\Log\LoggerInterface; class Test implements LoggerInterface{ //相关继承代码 } $result = (new Test())->emergency('1111'); print_r($result); ``` ![](https://img.kancloud.cn/3b/f2/3bf25b370f270ef2b5c1009b027efe22_578x270.png) ## (五)扩展知识 ### 一、普通类 1、关键词:class 类名,继承关键字extends 2、继承:只能实现单继承, 3、多态:子类继承可以实现多种功能 4、封装:类有权限机制,私有的只能自己用,受保护的可以被继承,子类的权限必须大于等于父类 5、实例化:可以被实例化 ### 二、接口类 1、关键词 :interface 类名 ,继承关键字 implements 2、继承:可以实现多继承,父类有的方法属性,子类必须有,类可以实现多个接口,用逗号来分隔多个接口的名称 3、多态:同样具有多态性 4、封装:所有的方法,属性都必须是公有的(public) 5、实例化:不能被实例化 6、函数:只定义函数名与参数,权限,无具体逻辑 ### 三、抽象类 1、关键字:abstract 类名 2、继承:只能进行单继承 3、多态:同样具有多态性 4、封装:同样具有封装性 3、实例化:不能被实例化 5、函数:因有抽象函数才有抽象类,抽象类中可以有普通函数抽象函数不能实现逻辑。而普通函数可以例:abstract public function eat($food); ![](https://img.kancloud.cn/1a/b6/1ab687b5d23309fd0a07bbe6bbbebb96_800x340.png)