• php composer


    参考

    https://www.isfirst.net/dev/143
    https://www.jianshu.com/p/adcae6213e9b

     

    composer是现代PHP的基石

    现代高级编程语言,依赖管理工具是必不可少的。Java有Maven,Python有pip,Nodejs有npm.

    而composer就是php依赖管理工具。

    composer的安装

    # 下载安装脚本 - composer-setup.php - 到当前目录
    $ php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" 
    
    # 执行安装过程
    $ php composer-setup.php 
    
    # 删除安装脚本
    $ php -r "unlink('composer-setup.php');" 
    
    # 全局安装,将composer.phar移动到全局目录并重命名为composer (可以使用echo $PATH来查看全局目录)
    $ sudo mv composer.phar /usr/local/bin/composer 
    
    # 更换为阿里云镜像源
    $ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    php composer-setup.php 安装后会在当前目录生成composer.phar文件
    这时候composer就安装完成了,可以执行composer的相关操作。composer.phar是可执行文件
    执行方法
    ./composer.phar (路径/composer.phar)  //作为可执行文件执行
    或者
    php composer.phar   //作为php的参数执行

    这时还不能直接执行composer.phar,否则会报错,这是因为执行一个可执行文件时,如果不指明路径,就会到PATH变量包含的目录中查找,找不到就报错

    [vagrant@localhost borg]$ composer.phar
    -bash: composer.phar: command not found

    要想不指明路径,而且在所有的目录下都可以执行composer,就需要将composer.phar文件移动到PATH包含的某个目录中去。即上面的全局安装所执行的命令。

    需要注意,root用户和普通用户的PATH变量值并不相同,要想所有用户都能使用,可以将composer.phar文件放置到不同用户的PATH变量都包含的目录中去。

    可以使用echo $PATH来查看PATH的值

    echo $PATH
    /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin

    composer的常用命令

    1.composer require

    当我们要追加一个包或者更新一个包时使用,不依赖composer.json文件,也不依赖composer.lock文件

    composer require 包名  //安装最新版本的包
    composer require 包名:版本  //安装指定版本的包或者将包更新到指定版本,可以更新到高版本也可以更新到低版本

    执行完composer require后,会在composer.json中追加或者更新相关信息,同时也会更新conposer.lock。如果执行时不存在composer.json文件,会生成

    2.composer install

    使用composer install会依赖composer.json和composer.lock文件,首先会在composer.json中查找要安装的包,然后再看看composer.lock文件中有没有相关的包信息。如果composer.lock文件中有相关的包信息,就按照lock文件的信息进行安装,如果没有,就按照json文件中指定的版本规则安装相应版本的包,并将所安装的包的想过信息写入到composer.lock文件中

    install命令一般用于克隆一个项目后,安装所有需要的包,并保持包的版本一致(通过composer.lock文件来锁定包的版本等信息,从而保证所安装的包的一致性)

    composer install

     install后应该不加包名,而是只能根据json和lock文件进行安装

    3.composer update

    composer update只依赖composer.json文件,而不依赖composer.lock文件。它会根据composer.json文件中规定的版本规则将所有的包更新到最新版本。

    注意,并不是包版本越新越好,所以此命令要慎用

    composer update  //将所有的包更新到composer.json文件规定的最新版本
    composer update 包名  //将指定包更新到composer.json文件规定的最新版本

    update后可以加包名,应该不能加版本号

    4.composer remove

    composer remove用于卸载某个包

    composer remove 包名

    卸载后会更新composer.json和composer.lock文件中的相关信息

    5.composer show

    查看已经安装的包

    [vagrant@localhost borg]$ composer show
    monolog/monolog   2.0.2   Sends your logs to files, sockets, inboxes, databases and various web services
    mustache/mustache v2.13.0 A Mustache implementation in PHP.
    psr/log           1.1.2   Common interface for logging libraries

    查看某个包的详细信息,可以使用如下命令。比如查看所有的版本时

    [vagrant@localhost borg]$ composer show mustache/mustache --all
    No composer.json found in the current directory, showing available packages from packagist.org
    name     : mustache/mustache
    descrip. : A Mustache implementation in PHP.
    keywords : templating, mustache
    versions : dev-master, v2.13.0, v2.12.0, v2.11.1, v2.11.0, v2.10.0, v2.9.0, v2.8.0, v2.7.0, v2.6.1, v2.6.0, v2.5.1, v2.5.0, v2.4.1, v2.4.0, v2.3.1, v2.3.0, v2.2.0, v2.1.0, v2.0.2, v2.0.1, v2.0.0, v2.0.0-rc.1, 1.0.0, dev-dev, dev-tmp/template-inheritance-whitespace
    type     : library
    license  : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
    source   : [git] https://github.com/bobthecow/mustache.php.git e95c5a008c23d3151d59ea72484d4f72049ab7f4
    dist     : [zip] https://api.github.com/repos/bobthecow/mustache.php/zipball/e95c5a008c23d3151d59ea72484d4f72049ab7f4 e95c5a008c23d3151d59ea72484d4f72049ab7f4
    names    : mustache/mustache
    
    autoload
    psr-0
    Mustache => src/
    
    requires
    php >=5.2.4
    
    requires (dev)
    phpunit/phpunit ~3.7|~4.0|~5.0
    friendsofphp/php-cs-fixer ~1.11

    6. composer search

    查找某个包

    composer serach 关键字
    [vagrant@localhost borg]$ composer search monolog
    monolog/monolog Sends your logs to files, sockets, inboxes, databases and various web services
    monolog/monolog Sends your logs to files, sockets, inboxes, databases and various web services
    symfony/monolog-bundle Symfony MonologBundle
    symfony/monolog-bridge Symfony Monolog Bridge
    easycorp/easy-log-handler A handler for Monolog that optimizes log messages to be processed by humans instead of software. Improve your productivity with logs that are easy to understand.
    bramus/monolog-colored-line-formatter Colored Line Formatter for Monolog
    maxbanton/cwh AWS CloudWatch Handler for Monolog library
    wazaari/monolog-mysql A handler for Monolog that sends messages to MySQL
    theorchard/monolog-cascade Monolog extension to configure multiple loggers in the blink of an eye and access them from anywhere
    flynsarmy/slim-monolog Monolog logging support Slim Framework
    tylercd100/lern LERN (Laravel Exception Recorder and Notifier) is a Laravel 5 package that will record exceptions into a database and will notify you via Email, Pushover or Slack.
    inpsyde/wonolog Monolog-based logging package for WordPress.
    rahimi/monolog-telegram A handler for Monolog that sends messages to Telegram Channels
    mero/yii2-monolog The Monolog integration for the Yii framework.
    logentries/logentries-monolog-handler A handler for Monolog that sends messages to Logentries.com.
    kdyby/monolog Integration of Monolog into Nette Framework

    查找包还可以在https://packagist.org/中查找

    composer.json文件的包版本格式

    composer.json中声明安装包时,需要指定包的版本,版本号的指定有多种格式:

    • 确定的版本号

        格式:1.0.2

        最简单的指定方式,无歧义

    • 在一定范围的版本号

        可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理。一个管道符号|将作为逻辑OR处理。 AND 的优先级高于 OR

        >=1.0: 大于或等于1.0版本

        >=1.0,<2.0: 大于或等于1.0,且小于2.0

        >=1.0,<1.1|>=1.2: 大于或等于1.0且等于1.1,或者大于等于1.2

    • 通配符

        1.0.*: 只要满足以1.0开头的版本号均可

    • ~下一个重要版本

        ~1.2 相当于 >=1.2,<2.0

        ~1.2.3 相当于 >=1.2.3,<1.3

    • ^大于指定的版本

    composer.lock文件

    composer.lock文件是为了保证所有的协作者所安装的包的版本的一致性。是为composer install命令服务的

    composer.json在指定版本时,不一定是精确指定,很多时候是使用范围指定,只有当我们安装了包,才知道最终安装了哪个版本。那么问题来了,如果我们半年后再根据composer.json来安装包,可能有些包的版本已经升级了,且向下不兼容,这就有可能导致程序报错。为避免这种问题,在执行composer install之后,composer会生成composer.lockcomposer.lock

    在锁文件中可以看到完整的包信息,包括包的版本号。

    composer install命令会先检查锁文件是否存在,如果存在,它将下载指定的版本(忽略composer.json文件中的定义)

    锁文件非常重要!必须将文件上传到代码仓库,这样才能保证团队各成员所安装的包版本是一致的。

    命令总结:

    composer  显示所有命令
    composer show 显示所有包信息
    composer install  如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;
    composer search packagename 搜索包
    composer update 的逻辑是按照 composer.json 指定的扩展包版本规则,把所有扩展包更新到最新版本,注意,是所有扩展包#如不确定请勿运行!
    composer update xxx/package 更新指定包
    composer remove xxx/package 移除指定的包
    composer require xxx/package   添加或者更新指定包
    composer require xxx/package ~2.5
    composer require xxx/package:2.5
    composer require xxx/package=2.5
    composer require xxx/package 2.5
     
     
  • 相关阅读:
    理解javascript观察者模式(订阅者与发布者)
    Javascript异步编程之setTimeout与setInterval详解分析(一)
    Gulp.js----比Grunt更易用的前端构建工具
    requireJS对文件合并与压缩(二)
    requireJS(版本是2.1.15)学习教程(一)
    Git使用教程
    Ajax基本知识
    go语言基础之有参有返回值函数的使用
    go语言基础之函数有多个返回值
    go语言基础之函数只有一个返回值
  • 原文地址:https://www.cnblogs.com/gaoBlog/p/12448123.html
Copyright © 2020-2023  润新知