zoukankan      html  css  js  c++  java
  • php好搭档--composer

    本来想写个中二的开头,奈何没文化,算了,直接步入正题吧。今天来说 php 的好搭档--Composer。

    说到 Composer,大多数 phper 应该都使用过。但是是否都和我一样,只是单纯的用过,其他的一概不知呢?ok,这并不羞耻,现在我们来了解一些 Composer 的前世今生。

    文档中也明确说明了,Composer 是 php 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。并统一引用他们。

    引用?这个是不有点熟悉?初学 php 时候,对于一些可以复用的逻辑方法,我们会将它们封装成一个通用文件,然后在需要用到的地方,使用 require 或 include 来引入该文件,然后就可以在需要使用的地方调用方法。后期又出现了 __autoload、spl_autoload_register,用来加载文件。但是不管使用 require、__autoload,都避免不了代码引入时候的“乱”的问题。是的,就是乱,没有一个统一管理的规则,每次需要引入新的文件,都需要去修改代码。能不能有一个工具来管理并且统一加载需要使用的文件呢?Composer 应运而生。

    Composer 将这样为你解决问题:

    1、你有一个项目依赖于若干个库。

    2、其中一些库依赖于其他库。

    3、你声明你所依赖的东西。

    4、Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。

    作用:

    1、安装并管理依赖

    2、统一引入依赖。

    基础使用

    1、首次安装 Composer 后,需要执行初始化命令来生成 composer.json 文件,按照提示来逐步完成就可以。

    $ composer init
    Do not run Composer as root/super user! See https://getcomposer.org/root for details
    
      Welcome to the Composer config generator
      
    This command will guide you through creating your composer.json config.
    
    # 1. 输入项目命名空间
    # 注意<vendor>/<name> 必须要符合 [a-z0-9_.-]+/[a-z0-9_.-]+
    Package name (<vendor>/<name>) [root/test_composer]:yourname/projectname
    
    # 2. 项目描述
    Description []:这是一个测试composer init 项目
    
    # 3. 输入作者信息,直接回车可能出现如下提示,有的系统可以直接回车,具体为什么?这里不详细介绍
     Invalid author string.  Must be in the format: John Smith <john@example.com>
    # 3.1. 注意必须要符合 John Smith <john@example.com>
    Author [, n to skip]: John Smith <john@example.com>
    
    # 4. 输入最低稳定版本,stable, RC, beta, alpha, dev
    Minimum Stability []:dev
    
    # 5. 输入项目类型
    Package Type (e.g. library, project, metapackage, composer-plugin) []:library
    
    # 6. 输入授权类型
    License []:
    
    Define your dependencies.
    
    # 7. 输入依赖信息
    Would you like to define your dependencies (require) interactively [yes]?
    
    # 7.1. 如果需要依赖,则输入要安装的依赖
    Search for a package:php
    
    # 7.2. 输入版本号
    Enter the version constraint to require (or leave blank to use the latest version): >=5.4.0
    
    #  如需多个依赖,则重复以上两个步骤(7.1/7.2)
    Search for a package:
    
    # 8. 是否需要require-dev,
    Would you like to define your dev dependencies (require-dev) interactively [yes]?
    
    
    {
        "name": "dduan/test_compser",
        "description": "这是一个测试composer init 项目",
        "type": "library",
        "require": {
            "php": ">=5.4.0"
        },
        "authors": [
            {
                "name": "John Smith",
                "email": "john@example.com"
            }
        ],
        "minimum-stability": "dev"
    }
    # 9. 是否生成composer.json
    Do you confirm generation [yes]?
    
    # 现在安装依赖项吗
    Would you like to install dependencies now [yes]?

    - 按照提示逐步完成后,会生成 composer.json 文件,后期直接更新 composer.json 文件,使用 install 命令来安装依赖文件即可。

    - 完成 composer.json 文件的引导编辑并确认安装依赖后,就会安装已编辑的依赖文件,后期安装其他依赖文件只需要编辑 composer.json 文件并执行 composer install  命令即可,就像下文中的操作一样。

    2、安装依赖文件

    composer.json 文件中指定 require key 的值。你只需要简单的告诉 Composer 你的项目需要依赖哪些包。

    {
        "require": {
            "monolog/monolog": "1.0.*",
         "包名称":"版本号",
    } }

    - 执行命令 composer install 安装依赖。

    3、自动加载。

    对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件。你可以简单的引入这个文件,你会得到一个免费的自动加载支持。

    require 'vendor/autoload.php';

    然后你就可以操作依赖文件了。

    锁文件

    在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定改项目的特定版本。当然,当你更新了某一个依赖后,也会更新锁文件。

    后期团队中的其他人员通过 composer install  来安装依赖时,会优先检查锁文件是否存在,存在的话则安装文件中的指定版本,这也就保证了任何人建立项目都将下载与指定版本完全相同的依赖。如果锁文件不存在,则会按照 composer.json 来安装依赖,但是这样就很难保证版本一致性。通常都会要求 composer.json、composer.lock 文件是同时存在的。

    常用命令

    - composer search monolog  搜索包

    - composer require monolog  安装包

    - composer update [monolog/monolog]  更新包

    - composer remove [monolog/monolog]  移除包

    - composer show  展示所有安装包

     

    常用的操作就这些啦,后面有其他需要直接查询文档即可。后面贴上文档链接。加油,打工人。

    参考文件:

    https://zhuanlan.zhihu.com/p/133857206

    https://docs.phpcomposer.com/01-basic-usage.html

    https://www.runoob.com/w3cnote/composer-install-and-usage.html

  • 相关阅读:
    Qt 交换Layout中的QWidget控件位置
    霍夫变换(Hough)
    图像傅里叶变换
    通俗讲解:图像傅里叶变换
    傅里叶分析之掐死教程(完整版)
    一幅图弄清DFT与DTFT,DFS的关系
    Qt 实现简单的TCP通信
    Qt 基于TCP的Socket编程
    Socket原理讲解
    科研相机选择:sCMOS还是CCD?
  • 原文地址:https://www.cnblogs.com/suojian/p/14202716.html
Copyright © 2011-2022 走看看