Minor PHP框架 4 服務容器與服務提供者

2021-09-08 22:33:15 字數 1634 閱讀 6598

(如果覺得還不錯給個star哦(^-^)v)

知乎:github:

4.1 服務提供者

minor使用ioc(inversion of control,控制倒轉,這是乙個設計模式,可以先檢視下百科)容器這個強有力的工具管理類依賴。依賴注入(也是一種設計模式,一般用於實現ioc)是 乙個不用編寫固定**來處理類之間依賴的方法,相反的,這些依賴是在執行時注入的,這樣允許處理依賴時具有更大的靈活性。

服務提供者是服務容器中的單元,是乙個普通的類,任何類都可以被註冊為服務,前提是這個類的依賴可以被服務容器解析而且必須有乙個boot()方法用於服務容器自動注入該服務提供者需要的依賴。(例如迴圈依賴就可能會導致應用異常)。

4.1.1 建立乙個服務提供者

<?php

class

mailprovider

public

function send($to

)

}

這個服務提供者提供了乙個傳送郵件的服務,它的boot方法指明了這個類需要$from\$username\$password三個依賴。注意:服務提供者的建構函式不能帶有引數,因為服務容器在例項化服務提供者時並不會根據構造方法的引數去解析依賴。

4.1.2 註冊服務

<?php

return

[ 'mailer' =>[

'arguments' => ['[email protected]', 'username', 'password'],

'singleton' => true,],];

class指的就是這個服務提供者的全名。這裡你也可以指定乙個匿名函式例:

'test'    =>[

'class' => function

()

],

arguments指的就是服務提供者的boot方法需要的引數。假如你的服務提供者依賴於另外乙個依賴,你也可以使用'@servicename'的語法來注入乙個依賴,例shop類依賴mail:

<?php

return

[ 'mailer' =>[

'arguments' => ['[email protected]', 'username', 'password'],

'singleton' => true,],

'shop' =>[

'arguments' => ['@mailer'],],];

singleton表示每次從服務容器中取出這個服務時都是同乙個物件(單例),如果設定為false則每次都會重新建立這個服務。

4.1.3 獲取服務

class hellocontroller extends

controller

}

4.2 服務容器

......);

class hellocontroller extends

controller

}

Minor PHP框架 4 服務容器與服務提供者

如果覺得還不錯給個star哦 v 知乎 github 4.1 服務提供者 minor使用ioc inversion of control,控制倒轉,這是乙個設計模式,可以先檢視下百科 容器這個強有力的工具管理類依賴。依賴注入 也是一種設計模式,一般用於實現ioc 是 乙個不用編寫固定 來處理類之間依...

Minor PHP框架 5 事件

如果覺得還不錯給個star哦 v 知乎 github 5.1 事件event minor的event類提供乙個簡單的觀察者實現,允許您在應用程式裡訂閱與監聽事件。5.1.1 訂閱事件 首先建立乙個事件類 useminor event event class demoevent extends eve...

Spring框架 核心容器

spring框架 核心容器 包括core beans context el模組。aop aspects模組 spring核心的兩個概念 ioc 控制反轉,也叫di,叫依賴注入。控制反 以前物件都是由程式設計師自己建立管理的,現在由spring框架的容器來管理所有的物件。依賴注入 就是乙個物件內有乙個...