相关推荐recommended
Composer使用教程
作者:mmseoamin日期:2023-12-18

Composer使用教程

  • 前言
    • 1.Composer 简介
    • 2. 下载与安装
        • 2.1 局部安装
        • 2.2 全局安装
        • 2.3 更新composer
        • 2.4查看composer
        • 2.5 安装composer镜像加速
        • 3. composer的使用
            • 3.1初始化
            • 3.2安装第三方包
            • 4. 自动加载器
                • 4.1 加载非 class 文件
                • 4.2 加载自己写 class 文件
                • 4.3 PSR-4 自动加载规范
                • 5. 常规"包"安装简单命令
                • 6. 安装脚手架
                • 7. composer 进阶
                    • 7.1composer.json和composer.lock的区别
                    • 7.2代码库
                    • 7.3composer运行原理

                      前言

                      Composer 不会全局安装包,也就是说你全局安装了composer,你以后在哪个文件夹下面安装包都不会影响到你在其他文件夹的包,通俗的来讲,就是你全局安装composer后,你的每个文件夹都是一个虚拟环境


                      1.Composer 简介

                      • Composer: PHP 项目的"包(class)"依赖管理工具
                      • 这些包,可以是你自己写的, 也可以来自第三方
                      • 不管来自哪里, composer 都能帮你自动安装好
                      • 特别是第三方包,还能帮你自动更新到指定版本

                        本质: 是一个加强版本的自动加载器(Plus+)

                        2. 下载与安装

                        2.1 局部安装
                        1. Windows安装

                          直接进入指定文件夹,打开cmd输入如下几条命令即可

                           php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
                           php composer-setup.php
                           php -r "unlink('composer-setup.php');"
                          
                        2. mac和Linux安装
                         # mac/linux
                         curl -sS https://getcomposer.org/installer | php
                        
                        2.2 全局安装

                        推荐使用全局安装

                        1. windows: https://getcomposer.org/Composer-Setup.exe
                        2. macos/linux
                          1. 局部安装,下载 composer.phar
                          2. curl -sS https://getcomposer.org/installer | php
                          3. . 移动到自定义命令目录,并重命名
                          4. sudo mv composer.phar /usr/local/bin/composer
                        2.3 更新composer

                        更新composer是指全局安装的composer更新,因为,局部安装的composer一般都是最新的版本

                        composer selfupdate
                        
                        2.4查看composer
                        1. 检验你是否安装成功composer,打开你的cmd,然后在里面输入composer,如果出现如图所示的composer图,则表示安装成功了

                        2. 查看composer的版本composer -V 或者:composer -Version

                        2.5 安装composer镜像加速

                        安装composer镜像加速会让你以后的包下载速度非常的快(如下操作都是指全局安装composer后)

                        1. 查看配置

                          	composer config -gl repo.packagist
                          

                          Composer使用教程,在这里插入图片描述,第1张

                        2. 配置全局变量为阿里云镜像:

                          composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
                          

                        3. composer的使用

                        首先如果你要使用composer的话,你肯定是要创建文件管理包的,就像node.js当中有npm但是也需要package.json像npm中的package.json或者是composer中的composer.json这些文件一般是都有你下载的这些包的信息。

                        3.1初始化
                        1. 直接使用composer init直接进行初始化,使用composer init命令后直接全部回车即可
                        2. 直接创建composer.json文件,在文件中写入{},再使用命令composer install去安装依赖

                        个人推荐使用第二种方法,第二种方法创建的composer.json文件更简介,初始化后有几个文件必须要了解

                        1. composer.json:可以认定为composer.lock的简写
                        2. composer.lock: composer.json 中的包版本锁定文件
                        3. vender目录: 第三方包,以及 composer 的自动加载器
                          1. autoload.php: composer 的自动加载器
                          2. composer目录: 自动加载器的配置项(系统维护)
                        3.2安装第三方包

                        其实如果一开始你就要安装第三方包的话,直接使用安装第三方包的命令就可以了,这样安装会直接初始化composer然后再进行包安装,安装包一般会有如下几个步骤:

                        1. 搜索包

                          • 方法1:

                            比如说要搜索个php库Monolog,再cmd下直接执composer search monolog就行了

                            • 方法2:

                              直接进入官网搜索包,这样就可以直接下载,还会有使用教程第三方包官网

                            • 查看包

                        • 查看已经安装的包composer show -all
                        • 查看某个包,比如monolog,composer show --all monolog/monolog
                          1. 下载包
                          • 方法1:

                            直接再composer.json中加入如下的字段:,然后使用命令composer install

                              "require": {
                                "monolog/monolog": "1.26.*"
                            }
                            

                            一个是包的名称,一个是包的版本,(^这个符号是固定符号,*这个符号是不确定符号)

                            • 方法2:

                              直接按照官网来,使用composer require 包名来安装,不过这样安装的包是最新版本,使用composer require 包:指定版本来安装指定版本

                              1. 跟新依赖

                                如果有以下情况,都可以进行更新依赖:

                                • 删除某个库

                                  直接再composer.json中删除该库,然后运行composer update

                                • 更改某个依赖的版本
                                • 新增依赖
                                • 更新所有依赖

                                  composer update

                                • 更新某个依赖

                                  composer update 包名

                                • 删除依赖
                              composer remove 包名
                              

                              4. 自动加载器

                              1. composer.json添加autoload字段,声明依赖"包"的路径
                              2. composer dumpautoload: 将autoload字段声明注册到 composer 中

                              项目中需要用到自动加载的的文件有哪些?

                              1. 普通文件: config/database.php
                              2. 类文件: xxx.class.php
                                1. 自己写的类
                                2. 第三方类(别人写的):https://packagist.org/
                              4.1 加载非 class 文件

                              在composer.json文件中的autoload下面添加file

                                  // composer.json
                                  {
                                  "autoload": {
                                      "files": ["config/database.php", "lib/common.php"]
                                  }
                              }
                              

                              使用就直接包含自动加载文件就可以了

                              4.2 加载自己写 class 文件

                              在composer.json文件中的autoload下面添加classmap

                                  {
                                  "autoload": {
                                      "files": ["config/database.php", "lib/common.php"],
                                      "classmap": ["inc/", "src/Base.php"]
                                  }
                                  }
                              

                              使用就直接包含自动加载文件就可以了

                              4.3 PSR-4 自动加载规范
                              1. PSR简介
                              • PSR:(Standard Recommendations)PHP FIG 组织制定的推荐标准
                              • PSR-4 要求
                                1. 类空间映射到类文件路径
                                2. 类名与类文件同名
                                3. 一个类文件中只允许存在一个类
                                1. PSR使用

                                在composer.json文件中的autoload下面添加psr-4字段即可

                                "psr-4": {
                                      "app\\admin\\controller\\": "src/app/controllers",
                                      "app\\admin\\models\\": "src/app/models",
                                      "app\\": [
                                        "src/app",
                                        "src/app/test"
                                      ]
                                    }
                                

                                使用就直接包含自动加载文件就可以了


                                5. 常规"包"安装简单命令

                                1. composer.json中添加require字段

                                  "require": {
                                      "catfan/medoo": "^2.1"
                                  }
                                  
                                  # 无composer.lock
                                  composer install
                                  # 有composer.lock
                                  composer update
                                  
                                2. 三合一: 声明,注册,下载

                                  # 下载包
                                   composer require catfan/medoo
                                   
                                   # 移除包
                                   composer remove catfan/medoo
                                  

                                6. 安装脚手架

                                以安装thinkphp为例

                                ```bash
                                # 安装脚手架/目录架构,包含了源码vendor目录
                                composer create-project topthink/think shop
                                # 只有源码,没有目录架构
                                composer require topthink/framework
                                ```
                                

                                7. composer 进阶

                                7.1composer.json和composer.lock的区别
                                1. 可以理解为composer.json包含的是依赖包的简要信息而composer.lock文件包含的是依赖的详细信息
                                2. 如果是把composer.json这个文件分享给同事或者朋友,执行install命令后,那版本号可能是和你自己本地开发使用的版本是不同的,这时候composer.lock文件就起到了关键作用,因为composer.lock文件里面是有显示的版本号的,只要把这个文件分享出去,别人再执行composer install命令的话,安装的依赖包就会和你本地开发安装的是一个版本,这样就会防止一些不必要的bugs。
                                3. 执行install操作后,composer会先去看看有没有composer.lock文件,如果有就安装lock文件内的依赖包,如果没有会再去找composer.json文件并安装,而composer update操作,就会直接读composer.json文件,根据版本规则去更新,但是他们两个操作最后都是会更新lock文件

                                总结:发送你写的东西,和依赖包的时候,发送composer.lock就可以了,无composer.lock使用composer install,有composer.lock使用composer update

                                7.2代码库

                                Composer使用教程, ,第2张

                                composer中的代码也就是gethub中的代码,只不过使用了Packagist把github中的代码集合了,就是把代码整理在Packages

                                Packagist,代码安装库

                                学习猿地

                                composer常用的库

                                Composer使用教程,在这里插入图片描述,第3张

                                7.3composer运行原理

                                Composer使用教程,在这里插入图片描述,第4张


                                资料

                                Composer中文使用教程

                                菜鸟教程