• PHP面试中经常出现的composer 问题总结



    前言

    今天使用composer create-project 安装了一下thinkphp6,以前是知道怎么用create-project这个命令来安装项目的,很长一段时间没有使用了。还好自己还不算太老,脑子还可以动起来,索性就一遍看文档,一遍写下笔记。

    (一)做什么的

    到底什么时候会用到composer create-project 这个命令呢, 一般情况而言都是使用composer require来引入以来库,很少使用create-project 来安装项目,我记得上次使用这个命令还是用thinkphp5.1写项目的时候。 那这句话到底有什么作用呢,下面引用Composer官网的一句话

    你可以使用 Composer 从现有的包中创建一个新的项目。这相当于执行了一个 git clone 或 svn checkout 命令后将这个包的依赖安装到它自己的 vendor 目录。

    从上面我们可以读到这些信息,它会做这样的两个操作:

    • 从现有的包中创建一个新项目

    • 安装这个包中的依赖到vendor

    也就是会创建一个新项目,并且会把这个项目中的依赖下载到vendor目录中。那这个包是哪里来的呢,Composer说了会在 packagist.org上查找你指定的包

    (二)怎么用

    知道做什么的,要怎么使用呢。常规的使用是这样的composer create-project topthink/think think 5.1.*,

     对这个命令详细说一下,分为四部分讲解

    • 第一部分就是composer create-project,告诉composer我们要创建项目;

    • 第二部分topthink/think是包名,这个包名是在packagist.org网站可以搜索的到的,如果找不到也创建不了项目,composer会报错;

    • 第三部分think, 这个是给创建的项目取一个名字,其实也就是一个目录名字,这个目录如果在的话,目录一定要为空,不然创建项目会失败,如果目录不存在会自动创建,目录起英文名字,中文会遇到一些不可描述的问题

    • 第四部分,创建的项目的版本,因为我们创建的项目来自于packagist库中的包,包有不同的版本,以我创建的topthink\think为例就有5.1.*5.0.*,如果我们不指定版本号,默认会使用新的版本来创建,当然也可以使用指定的版本5.1.38。这里也可以使用通配符5.1.*,赋值运算符~5.1等等


    (三)参数

    composer create-project 这个命令有一些参数,比如--prefer-dist当有可用的包从dist安装项目,--prefer-source当有可用的项目从source安装

    不仅我上面提到的参数,还有一些参数,但是在工作中一致没有用过,我也没有仔细研究过,即便是看了,当时了解了也忘记了,所以我的第一步操作是把composer create-project这个命令学会,再来了解它的参数使用方法


    (四)其他

    也不是说使用composer创建项目只能使用composer create-project, 也可以使用git clone把项目克隆到你的电脑上,方法多种多样,就看你使用哪一种,对于我而言我更喜欢使用composer create-project来安装一个thinkphp项目

    (五)扩展:composer 包版本的范围指定

    版本约束使用示例

    • : 和 = 都可以

    • 版本约束可以加引号,也可以不加

    • composer文档使用的是 : 并且版本约束加引号(可以说更加规范吧)

    composer create-project topthink/think:"5.1.*"
    composer create-project topthink/think=5.1.*
    

    关于扩展包的安装方法
    那么,准备添加一个扩展包,install, update, require 三个命令都可以用来安装扩展包,选择哪一个才是正确的呢?

    答案是:使用 composer require 命令

    另外,在手动修改 composer.json 添加扩展包后,composer update new/package 进行指定扩展包更新的方式,也可以正确的安装,不过不建议使用这种方法,因为,一旦你忘记敲定后面的扩展包名,就会进入万劫不复的状态,别给自己留坑呀。

    上面的概念不论对新手或者老手来说,都比较混淆,主要记住这个概念:

    原有项目新添加扩展的,都使用 composer require new/package 这种方式来安装。

    (六)名词解释
    composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;
    composer update - 从 composer.json 安装最新扩展包和依赖;
    composer update vendor/package - 从 composer.json 或者对应包的配置,并更新到最新;
    composer require new/package - 添加安装 new/package, 可以指定版本,如:composer require new/package ~2.5.

    链接:https://juejin.im/post/6844903937011613704

    赞赏码

    非学,无以致疑;非问,无以广识

  • 相关阅读:
    alter table add column default
    JS小知识点
    java list按照元素对象的指定多个字段属性进行排序
    Web.xml配置详解之context-param
    spring在web.xml中的配置
    Activiti工作流(4):编写一个HelloWorld
    Activiti工作流(3):activiti核心API
    Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作
    Activiti工作流框架学习(一)——环境的搭建和数据表的了解
    Redis系列之(二):Redis主从同步,读写分离
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452687.html
Copyright © 2020-2023  润新知