zoukankan      html  css  js  c++  java
  • composer安装第三方库

    生成composer.json

    首先需要安装composer,composer -v出现如下,则表明安装成功。

    • 编写composer.json
    {
        "name": "www/test",
        "description": "wwwtest",
        "authors": [
            {
                "name": "www",
                "email": "example@qq.com"
            }
        ],
        "repositories": [
            {
                "type": "vcs",
                "url": "github项目url"
            }
        ],
        "version":"1.0.106",
        "require": {
            "smalot/pdfparser":"1.1.*"
        },
        "autoload":{
            "psr-4":{
                "model\":"src/"
            }
        }
    }
    

    1.name和description是你给这个php项目起的名字,description需要来描述这个包的作用。
    2.authors 作者可以有多个
    3.repositories相当于需要下载的代码库所在的仓库,默认会有一个全局的仓库,在这里添加一个是因为如果你有个私人的仓库,则可以在这里声明
    4.version是版本号(有几种方式:1.确切版本号1.1.1,2.范围版本号>=1.1,<1.2; 3.统配符版本号:1.0.*即,大于1.0小于1.1;4赋值运算版本号,~1.0表示用于匹配>=1.0并且小于2.0的版本)
    5.require则通过“name”:"version"声明,可以有多个,require以后使用composer install命令composer会下载代码并自动加载
    6.autoload 自动加载类

    • 也可以通过composer init生成一个composer.json

      以smalot/pdfparser为例,在包列表 查找对应包的信息。

    • 使用composer install安装
      运行composer install,composer会检查composer.json组件的名称和版本,下载到当前文件夹的vendor文件夹。如没当前目录没有vendor文件夹,会在当前目录生成一个vendor目录。下载完成之后会在当前文件夹创建一个名为composer.lock的锁文件。当执行composer install会先检查该文件的版本号,如果存在,
      就先下载该文件指定的版本。如果某个组件有了新的版本,需要执行composer update去更新并重新生成新的composer.lock文件。

    自动加载机制

    composer install 还会在vendor目录下提供一个自动下载文件,在项目中执行require 'vendor/autoload.php'语句引入这个文件。 加载相应的类文件。
    自动加载有psr-0,psr-4,classmaphe和file四种规范形式。其中psr-4是最受欢迎的。自动加载规范psr-4的自动加载基于文件夹和命名空间,在composer.json文件中直接添加autoload字段自动实现命名空间到目录的映射。

    //根文件夹 lib
    //根命名空间 model
    
    //file lib/A.php
    
    namespace model;
    
    class A {
    
    }
    
    //file lib/path/B.php
    
    namespace modepath;
    
    class B{
    
    }
    
    //file demo.php
    
    $a = new modelA();
    
    $b = new modelpathB();
    
    //或者use
    //file demo.php
    use modelA;
    use modelpathB;
    
    $a = new A();
    
    $b = new B();
    
    
  • 相关阅读:
    PAT-乙级-1011. A+B和C (15)
    PAT-乙级-1010. 一元多项式求导 (25)
    PAT-乙级-1009. *说反话 (20)
    PAT-乙级-1008. 数组元素循环右移问题 (20)
    PAT-乙级-1007. 素数对猜想 (20)
    PAT-乙级-1006. 换个格式输出整数 (15)
    PAT-乙级-1005. 继续(3n+1)猜想 (25)
    PAT-乙级-1004. 成绩排名 (20)
    BZOJ 1030: [JSOI2007]文本生成器
    BZOJ 2938: [Poi2000]病毒
  • 原文地址:https://www.cnblogs.com/mentalidade/p/6266488.html
Copyright © 2011-2022 走看看