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;
下一节 模型和视图 都需要单独引入各自的组件

猜你喜欢

转载自blog.csdn.net/yt_php/article/details/85105236