• PHP.相关技术.composer


    1. 安装composer
    2. composer使用
    3. composer自动加载说明

    如何安装 Composer

    下载 Composer

    安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。

    打开命令行并依次执行下列命令安装最新版本的 Composer:

    php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
    
    php composer-setup.php
    
    php -r "unlink('composer-setup.php');"
    

    执行第一条命令下载下来的 composer-setup.php 脚本将简单地检测 php.ini 中的参数设置,如果某些参数未正确设置则会给出警告;然后下载最新版本的 composer.phar 文件到当前目录。

    上述 3 条命令的作用依次是:

    1. 下载安装脚本 - composer-setup.php - 到当前目录。
    2. 执行安装过程。
    3. 删除安装脚本。

    局部安装

    上述下载 Composer 的过程正确执行完毕后,可以将 composer.phar 文件复制到任意目录(比如项目根目录下),然后通过 php composer.phar 指令即可使用 Composer 了!

    全局安装

    全局安装是将 Composer 安装到系统环境变量 PATH 所包含的路径下面,然后就能够在命令行窗口中直接执行 composer 命令了。

    Mac 或 Linux 系统:

    打开命令行窗口并执行如下命令将前面下载的 composer.phar 文件移动到 /usr/local/bin/ 目录下面:

    sudo mv composer.phar /usr/local/bin/composer
    
    Windows 系统:
    1. 找到并进入 PHP 的安装目录(和你在命令行中执行的 php 指令应该是同一套 PHP)。

    2. 将 composer.phar 复制到 PHP 的安装目录下面,也就是和 php.exe 在同一级目录。

    3. 在 PHP 安装目录下新建一个 composer.bat 文件,并将下列代码保存到此文件中。

       @php "%~dp0composer.phar" %*
      

    最后重新打开一个命令行窗口试一试执行 composer --version 看看是否正确输出版本号。

    最后

    提示:不要忘了经常执行 composer selfupdate 以保持 Composer 一直是最新版本哦!

    composer使用

    1. 安装composer

    2. 如果在项目中有composer.json文件,执行

       php composer.phar install
      
    3. 如果项目中有composer.json文件且已安装了全局模式

       composer install
      
    4. 修改镜像源为国内

       composer config -g repo.packagist composer https://packagist.phpcomposer.com
      

    概念详解

    • composer.json: 该文件包含了项目的依赖和其它的一些元数据。依赖是以JSON字符串定义的,类似于下面

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

      由此可知,依赖以键值对组成

      • :由供应商和包名称组成

      • :由版本号组成。

        确切的:1.0.2
        范围: >=1.0 >=1.0,<2.0 >=1.0,<1.1|>=1.2
        通配符:1.0.*
        本版本的最新的:~1.2。相当于>=1.2,<2.0.

      • 范围详解:>>=<<=!=,为逻辑AND、|为逻辑或

      • ~ 例子

        ~1.2 相当于 >=1.2,<2.0
        ~1.2.3 相当于 >=1.2.3,<1.3

    • composer.lock:在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。

    • 两个文件的作用

      • composer.json:定义项目所需要的依赖
      • composer.lock:锁定当前依赖的版本号
      • 可以使用 composer update命令强制更新composer.lock文件为composer.json定义的最新的依赖的版本,不过一般不推荐这么做,可以在该命令后指定需要更新的依赖

    资源包

    • 资源包:每个项目都是一个包,每次定义 require 实际上是引入其他的资源包
    • 平台软件包:Composer 将那些已经安装在系统上,但并不是由 Composer 安装的包视为一个虚拟的平台软件包

    composer命令

    composer命令详解

    composer 自动加载以及源码分析

    参考

    自动加载使用

    • 文件加载:Files 是最简单的加载方式,这种方式不管加载的文件是否用到始终都会加载,而不是按需加载

        {
            "require": {
                "monolog/monolog": "1.0.*"
            },
            "autoload": {
                "files": ["controllers/Controller.php"]
            }
        }
      
    • classmap加载:classmap 引用的所有组合,都会在 install/update 过程中生成,并存储到 vendor/composer/autoload_classmap.php 文件中。这个 map 是经过扫描指定目录(同样支持直接精确到文件)中所有的 .php.inc 文件里内置的类而得到的。

        {
            "autoload": {
                "classmap": ["src/", "lib/", "Something.php"]
            }
        }
      
    • psr-0加载(已过时):定义一个命名空间到实际路径的映射,映射到目标地址作为基目录再解析命名空间。NameSpace和Class Name中的下划线会被解析成路径。

        {
            "autoload": {
                "psr-0": { "Monolog\": ["src/", "lib/"] }
            }
        }
      
        psr-0 规范同时兼容了 PHP5.2 版本前的为命名空间风格
      
        比如有一个类名为 Foo_Bar_HelloWorld 的类文件存放在
        
        app/Foo/Bar/HelloWorld.php 文件中
        
        "psr-0": {
            "Foo\": "app/"
        }
      
    • psr-4加载:定义一个命名空间到实际路径的映射

        {
            "autoload": {
                "psr-4": { "Monolog\": ["src/", "lib/"] }
            }
        }
      

    自动加载源码阅读

    • 首先执行composer命令,将当前配置加载到对应的autoload_*.php文件中。

    • 实例化 ClassLoader

    • 将 autoload_*.php 文件中属性加载到 ClassLoader 类中。

    • 注册 ClassLoader 类中的自动加载

    • 将以 文件加载 的内容引入进来

    • classLoader类的自动加载

      • 先判断 classmap 类中是否存在
      • 再通过 psr-4psr-0 进行检测
  • 相关阅读:
    一本通 1602:烽火传递
    【笔记】Correlation & Convolution
    【笔记】Supreme Axiom → Heine-Borel Theorem
    CCPC2017
    【BZOJ3513】idiots
    【AGC030D】Inversion Sum
    【Gym102823H】Hamming Distance
    CCPC2018
    【ZJOI2014】力
    【Luogu3803】模板:多项式乘法
  • 原文地址:https://www.cnblogs.com/qiye5757/p/9487688.html
Copyright © 2020-2023  润新知