热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Composer:php依赖管理工具

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Composer:php依赖管理工具相关的知识,希望对你有一定的参考价值。原始时代

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Composer : php依赖管理工具相关的知识,希望对你有一定的参考价值。



原始时代

我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处了,更快更不容易出错,当时也没有github这么好的社区工具了

总结如下

  • 代码混乱

  • 规范不统一

  • 没有后续统一更新等管理

Composer侠应运而生

composer直到如今 已有5个年头了,也是直到今年才有了第一个稳定版本1.0,以前都是alpha版本了,其实composer的发展 也和 PHP-FIG (后续会专门解释的)的发展有很大关系


composer是php新时代的依赖管理利器,就像python的pip,nodejs的npm,Javascript的bower等。你可以在自己的项目申明所依赖的外部库,composer可以帮你安装这些

composer解决如下问题

  • 你有一个项目需要依赖若干个库

  • 其中一个库依赖其他库

  • 找出你需要的版本进行安装


安装Composer

要求

composer 要求 php 不低于 5.3.2+

命令

curl -sS https://getcomposer.org/installer | php


过程如下


$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading 1.2.1...
Composer successfully installed to: /home/www/php/test/helloworld/composer.phar
Use it: php composer.phar
$ ll
-rwxr-xr-x 1 501 dialout 1704783 Oct 10 23:20 composer.phar*


可以看到执行上述命令之后 会将composer.phar文件下载在当前目录。phar是php的压缩格式,可以直接在命令行运行该文件

全局安装命令

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

Composer基本使用

composer.json

要在你的项目和库使用composer,那么composer.json就是必要文件,可以自行新建。内容是JSON格式非常容易编写

配置国内镜像源

将如下代码也放在composer.json中去

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

申明依赖 require

例如我的项目依赖phpexcel,申明如下

{
  "require":{
    "phpoffice/phpexcel": "1.8.0"
  }
}


把上面两步代码合并起来,composer代码如下

{
  "require":{
    "phpoffice/phpexcel": "1.8.0"
  },
  "repositories": {
    "packagist": {
      "type": "composer",
      "url": "https://packagist.phpcomposer.com"
    }
  }
}

安装依赖

php composer.phar install

使用国内镜像源安装很快的(会自动生成一个autoload.php文件),安装完结构如下

$ tree -L 2
.
|-- composer.json
|-- composer.lock
|-- composer.phar
|-- index.php
`-- vendor
    |-- autoload.php
    |-- composer
    `-- phpoffice

自动加载

在index.php加入一行 代码就可以直接使用库了

require 'vendor/autoload.php'

Composer高级特性

更新单个库

有时间想更新某一个库,不想更新依赖,很简单

php composer.phar update phpoffice/phpexcel

直接安装库 不用编辑composer.json

你要是觉得没添加一个库就要修改composer.json麻烦,可以直接使用 require 命令

php composer.phar require monolog/monolog  #日志操作库


结构如下


|-- composer.json
|-- composer.lock
|-- composer.phar
|-- index.php
|-- README.MD
`-- vendor
    |-- autoload.php
    |-- composer
    |-- monolog
    |-- phpoffice
    `-- psr

生产环境优化

当你把项目部署到线上环境,不要忘了执行如下代码优化自动加载,可以提高20%左右的性能

php composer.phar dump-autoload --optimize


参考资源

博文演示代码: https://github.com/apanly/composer_helloworld 

Pachagist官网地址:https://packagist.org/ 

PHP-FIG: http://www.php-fig.org/

Composer中文网: http://www.phpcomposer.com/ 

Json官网:http://json.org/ 



原文地址:Composer : php依赖管理工具
标签:composer   psr   require   install   pear   phpexcel   

智能推荐

  • Squid 操作实践
  • 捕获JS 错误日志
  • phpstorm9 无法输入中文逗号句号等符号了,怎么破?
  • 【运维工具】logrotate 日志管理神器
  • 【No.2 Ionic】Android打包

推荐阅读
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 探索将Python Spyder与GitHub连接的方法,了解当前的技术状态及未来可能的发展方向。 ... [详细]
  • 本文档提供了在Windows 10操作系统中安装Python 3及Scrapy框架的完整指南,包括必要的依赖库如wheel、lxml、pyOpenSSL、Twisted和pywin32的安装方法。 ... [详细]
  • 利用Docker部署JupyterHub以支持Python协同开发
    本文介绍了如何通过Docker容器化技术安装和配置JupyterHub,以实现多用户的Python开发环境,特别适合团队协作场景。 ... [详细]
  • 页面预渲染适用于主要包含静态内容的页面。对于依赖大量API调用的动态页面,建议采用SSR(服务器端渲染),如Nuxt等框架。更多优化策略可参见:https://github.com/HaoChuan9421/vue-cli3-optimization ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 深入理解iOS中的链式编程:以Masonry为例
    本文通过介绍Masonry这一轻量级布局框架,探讨链式编程在iOS开发中的应用。Masonry不仅简化了Auto Layout的使用,还提高了代码的可读性和维护性。 ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 基于SSM框架的在线考试系统:随机组卷功能详解
    本文深入探讨了基于SSM(Spring, Spring MVC, MyBatis)框架构建的在线考试系统中,随机组卷功能的设计与实现方法。 ... [详细]
author-avatar
萱筱璧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有