[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)