第1章 组件化开发与composer使用
为艺术家创造的PHP框架,优秀的设计思想和设计方法完美融合在一起,包括组件化开发、IoC容器技术、分布式应用架构设计这三部分内容。1.1 组件化开发 目的:能够快速使用已有的程序模块构建项目,甚至可以快速更换项目中的相应模块而不需要修改系统中其他部分的代码,需要所有的代码按照一定的规范和接口来实现。 例如:Laravel底层使用了很多Symfony框架中的组件1.2 composer使
为艺术家创造的PHP框架,优秀的设计思想和设计方法完美融合在一起,包括组件化开发、IoC容器技术、分布式应用架构设计这三部分内容。
1.1 组件化开发
目的:能够快速使用已有的程序模块构建项目,甚至可以快速更换项目中的相应模块而不需要修改系统中其他部分的代码,需要所有的代码按照一定的规范和接口来实现。
例如:Laravel底层使用了很多Symfony框架中的组件
1.2 composer使用
1.2.1 composer 安装
1.2.2 组件安装
composer提供了组件资源库packagist
1 在项目根目录下创建一个名为composer.json的文件(记录组件名及版本)
通过composer install安装
1.2.3 自动加载
只要在项目中通过require 'vendor/autoload.php'语句引入这个文件,在使用下载的组件时就可以自动加载了。
实现文件自动加载需要有相应的规范进行约束,其中包括PSR-0、PSR-4、classmap和files四种规范形式,其中PS4-4是目前使用的规范。这四种规范形式本质上定义了一个命名空间到实际文件的映射关系,通过这个映射关系,可以利用命名空间类精确定位到相应文件的具体路径,进而实现autoload自动加载功能。
Laravel框架中的APP命名空间下类的自动加载设置如下:
PSR-0和PSR-4规范定义了两个映射关系,即命名空间"App\\"对应目录"app/"。在PSR-4规范下,假设创建一个app/User.php文件,则该文件需要包含App\User类,也就是说new \App\User()语句实例化App\User类时,autoload会根据定义的PSR-4规范到目录app/下查找User.php文件;在PSR-0范围下,则需要创建一个bpp/Bpp/User.php文件,其中包含Bpp\User类。区别在于PSR-4规范的目录不需要添加命名空间APP,而PSR-0规范的目录需要添加命名空间Bpp
对于classmap会扫描指定目录中的所有的.php和.inc文件,并加载到vendor/composer/autoload_classmap.php文件中,在该文件会实现一个具体类与文件映射的关联数组,也可以直接精确指定一个文件。通过classmap可以生成不遵循PSR-0和PSR-4规范的自动加载类库。
对于每次程序执行时都需要载入的文件,可以通过files规范实现自动加载,通常经常使用的函数库文件就使用这种载入方式。
1.2.4 composer命令行简介
1.3 手动构建Laravel框架
1.3.1 项目初始化
通过composer update命令执行成功后lara文件夹下会自动生成自动自动加载文件
1.3.2 添加路由组件
在Laravel框架中一些功能的生成都需要服务容器来实现,服务容器用于服务注册和解析,也就是说服务容器注册能够实现某些功能的实例或回调函数,当需要使用该功能从服务器中获取相应的实例来完成。
1.3.3 添加控制器模块
1.3.4 添加模型组件
1.3.5 添加视图组件
更多推荐
所有评论(0)