如何用composer来构建自己的MVC项目

如何使用composer来构建项目

     

     为什么需要用composer来构建项目呢?

     大致有两个方面的原因:

      1、解决项目中各代码库之间的依赖关系。

      2、使用composer来做自动加载,减少手动require/include。再通过MVC和路由规则,一步一步让我们告别散装代码。提高代码的可读性,方便后期维护。

     概述

     Composer是PHP的一个依赖管理工具,不是一个包管理器。它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在项目的某个目录中(例如 vendor)进行安装。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

     默认情况下它不会在全局安装任何东西因此,这仅仅是一个依赖管理

     

     下面说明如何使用composer,逐步构建一个基于MVC的简单PHP项目。

     1、cd 项目目录,创建composer.json

      有两种方式:可以在自己的项目下创建composer.json,以便定义项目的依赖包。也可以通过composer init交互式的创建composer.json。

      说明:如果使用composer init,接下来就会自动提示填写项目相关信息,当然每一项都有默认值,不填的话也可以,一路回车即可

      最后在项目目录下面会自动生成一个composer.json文件

      

      下面是我使用composer init,一路回车,最后自动生成的composer.json中的内容:

      

      2、执行命令:composer install

     composer install : 从当前目录读取 composer.json 文件,处理依赖关系,并把依赖安装到 vendor 目录下。

      

      此时,项目下面,会生成一个vendor文件夹以及composer.lock文件

      

      说明:composer.lock这个文件主要是解决在协同开发中组件及其依赖的版本记录,防止不同人使用的组件及依赖版本不同。

      我们看下composer目录中的内容:

      

   

    3、构建新的项目

     接着我们手动创建几个目录,如下图

     

     然后我们再创建两个文件,分别是app/Helpers/functions.php、utils/log.php。

     现在有一个问题:app是我们本地自定义的目录,functions.php、log.php这两个文件也是我们自定义的,这些目录和文件并不是在vendor中,那就说明还没用到composer的自动加载。

     有没有办法,让这些自定义的目录或者文件也通过composer自动加载进去呢?答案是肯定有的!

     

     按照上面的配置,在composer.json中增加autoload相应的配置

     然后,执行命令 composer dump-autoload

     

     看到上面的显示,就表示成功了。凑是这么简单!可能有盆友表示,我这都还没看明白了,就能自动加载进去啦?

     下一篇文章,我们尝试着对composer源码进行分析,来看看 composer 是如何实现 PSR4标准的自动加载功能。

 

posted @ 2021-01-13 14:54  欢乐豆123  阅读(289)  评论(0编辑  收藏  举报