Composer - 学习/实践

1.应用场景

熟练使用composer快速构建php web应用, 弄秦楚composer的基本工作原理.

2.学习/操作

PHP Composer

文档

php三种工具pecl pear composer的区别_会飞的鱼的博客-CSDN博客_php-pear

Composer 2.0 is now available! // Composer 2.0 is now available!

介绍

A multi-framework Composer library installer

即 支持多个框架的安装库管理器/包 [本身也是一个包, 归档文件]

Composer最主要的两个作用:

处理依赖 与 自动加载。

总结说:

不论是windows系统还是类unix系统, 安装与执行的步骤原理都是相同的, 而且安装就是一步, 执行也是一步. [不少文章中说弄得好几步骤, 把人都整得不清不楚]

但是还是要说一句:

composer本身的机制原理还是有点复杂的, 如果想弄清楚, 仔细研读如下的两个url的内容即可 [起始很多php开发人员对composer的工作原理, 并不是很清楚, 秉持日常开发中会用就行.]

Composer

Composer 中文文档 | Composer 中文网

1. 安装 [一步, 下载即安装]

1. 下载composer.phar归档文件 // 下载完, 就是安装完.[随便找个目录记录下载下来, 然后记住这个位置即可.

解释:

composer.phar 本质上就是php文件.

里面是php代码, 所以一定需要php /path/to/composer.phar进行解释执行,才能发挥作用.

也就是说, 如果没有安装php环境, composer是一定不会发作用的.

composer.phar 文件 下载连接:

Composer // 找一个你要的版本, 下载即可

当前最新版本: // 直接修改中间的版本号, 就是不同的版本资源, 当然要确认是不是一定有

https://getcomposer.org/download/2.5.8/composer.phar

既然知道了url, 那么问题就来了...

下载方式有多种: 任你选

1. 浏览器直接打开url, 就会下载, 只不过文件名叫做installer

2. curl下载

3. wget下载

4. 通过安装程序的方式下载, 比如 https://getcomposer.org/installer

        - 下载完安装包, 然后执行安装包, php installer

        - 会自动生成composer.phar

        - 安装程序脚本将简单地检查一些php.ini设置,如果设置不正确会警告您,

        - 然后下载composer.phar当前目录中的最新版本

修改文件名的方式也有多种: 任你选

1. 直接可视化操作, 重命名

2. 命令行下重命名

3. 在下载的时, 就进行重命名

只不过这些方式本质上跟composer关系都不大, 不是主要关注对象.

2. 执行 [也是一步]

php /path/to/composer.phar 开始执行

比如: 

cd /path/to/app_path

php /path/to/composer.phar install // 安装项目依赖

每次执行都是: 

php /path/to/composer.pha 开头

到这里, 不论windows还是类unix系统, 都可以工作了.

下面这个文章说得还是挺简洁的, 只看这个就行.

总结:

推荐方式, 直接命令行下载安装 composer,phar

然后添加到环境变量已配置的目录下即可.  // 都采用了全局安装[全局安装与局部安装本质没什么区别, 只是给了默认查询可能的执行路径]

windows // macOs & linux的命令行下载方式, 也同样可以适用于windows, 只不过sudo mv composer.phar /usr/local/bin/composer 就不对了, 改成[这里使用git bash, 需要安装] mv composer.phar /c/bin/composer 

cd C:\bin
php -r "readfile('https://getcomposer.org/installer');" | php

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

macOS & linux

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer

检查

composer -V

如果你还有一些疑问, 那么直接去看下面的 问题/补充

二. 操作命令

1.composer查看全局设置
composer config -gl

仓库

全局目录

C:\Users\geili\AppData\Roaming\Composer  //该目录似乎并不能考鼠标点击进去

2.设置composer镜像为国内镜像

composer config -g repo.packagist composer https://packagist.phpcomposer.com
如果崩溃,可用下面://建议使用, 阿里镜像同步时间为2s  强烈推荐,速度真的不是快的一点半点儿
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer   

阿里镜像

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

参考:阿里巴巴开源镜像提供的 packagist 镜像服务 | Laravel | Laravel China 社区

更多信息: 阿里云Composer镜像站-阿里云开发者社区-阿里云官网开发者社区_云计算社区

简要信息如下

全局配置(推荐)

  • 所有项目都会使用该镜像地址:

    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

  • 取消配置:

    composer config -g --unset repos.packagist

项目配置

  • 仅修改当前工程配置,仅当前工程可使用该镜像地址:

    composer config repo.packagist composer https://mirrors.aliyun.com/composer/

  • 取消配置:

    composer config --unset repos.packagist

调试

  • composer 命令增加 -vvv 可输出详细的信息,命令如下:

    composer -vvv require alibabacloud/sdk

镜像管理器:
GitHub - slince/composer-registry-manager: Composer registry manager that help to easily switch to the composer repository you want.

3.composer 自身更新版本  // 保持composer处于最新稳定版本

composer self-update

2.3 详解composer的自动加载机制

详解composer的自动加载机制_zhang197093的博客-CSDN博客_composer自动加载

2.4 如何自定义编写package[公有/私有包], 并应用到自己的项目中

公有包:

在packagist 注册, 同时在将代码上传到github上公有仓库

私有包:

在packagist 是否需要注册?TBD.... 同时在将代码上传到github上公有仓库

同时提交记录打的tag也是有用处的==>为了指定依赖包的时候,指定版本.

更多信息借鉴: composer.json 架构 | Composer 中文文档 | Composer 中文网

借鉴:

https://github.com/ningxiaofa/Ranking-of-Chinese-Internet-Corp

https://packagist.org/   输入 zhyee/rrclic 回车

2.5 升级composer 版本 // 这里升级到2.x --- 20210619

后续补充

...

3.问题/补充

1. 安装和执行composer的疑问: 以下问答来自于chatgpt

macOS / Linux 中 mv composer.phar /usr/local/bin/composer
chmod u+x /usr/local/bin/composer 为什么可以直接执行composer -V 

在Linux和类Unix系统中,当你执行一个命令时,shell会按照一定的规则去查找这个命令的可执行文件。其中一个规则就是查找环境变量 PATH 中指定的目录,如果在其中找到了该命令的可执行文件,就可以直接执行。

在这里,/usr/local/bin 是一个在环境变量 PATH 中预先配置好的目录,因此当你执行 composer -V 命令时,shell 会在 /usr/local/bin 目录下查找可执行文件 composer,并直接执行它。而 chmod u+x 命令则是将 composer 可执行文件添加了用户执行权限,使得用户可以直接执行该文件。

在执行 mv composer.phar /usr/local/bin/composer 命令时,将 composer.phar 文件移动到 /usr/local/bin 目录下,并命名为 composer,这样就可以在 PATH 中找到 composer 可执行文件了。

composer虽然给了可执行权限 但是文件不是php脚本吗 没有指定php composer 为什么也能执行?

这是因为在 Linux 和类 Unix 系统中,如果一个文件的开头指定了它的解释器(interpreter),那么系统在执行该文件时会使用该解释器来解析并执行该文件。这个指定解释器的方法就是在文件的第一行加上 #!(称为 shebang),后面跟上该文件的解释器的路径。

在 Composer 的可执行文件中,第一行就是以 #! 开头并指定了 PHP 解释器的路径。例如,当前版本的 Composer 可执行文件的第一行是:

#!/usr/bin/env php

这意味着,当你在终端中运行 composer 命令时,实际上是在执行一个 PHP 脚本,由 PHP 解释器来解析并执行该脚本。因此,给 Composer 可执行文件添加可执行权限之后,你可以直接在终端中运行 composer 命令,并且系统会使用 PHP 解释器来执行该文件。

#!/usr/bin/env php 详细解释

#!/usr/bin/env php 是一个指定解释器的 shebang,它告诉系统,该文件应该使用哪个解释器来执行。具体来说:

  • #! 是 shebang 的开头标志。
  • /usr/bin/env 是一个在 Unix/Linux 系统中常用的工具,它可以在环境变量 PATH 中查找指定的可执行文件,并执行它。
  • php 是要执行的解释器,即 PHP 解释器。

因此,当系统执行一个以 #!/usr/bin/env php 开头的文件时,它会在环境变量 PATH 中查找 php 可执行文件的路径,并使用该路径的解释器来执行该文件。这种方式可以确保在不同的系统中都能正确地找到 PHP 解释器,并且可以避免在不同的系统中由于 PHP 解释器的路径不同而导致的问题。

需要注意的是,这种指定解释器的方式只在 Unix/Linux 系统中有效,在 Windows 系统中则无法使用。在 Windows 系统中,可以使用类似 php.exe 这样的可执行文件来指定解释器。

"这种指定解释器的方式只在 Unix/Linux 系统中有效,在 Windows 系统中则无法使用。在 Windows 系统中,可以使用类似 php.exe 这样的可执行文件来指定解释器。" 但是我在cmd中执行一切正常

确实,在 Windows 系统的命令提示符(cmd.exe)或 PowerShell 中,也可以使用类似的 shebang 来指定脚本的解释器。不过,这并不是 Windows 系统原生支持的功能,而是由一些第三方工具提供的支持,例如 CgyWin 和 Git Bash 等工具。

具体来说,在 Windows 系统中,如果想要使用 shebang 指定解释器,可以在脚本的第一行加上类似于以下的内容:

#!C:\path\to\php.exe

其中,C:\path\to\php.exe 是 PHP 解释器的路径。这样,在使用支持 shebang 的命令行工具(如 CgyWin 和 Git Bash)执行该脚本时,系统会自动使用指定的 PHP 解释器来解析和执行该脚本。

需要注意的是,由于 Windows 系统的文件系统和路径分隔符与 Unix/Linux 系统有所不同,因此在使用 shebang 指定解释器时需要注意路径的格式和分隔符。

"在 composer.phar 同级目录下新建文件 composer.bat :" 为什么要新建composer.bat 作用是什么?

在 Windows 系统中,默认情况下是无法直接执行 .phar 文件的,因为 Windows 不知道如何处理这种文件格式。因此,如果你想要在 Windows 系统中使用 Composer,就需要对 .phar 文件进行一些额外的配置。

新建一个批处理文件(.bat 文件),可以让 Windows 系统通过该文件启动 .phar 文件。具体来说,你可以在 .bat 文件中写入以下内容:

Copy

@echo off
php "%~dp0composer.phar" %*

这个 .bat 文件的作用是:

  1. @echo off:关闭命令行窗口的回显功能,使输出更整洁。
  2. php "%~dp0composer.phar" %*:使用 PHP 解释器来解析并执行 composer.phar 文件。%~dp0 表示当前 .bat 文件所在的目录,%* 表示将 .bat 文件后面的所有参数都传递给 composer.phar 文件。

这样,当你在 Windows 系统中运行 composer.bat 文件时,实际上是在使用 PHP 解释器来执行 composer.phar 文件,从而实现了在 Windows 系统中使用 Composer 的功能。

Windows下执行composer 默认是执行composer.bat ?

是的,当你在 Windows 系统中直接运行 composer 命令时,实际上是在执行 composer.bat 文件。

这是因为在 Windows 系统中,如果同时存在同名的 .bat 和 .exe 文件,系统会优先执行 .bat 文件。

在安装 Composer 时,会将 composer.bat 文件一同安装到系统的环境变量 PATH 中,这样你就可以在任何目录中直接运行 composer 命令了。

当你执行 composer 命令时,Windows 系统会在环境变量 PATH 中查找可执行文件,并优先选择同名的 .bat 文件来执行。因此,在 Windows 系统中,composer.bat 文件起到了类似于 Unix/Linux 系统中的 shebang 的作用。

看到这里, 相信也基本上能解答关于安装和执行的大多数问题了.

--------------------------------- 第一个问题结束-------------------------

2. 执行composer install 不成功 

原因和解决方式[可能且有时]需要设置代理方可执行: composer install
Windows下通过设置环境变量 http_proxy  http://web-proxy.xxx.com:8080/ //[为所在网络的代理地址]

验证:
composer search php
查看是否有返回结果

补充:

很多软件管理工具, 功能/命令大致相同 , 如: centOS yum也有search 命令 . 即 yum search php //查看yum源是否有php安装包

3. 关于执行composer install时,背后的过程

注意: 在安装 Yii 期间,Composer 需要从 Github API 请求很多信息。 请求的数量取决于您的应用程序所依赖的数量, 并可能大于 Github API 速率限制。如果达到此限制,Composer 可能会要求您提供 Github 登录凭据以获取 Github API 访问令牌。在快速连接上,您可能比 Composer 能够处理的时间早, 因此我们建议您在安装 Yii 之前配置访问令牌。 有关如何执行此操作的说明,请参阅 Composer documentation about Github API tokens。

后续补充

...

后续补充

...

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

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

相关文章

解读最佳实践:倚天 710 ARM 芯片的 Python+AI 算力优化 | 龙蜥技术

编者按:在刚刚结束的 PyCon China 2022 大会上,龙蜥社区开发者朱宏林分享了主题为《ARM 芯片的 PythonAI 算力优化》的技术演讲。本次演讲,作者将向大家介绍他们在倚天 710 ARM 芯片上开展的 PythonAI 优化工作,以及在 ARM 云平台…

解读最佳实践:倚天710 ARM芯片的 Python+AI 算力优化

编者按:在刚刚结束的 PyCon China 2022 大会上,龙蜥社区开发者朱宏林分享了主题为《ARM 芯片的 PythonAI 算力优化》的技术演讲。本次演讲,作者将向大家介绍他们在倚天 710 ARM 芯片上开展的 PythonAI 优化工作,以及在 ARM 云平台…

论文笔记:AugGPT: Leveraging ChatGPT for Text Data Augmentation

AugGPT:利用 ChatGPT 进行文本数据增强 摘要1 介绍2 相关工作2.1 数据增强2.2 小样本学习2.3 超大型语言模型2.4 ChatGPT:现在与未来 3 数据集3.1 亚马逊数据集3.2 症状数据集3.3 PubMed20k数据集 4 方法4.2 使用 ChatGPT 进行数据增强4.3 小样本文本分类…

好用的文献阅读插件(Easy Scholar、EasyPubMedicine、Sci-Hub X Now!)

目录 一、Easy Scholar 二、EasyPubMedicine 一、Easy Scholar Easy Scholar:自动显示期刊等级,帮助筛选优质论文。 安装: 点击浏览器右上角的“。。。”,选择“扩展”。 点击打开加载项 在浏览器的扩展商店中搜索“easy sch…

Zotero 6 文献管理 + 内置PDF阅读器 + 选中翻译

本来想叫《还在用知云?zotero 6内置PDF阅读器了 还带翻译插件的!》,想了想还是算了,不要做标题党,回归我朴实无华的标题吧。 如果你会用zotero只是来看翻译功能的,那你继续往下看。如果你还不会用zotero&a…

[科研神器]如何让ChatPDF帮你日读文献300篇

今天介绍一个新的工具ChatPDF,简直是读文献的绝对生产力啊。 我们要做的就是把PDF文件上传给它,让它帮你读,它会在几分钟内概述和理解整个文档你只需要提问就可以,而且支持中文。 ChatPDF的网址是:https://www.chatp…

【3款文献阅读的插件】

目录 01 easy Scholar 02 EasyPubMed 03 Sci-Hub X Now! 04 总结 重要事情说三遍:这个不涉及翻墙,这个不涉及翻墙,这个不涉及翻墙!!! 01 easy Scholar 点击下载文件,修改后缀名为zip文件&a…

文献阅读软件

文献阅读软件 上次对文献管理软件做了介绍,接下来对文献阅读及笔记整理软件进行介绍。 文献的基本格式是PDF,因此文献阅读软件的基本就是PDF阅读器,知网文献有专门的格式,没什么额外选择。因此,本文主要介绍的是PDF的…

文献阅读神器 ReadPaper

在以前我阅读文献的都是用的WPS,很多小伙伴用知云,但是今天我开始用ReadPaper了😄 推荐理由: 1.直接跳转参考文献 在一篇论文中参考文献,ReadPaper可以直接跳转阅读,不需要再去复制论文名字-搜索了。 就…

Python 带你花式过情人节

阅读文本大概需要 5 分钟。 一年 N 度的情人节又又又又又到了!有对象的人在享受着甜蜜的烦恼:今天 ta 会送我什么礼物?今天晚上去哪里度过?今天去哪里一起吃饭过节呢?啊!ta 竟然送我这么贵的礼物&#xff0…

这个情人节如何过得不一样?快来看哪个国家才是全球浪漫目的地 | 美通社头条...

美通社消息:这个情人节如何过得不一样?爱彼迎近期发布全球浪漫目的地,邀请情侣们住进令人怦然心动的房源,奔赴一场倾心已久的旅程。爱彼迎数据显示,泰国、马来西亚、菲律宾、巴西、南非等目的地,满足了情侣…

得分逼近ChatGPT,人类难以分辨!开源「原驼」爆火,iPhone都能微调大模型了

梦晨 发自 凹非寺来源 | 量子位 QbitAI 自动测试分数达到ChatGPT的99.3%,人类难以分辨两者的回答…… 这是开源大模型最新成果,来自羊驼家族的又一重磅成员——华盛顿大学原驼(Guanaco)。 更关键的是,与原驼一起提出的…

分享基个珍藏已久的良心网站,个个都很好用

推荐一:Poki 这几天4399要实名制了。玩起来挺麻烦的,还是换成Poki吧。也是一个收集游戏的网游网站,种类很多,有军事游戏,有动作游戏,有冒险游戏等等,我最喜欢的是公主换装游戏。 感觉瞬间回到…

GPT 4.0 你知道的和你不知道的?

GPT 4.0 人工智能聊天机器人 介绍GPT 4.0之前,先给大家介绍一下整理的一个类ChatGPT相关的工具,有可以总结论文的、微软作图的、反ChatGPT检测的、数据标注的等等工具,感兴趣的小伙伴可以访问:github链接 言归正传 今天我们主要…

【OpenAI 多模态预训练】VideoGPT?微软透露GPT-4或将在下周发布

【多模态预训练】VideoGPT?微软透露GPT-4或将在下周发布 先让我猜个名字,VideoGPT? 太绝了!看完ChatGPT之后就感觉OpenAI正在做多模态的预训练语言模型。万万没想到来的这么快。据介绍,GPT-4或将为多模态大模型&#…

趣链科技获数亿元C轮融资,晋升区块链核心技术独角兽

近日,区块链明星企业趣链科技官方宣布完成数亿元C轮融资,本轮融资由知名基金易方达资本领投、龚虹嘉带领的银宏基金跟投。相关报道显示,趣链科技这笔融资是今年以来国内区块链企业融资额最高的一起,公司整体估值达到10亿美元&…

Ayar Labs 在 C 轮融资中筹集了 1.3 亿美元

Boardman Bay Capital Management 领投,惠普企业和 NVIDIA 共同推动 Ayar 光学 I/O 的商业化 Ayar Labs 已获得由 Boardman Bay Capital Management 牵头的 1.3 亿美元额外融资。这笔资金用于推动 Ayar 光学 I/O 解决方案的商业化,该解决方案基于专利方…

Anthropic完成4.5亿美元C系列轮融资:Spark Capital领投

雷递网 乐天 5月28日 生成式AI公司Anthropic日前完成C系列轮4.5亿美元融资,由Spark Capital领投,估值可能超过41亿美元。 Anthropic其他投资方包括谷歌、Salesforce、Zoom、Sound Ventures、Menlo Ventures。 Anthropic首席执行官Dario Amodei说&#xf…

C轮累积融资1亿美金 禾多科技如何靠自我造血能力赢得资本青睐?

自动驾驶当前在全球范围内受到广泛关注,是汽车行业正在集中力量攻克的新领域。据英特尔预计,2050年仅自动驾驶汽车的市场规模将达到7万亿美元。引得资本和科技巨头们纷纷“下注”。 近日,全栈自动驾驶科技公司禾多科技宣布,已完成…

神策数据获 3000 万美元 C+ 轮融资,A、B、C 轮资方全部跟投

5 月 19 日,神策数据 5 周年产品暨融资线上发布会正式召开。神策数据创始人 & CEO 桑文锋在发布会上宣布重磅融资信息,即获得由襄禾资本领投,晨兴资本、DCM 资本、华平投资、红杉资本中国基金、线性资本、明势资本跟投的共计 3000 万美元…