我是一個初學者,從laravel 5.2開始,我認爲下面這些概念應該比閱讀文檔更直接。需要了解Laravel核心功能
- 服務提供商
- 服務容器
- 合同
- 外立面
我覺得一個很好的解釋和例子,可以真正幫助初學者瞭解這4個概念是如何結合在一起的框架。
我是一個初學者,從laravel 5.2開始,我認爲下面這些概念應該比閱讀文檔更直接。需要了解Laravel核心功能
我覺得一個很好的解釋和例子,可以真正幫助初學者瞭解這4個概念是如何結合在一起的框架。
服務提供商: 所謂的服務提供商是您的Laravel應用程序的心跳。它們是初始化過程的核心元素,所有相關和必需的代碼都由PHP加載。這包括框架本身的所有要素,還包括您需要加載的任何自定義代碼。
控制反轉,或IOC: 不能伊斯利解釋(我只有這個IM一些想法不是親)
外牆:
Facade模式是軟件設計模式經常用於面向對象的編程。實際上,Facade是一個包裝複雜庫的類,它爲它提供了一個更簡單,更易讀的界面。 Facade模式也可用於爲一組複雜且設計不佳的API提供統一且設計良好的API。
Laravel facade是一個類,它爲容器內的服務提供類似靜態的接口。根據文檔,這些外觀用作訪問容器服務底層實現的代理。
我知道這是不夠的!你問是複雜的東西一個單一的答案可能是不夠的
是的。這還不夠,但你已經給了他一個很好的啓動。 –
是的,我認爲理解這些東西是必不可少的!人們必須瞭解他們正在使用的是什麼 –
好了,我第一次與laracasts是一個驚人的資源的人,才能夠真正進入更詳細,打破下來的東西很簡單的同意。
如此說來,在簡要概述如下:
服務容器(IoC容器)是laravel芯的過程,可與它們的依賴正常加載對象。舉例來說,如果我有一個控制器的方法是這樣的:
public function update(Request $request, $id)
{
...
}
IoC容器是足夠聰明的解析請求,並加載了請求類相關聯,以確保它得到正確的實例化的依賴關係。
它還允許你實例化類,而不必沿着所有的依賴完全轉嫁給如下:
class ProductRepo(Product $product)
{
public function get($id)
{
...
}
}
我可以引用這個類,而不依賴注入加載它,如下所示:(確保傳遞完整的命名空間)
app('App\ProductRepo')->get($id);
這讓我沒有在產品對象通過,Laravel是足夠聰明,解決產品的對象,因爲IoC容器是做幕後的神奇。
服務提供商是一個讓您在引導或實例化類時自定義行爲的地方。例如,Laravel默認使用一個名爲EventServiceProvider的類。此課程的任務是在Laravel中配置Event系統,以確保包含您創建的所有自定義事件偵聽器。所以如果我想確保EventDispatcher被加載時,它會帶來所有必要的依賴關係。
合同真的很簡單。它們只是暗示接口的php面向對象的概念。這個概念指出有些類可以建立規則。例如:
interface SearchableInterface
{
public function search($data);
}
class BinarySearch implements SearchableInterface
{
public function search($data)
{
...
}
}
這說明了實現SearchableInterface任何類,必須有一個功能搜索條件的接受一個參數。這創建了一個'契約',任何實現SearchableInterface的類都必須具有此函數,否則應用程序將拋出錯誤。
這對於使用互換件(兄弟姐妹)而言並不必擔心課程缺少您需要的功能。
最後但並非最不重要的是門面。我喜歡門面。簡而言之,所有這些工作都是創建一個沒有靜態定義的類的靜態表示。所以我們可以說我有一個能從S3獲得文檔的類。
class S3
{
public function get($file)
{
...
}
}
如果沒有外觀,您首先必須實例化,然後調用get類來獲得S3中的某些東西。
$s3 = new S3;
$s3->get('myAwesomeFile');
Laravel允許您輕鬆註冊Facades,以便您可以使用此靜態方式進行讀取和方便。
S3::get('MyAwesomeFile');
所有這一切都得到了每一個概念的過於簡單化,但進入的一些每一個概念的基本的一些細節。希望這可以幫助!
在Laracasts觀看本系列,並考慮購買傑弗裏午餐!傑弗裏的辦法就是學習laravel你最好的資源。(本系列產品是免費的)https://laracasts.com/series/laravel-5-from-scratch – enriqg9
這不是一個答案的伴侶,但因爲你是一個初學者,你最好一步一步來吧,無論如何,我喜歡這個問題!因爲我知道如何使用這些東西,但我不知道它們是什麼以及它們是如何工作的,傑弗裏做了一件很好的工作,檢查了laracasts –