composer 设置版本号_Composer依赖管理 – PHP的利器

别再到处搜PHP类扩展包了,对于现代语言而言,包管理器基本上是标配。Java 有 Maven,Python 有 pip,Ruby 有 gem,Nodejs 有 npm。PHP 的则是 PEAR,不过 PEAR 坑不少:

  • 依赖处理容易出问题
  • 配置非常复杂
  • 难用的命令行接口

好在我们有 Composer,PHP依赖管理的利器。它是开源的,使用起来也很简单,提交自己的包也很容易。

举个例子,平时我们开始的时候如果不是用框架,想要一个验证码,就要先去Gihutb或者其他地方找一个验证码类,然后在项目中include一下,再编辑编辑就跑起来了,以至于到后期项目维护都可能会出现问题。在Github上开源的,那还能点个watch,看到有Bug修复或新版本发布,能及时跟着升级。

如果下载的扩展包多了,就需要各种include了,还有可能出现命名空间冲突的问题,又要根据项目去更改命名空间,如果扩展包升级了,又要重新下载编辑,这是十分不方便的。所以Composer依赖管理库就这样诞生了。

上面就是Compser比较重要的需求场景。

  1. 能方便安装升级扩展包
  2. 只include就行,不用到处写include
  3. 避免命名空间的冲突

平时都去Github、码云等平台上找扩展包,而现在也有一个网站把所有包综合起来,也就说现在的开发方式:首先在packagist上搜索,然后用Composer安装升级。

安装Composer

傻瓜式安装的话就是直接点击https://getcomposer.org/Composer-Setup.exe,下载安装就行了,安装程序将为你下载Composer并设置你的PATH环境变量,以便你可以简单地Composer从任何目录调用。

安装的过程中需要注意的是要找到php.exe的根目录,选择正确的PHP路径。这里就不提供截图了,因为我也没下好,而且我也是手动安装的。

选择目录应该是这样的:

D:phpStudyphpphp-7.0.12-ntsphp.exe

下面还是着重介绍手动安装的,我觉得这种方法十分好用:

先下载一个composer.phar文件,将phar文件放在developer文件夹中,这个你随意,不限制放在哪个文件夹中。

然后打开DOS窗口,或者快捷键windows+R输入cmd,使用以下命令,先要进入到你放置phar文件的目录

D:developercomposer>echo @php "%~dp0composer.phar" %*>composer.bat

安装成功的标志就是在命令行输入

composer -v

显示如下内容

4ec44e359ad19466b287859ae2ceea34.png

看到这里我就都当成Composer已经安装成功了,在中国局域网内,使用Composer是比较慢的,不过好在国内有镜像,执行如下命令切换到国内的镜像,国内镜像所做的就是缓存所有安装包和元数据到国内的机房并通过国内的 CDN 进行加速,这样就不必再去向国外的网站发起请求。

composer config -g repo.packagist composer https://packagist.phpcomposer.com

这样做就相当于全局更改了配置,我选择修改当前项目的 composer.json 的配置文件:

{"repositories": {"packagist": {"type": "composer","url": "https://packagist.phpcomposer.com"}}
}

composer常用命令

selfupdate

更新 composer 本身,请经常执行 composer selfupdate 以保持 Composer 一直是最新版本。
composer selfupdate
等价于
composer self-update

dumpautoload

当我们更改了 composer.json 文件中的 autoload 时,需要执行 composer dumpautoload,来让 autoload 立即生效。而不必执行 install 或 update 命令。
composer dumpautoload
等价于
composer dump-autoload

dumpautoload 命令有两个常用的选项:

--optimize (-o): 转换 PSR-0/4 autoloading 到 classmap ,以获得更快的载入速度。这特别适用于生产环境,但可能需要一些时间来运行,因此它目前不是默认设置。

--no-dev: 禁用 autoload-dev 规则。

install

composer install

依据当前目录下的 composer.lock(锁文件) 或 composer.json 文件,所定义的依赖关系,安装依赖包。

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

# 查看 composer install 的帮助信息
composer install -h# 只安装 require 中定义的依赖,而不安装 require-dev 中定义的依赖
composer install --no-dev

update

如果你想更新你的依赖版本,或者你修改了 composer.json 中的依赖关系,想让 composer 按照 composer.json 文件中的定义执行更新操作,就用 update 命令。

composer update

require

require 命令一般用来安装新的依赖包,并将依赖写入当前目录的 composer.json 文件中。

如果 composer.json 文件中,添加或改变了依赖,修改后的依赖关系将被安装或者更新。

composer require

你也可以直接在命令中指明需要安装的依赖包。

composer require barryvdh/laravel-ide-helper

--dev 选项和 require-dev 相对应。如果你的依赖包仅仅用于开发环境,建议加上 --dev 选项。

composer require --dev barryvdh/laravel-ide-helper

create-project

你可以使用 create-project 从现有的包中创建一个新的项目。

它相当于执行了 git clone 命令后,将这个包的依赖安装到它自己的 vendor 目录。

此命令有几个常见的用途:

你可以快速的部署你的应用。

你可以检出任何资源包,并开发它的补丁。

多人开发项目,可以用它来加快应用的初始化。

# 安装 Laravel 项目
composer create-project --prefer-dist laravel/laravel blog 5.5.*

如果没有指定版本号,就默认安装最新的版本。

--prefer-dist: 当有可用的包时,从 dist 安装。

phpStudy集成环境下 安装composer失败

报错提示:

The "https://getcomposer.org/versions" file could not be downloaded: failed to open stream: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
The "https://getcomposer.org/download/1.2.0/composer.phar.sig" file could not be downloaded: SSL: crypto enabling timeout
Failed to enable crypto
failed to open stream: operation failed

1、安装composer需要开启openssl拓展 而phpstudy默认是关闭的

2、将php目录下的ssleay32.dll,libeay32.dll以及php/ext文件夹下的:php_openssl.dll 3个文件拷贝到WINDOWSsystem32 文件夹下。

3、openssl需要CA证书 phpstudy也是没有的

CA证书下载地址:http://curl.haxx.se/docs/caextract.html

选中之后单击右键选择另存为

下载成功之后放到tmp文件夹下面

4、然后修改php.ini文件

openssl.cafile = "D:phpStudytmpcacert.pem"

5、重启phpStudy就可以了报错提示:

failed to open stream: HTTP request failed!

1、检查一下php的curl拓展是否开启

2、检查这两个配置是否开启。

allow_url_fopen = On
user_agent="PHP"

也可以这样配置 user_agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)")

模拟浏览器访问也是一个不错的选择

3、开启之后重启重启phpStudy就可以了

PS: openssl.cafile 配置选项, 是 PHP 5.6.0. 以上的版本才支持的

以上内容希望帮助到大家,更多PHP大厂PDF面试文档,PHP进阶架构视频资料,PHP精彩好文可以关注公众号:PHP开源社区,或者访问:

四年精华PHP技术文章整理合集——PHP框架篇

四年精华PHP技术文合集——微服务架构篇

四年精华PHP技术文合集——分布式架构篇

四年精华PHP技术文合集——高并发场景篇

四年精华PHP技术文章整理合集——数据库篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot2.5.4发送邮件4种方式

一.准备 在创建SpringBoot项目 二、选择依赖 选择依赖时 发现其选择依赖时有邮件发送与Springboot整合的jar包&#xff0c;我们勾选即可 如果未勾选也不要紧&#xff0c;咱们手动导入 <dependency><groupId>org.projectlombok</groupId><artifactId…

手游传奇刷元宝_传奇手游 平民制霸刀刀爆元宝!

新轩辕神途手游游戏介绍新轩辕神途是一款玩法种类十分丰富多样的神途手游&#xff0c;游戏内拥有放置挂机升级玩法&#xff0c;玩家不用浪费时间工作上学都能自动升级打宝&#xff0c;更有十分庞大的世界地图等你来探索&#xff0c;十分靠谱&#xff0c;更受欢迎&#xff0c;爆…

MySQL 逻辑架构与常用的存储引擎

文章目录概述逻辑架构示意图Server 层功能模块连接器查询缓存分析器优化器执行器存储引擎层InnoDBInnoDB 主要特性InnoDB 引擎下的查询过程MyISAMMyISAM 的主要特性MyISAM 引擎下的查询过程InnoDB 和 MyISAM 的对比概述 MySQL 是我们平时开发中最常用的关系型数据库&#xff0…

java 阿里云接口实现发送短信验证码

1.先去阿里云开通短信服务&#xff1a; 2.添加模板及签名&#xff1a;需要审核&#xff0c;个人账户审核就几分钟就OK 先解释一下模板及签名&#xff1a; 标准参照&#xff1a;https://help.aliyun.com/document_detail/55324.html?spm5176.sms-sign.0.0.765c1cbeNhvWBZ 去…

MySQL 索引底层数据结构实现

文章目录概述讨论范围查询数据结构查询数据结构种类及其高性能查询原理MySQL 索引的底层数据结构MySQL 索引的需求分析选择 MySQL 索引的底层数据结构B- 树和 B 树的对比MySQL 索引的底层数据结构揭秘概述 MySQL 的索引是存储引擎用于快速找到记录的一种数据结构&#xff0c;是…

Java面试——SpringMVC系列总结

文章目录&#xff1a; 1.什么是Spring MVC&#xff1f; 2.Spring MVC的主要组件有哪些&#xff1f; 3.请描述一下Spring MVC的工作流程&#xff1f; 4.MVC是什么&#xff1f;MVC设计模式的好处有哪些 5.拦截器Interceptor与过滤器Filter有什么区别&#xff1f; 6.Spring …

中蒙俄经济走廊背景_上海外国语大学师生代表团参观访问G60科创走廊俄罗斯院士创新基地...

10月23日&#xff0c;上海外国语大学团委书记、创新创业与实践教育学院执行院长廖文其、俄罗斯东欧中亚学院党总支副书记郝佳、辅导员石朝天及学生代表等一行15人参观访问G60科创走廊俄罗斯院士创新基地(下简称&#xff1a;创新基地)。创新基地主任赵磊、俄罗斯中小企业联合会华…

MySQL 索引类别与索引使用指南

文章目录概述MySQL 索引类型MySQL 索引方法BTREE 方法HASH 方法主键构成的索引结构主键索引的优点主键索引的缺点依赖顺序插入更新代价高索引使用指南索引树回顾索引树排序规则最左前缀法则最左前缀法则的产生依据最左前缀法则延申字段书写顺序不影响最左前缀法则最左前缀法则总…

测试员不可不知的几款bug管理工具

根据每个公司性质的不同&#xff0c;规模的不同&#xff0c;所用到的bug管理工具也可能不同。你们用的bug管理工具是什么呢&#xff1f;下面介绍几款主流的bug管理工具&#xff1a; 1. JIRA&#xff08;付费&#xff09; JIRA的生产者把JIRA定义为Professional Issue Tracker&…

Bugzilla 使用指南

本篇文章主要关注于如何高效合理的使用Bugzilla。 Bugzilla是一个开源的缺陷跟踪系统&#xff0c;它可以管理软件开发过程中缺陷的提交、修复、关闭等整个生命周期。 1. 基本概念 在Bugzilla中&#xff0c;Bug报告状态分为以下几种状态&#xff0c; 待确认的 unconfirmed 新…

MySQL explain 命令

概述 MySQL 的 explain 命令&#xff0c;主要用于查看实际查询过程中的一些执行细节&#xff08;执行计划&#xff09;&#xff0c;也是查看优化器决定如何执行查询的主要方法 explain 使用示例 explain 的使用也很简单&#xff0c;在 select 语句之前增加 explain 关键字再…

centos6.5安装bugzilla超详细教程

经过自己的摸索&#xff0c;与尝试&#xff0c;成功在centos6.5上&#xff0c;安装bugzilla。并且可以发送邮件。 一、安装软件 首先&#xff0c;需要安装一些软件 yum install mysql-devel -y yum install mysql-server -y yum install httpd -y yum install gcc gcc-…

从numpy里加载_PyTorch强化:01.PyTorch 数据加载和处理

PyTorch提供了许多工具来简化和希望数据加载&#xff0c;使代码更具可读性。1.下载安装包scikit-image&#xff1a;用于图像的IO和变换pandas&#xff1a;用于更容易地进行csv解析from __future__ import print_function, divisionimport osimport torchimport pandas as pd #用…

Redmine使用手册

一、Redmine简介 Redmine是基于ROR框架开发的一套跨平台项目管理系统&#xff0c;是项目管理系统的后起之秀&#xff0c;据说是源于Basecamp的ror版而来&#xff0c;支持多种数据库&#xff0c;除了和DotProject的功能大致相当外&#xff0c;还有不少自己独特的功能&#xff0…

swagger2maven依赖_Maven + SpringMVC项目集成Swagger

Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法&#xff0c;参数和模型紧密集成到服务器端的代码&#xff0c;允许API来始终保持同步。作用&#x…

IDEA2019版最新配置SVN及上传教程-超详细图文详解

IDEA2019版配置SVN图文详解 1. 查看svn仓库 调出svn视图&#xff1a; 连接svn服务器&#xff1a; 连接后效果如下&#xff1a; 补充:如果输入正确的连接地址后出现错误—系统找不到指定的文件 请到设置中检查(File | Settings | Version Control | Subversion)SVC客户端路径…

dubbo:reference、dubbo:service和@Service、@Reference使用情况

以前在同一模块中Spring依赖注入&#xff0c;可以通过Service和Autowired Dubbo是远程服务调用&#xff0c;消费方需要注入提供方定义的接口实例&#xff0c;可以通过xml配置 dubbo:reference、dubbo:service <dubbo:service interface"fei.CustomerServices" …

SSM+Maven+Dubbo+Zookeeper简单项目实战以及易错注意点

最近为了熟悉Dubbo远程过程调用架构的使用&#xff0c;并结合SSMMaven整合了简单的一套项目实战 直接看项目结构图 各模块介绍 dubbo-common&#xff1a;存放项目需要的公众类&#xff0c;像查询模型、数据库实体模型等 dubbo-config&#xff1a;存放项目所需的公众配置文件&…

c++二叉树的层序遍历_leetcode 103. 二叉树的锯齿形层序遍历

按层次遍历&#xff0c;记录下对应节点的val和所在层&#xff0c;然后经过一定变换得到输出。python代码如下&#xff1a;# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val x# self.left None# …

TCP和UDP的区别(Socket)

TCP和UDP区别 TCP和UDP编程区别 TCP编程的服务器端一般步骤是&#xff1a;   1、创建一个socket&#xff0c;用函数socket()&#xff1b;   2、设置socket属性&#xff0c;用函数setsockopt(); * 可选   3、绑定IP地址、端口等信息到socket上&#xff0c;用函数bind(); …