[TOC]
# 聊聊PHP的作曲家composer(5)-psr/log
## (一)搜索
在 https://packagist.org/ 搜索 `psr/log` 首先我們可以看到使用它的人還真TM的多啊!將近2億8千萬。
如果你從來沒用過,或者你從來不知道它是什么?那你應該想一想,你現在的PHP水平到底處于一個什么樣的水平。
PS:該好好學習PHP嘍!

## (二)描述:
`psr/log` 是一個 `日志庫通用接口`,提供了上文描述過的接口和類,以及相關的異常類,還有一組用來驗證你的實現的單元測試。
他的維護者是

## (三)分析
我們可以來細細的分析一下,如下圖所示:

`LoggerInterface.php`,這是一套日志正常的接口,這是一個`接口類`,不是`普通類`,不能實例化的!
## (四)簡單使用
```
require './vendor/autoload.php';
use Psr\Log\LoggerInterface;
class Test implements LoggerInterface{
//相關繼承代碼
}
$result = (new Test())->emergency('1111');
print_r($result);
```

## (五)擴展知識
### 一、普通類
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);
