1. 程式人生 > >laravel框架關鍵技術解析之02-1 理解元件化開發 手動構建laravel框架 路由元件

laravel框架關鍵技術解析之02-1 理解元件化開發 手動構建laravel框架 路由元件

此篇利用元件化開發的思想,構建類似laravel的框架,對理解laravel有幫助。
在閱讀此篇之前,建議先了解laravel容器的概念。
推薦一篇不錯的文章<<Laravel 服務容器例項教程 —— 深入理解控制反轉(IoC)和依賴注入(DI)>>https://laravelacademy.org/post/769.html
小編對此也一知半解- -!,共勉。

1,在D:\www建立資料夾取名lara
在這裡插入圖片描述在這裡插入圖片描述
2,手動建立composer.json檔案
在這裡插入圖片描述
並輸入內容如下

{
	"require":{	
	}
}

3,lara下執行composer update

D:\WWW\lara>composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

在這裡插入圖片描述
在這裡插入圖片描述

新增路由元件

composer的資源包管理庫 https://packagist.org/
搜尋illuminate/routing,即laravel中用的元件。我們可以看到其依賴元件,其中包括symfony的路由元件 symfony/routing、核心容器

元件illuminate/container,和http( request,response)三個重要的元件。
在這裡插入圖片描述
編輯composer.json

{
	"require":{
	"illuminate/routing":"*",
	"illuminate/events":"*"
	}
}

composer update
在這裡插入圖片描述

新增框架入口檔案

在這裡插入圖片描述

新增路由檔案

在這裡插入圖片描述

編寫入口檔案,訪問路由

在這裡插入圖片描述
在這裡插入圖片描述
上面是基於閉包來訪問應用的,下面用控制器來訪問應用。

新建app > Http > Controllers目錄,建立IndexController.php
在這裡插入圖片描述

寫路由
在這裡插入圖片描述


在這裡插入圖片描述

說明app\Http\Controllers\IndexControllers沒有被自動載入,但是
在這裡插入圖片描述
Illuminate\Container\Container類是如何被自動載入呢??

我們知道自動載入遵循的是psr-4標準,在vendor/composer/下的psr4.php中
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
vendorDir是指vendor目錄。發現vendor下的元件都是預先定義了名稱空間與路徑的對映。而我們自定義的app目錄
在這裡插入圖片描述
是沒有對應的對映的。所以要在composer.json中新增

{
	"require":{
	"illuminate/routing":"*",
	"illuminate/events":"*"
	},
	"autoload": {
		"psr-4": {
			"app\\":"app/"
		}
	}
}
D:\WWW\lara>composer dump-autoload
Generating autoload files

再來看psr4.php,已自動添加了對映。basedir是專案根目錄,composer.json同級目錄。
在這裡插入圖片描述
在這裡插入圖片描述
end;
下一節 模型和檢視 都需要單獨引入各自的元件