PHP面试中经常出现的composer 问题总结[通俗易懂]

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

大家好,又见面了,我是全栈君。

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 包版本的范围指定

PHP面试中经常出现的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

PHP面试中经常出现的composer 问题总结[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111660.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea如何打包war包_idea怎么导入war包

    idea如何打包war包_idea怎么导入war包本文分四个步骤进行讲述步骤一、打开ProjectStructure步骤二、增加打包配置(包括项目、打包类型、导出路径等等)步骤三、修改war包配置步骤四、打包步骤一、打开ProjectStructure打开idea开发工具,在File下找到ProjectStructure…(注意:低版本的idea在Nevigate目录下找)步骤二、增加打包配置(包括项目、打包类型、导出路径等…

    2022年10月3日
    2
  • python 小波包分解_小波分解示意图

    python 小波包分解_小波分解示意图由于最近正好在学习用python进行小波分解,看的英文的pywt库的各种属性和方法及其使用示例,在这里记录下来,方便以后查阅,前面的小波分解部分忘了记录了,就只能从小波包分解开始了。小波包:首先导入pywt库:>>>importpywt一、创建小波包结构:接下来我们实例化一个小波包对象:>>>x=[1,2,3,4,5,6,7,…

    2025年7月30日
    3
  • 0x00000000该内存不能为read

    0x00000000该内存不能为read

    2021年12月31日
    66
  • docker(7)docker-compose容器集群编排「建议收藏」

    docker(7)docker-compose容器集群编排「建议收藏」前言实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器。我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有

    2022年7月29日
    6
  • java8中LocalDate和Date之间的转换

    java8中LocalDate和Date之间的转换因为切换到了java8,但是一些东西还是使用的importjava.util.Date对象表示的,所以需要对他们进行转换,封装了一个工具类,具体,如下:/***张科*2019年1月14日20:55:54*/publicclassDateAndLocalDateUtil{/***localDate转Date*/…

    2022年10月3日
    2
  • cocos2d-x3.0 lua学习(一个)

    cocos2d-x3.0 lua学习(一个)

    2022年1月8日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号