iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >composer怎么安装
  • 261
分享到

composer怎么安装

2023-06-14 19:06:32 261人浏览 薄情痞子
摘要

小编给大家分享一下composer怎么安装,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!关于composer一些学习和理解Composer 不是一个包管理器。是的,它涉及 "packages" 和 &q

小编给大家分享一下composer怎么安装,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

关于composer一些学习和理解

Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。

这种想法并不新鲜,Composer 受到了 node's npm 和 ruby's bundler 的强烈启发。而当时 PHP 下并没有类似的工具

Composer 将这样为你解决问题:

  • 你有一个项目依赖于若干个库。

  • 其中一些库依赖于其他库。

  • 你声明你所依赖的东西。

  • Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。

因为laravel是使用composer管理的,所以一切以laravel为基础。

下载安装composer

这里补充的是:

  1. 因为某些原因,访问国外的composer资源网站很慢,导致composer install或者update的时候经常连接超时而出错,所以改为中国镜像

    全局:    composer config -g repo.packaGISt composer https://packagist.phpcomposer.com        局部项目(需要在项目当前目录下执行):    composer config repo.packagist composer Https://packagist.phpcomposer.com

执行完命令后会在composer.JSON文件里面增加这段,这样就代表添加中国镜像成功了,以后执行composer install或者update之类的命令的时候就会优先使用这个镜像

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

composer selfupdate来保持composer工具本身的版本更新

关于composer.json文件

{    "name": "laravel/laravel",    "description": "The Laravel Framework.",    "keyWords": ["framework", "laravel"],    "license": "MIT",    "type": "project",    "require": {  //这里是告诉composer必须要安装的项目,相当于生产环境        "php": ">=5.5.9",        "laravel/framework": "5.2.*",  //require 需要一个 包名称,这个就是包名称        "laravelcollective/html": "5.2.*",        "yuanchao/laravel-5-markdown-editor": "dev-master"    },    "require-dev": {  //这个是开发需要安装的项目,相当于开发环境,可以通过-no-dev来取消安装这个项目里面的包        "fzaninotto/faker": "~1.4",        "mockery/mockery": "0.9.*",        "phpunit/phpunit": "~4.0",        "symfony/CSS-selector": "2.8.*|3.0.*",        "symfony/dom-crawler": "2.8.*|3.0.*"    },    "autoload": {        "claSSMap": [            "database"        ],        "psr-4": {            "App\\": "app/"        }    },    "autoload-dev": {        "classmap": [            "tests/TestCase.php"        ]    },    "scripts": {        "post-root-package-install": [            "php -r \"copy('.env.example', '.env');\""        ],        "post-create-project-cmd": [            "php artisan key:generate"        ],        "post-install-cmd": [            "Illuminate\\Foundation\\ComposerScripts::postInstall",            "php artisan optimize"        ],        "post-update-cmd": [            "Illuminate\\Foundation\\ComposerScripts::postUpdate",            "php artisan optimize"        ]    },    "config": {        "preferred-install": "dist"    }}

包名称的版本

确切的版本号--------1.0.2---------你可以指定包的确切版本。范围-------->=1.0 >=1.0,<2.0 >=1.0,<1.1|>=1.2--------通过使用比较操作符可以指定有效的版本范围。 有效的运算符:>、>=、<、<=、!=。你可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理。一个管道符号|将作为逻辑OR处理。 AND 的优先级高于 OR。通配符--------1.0.*--------你可以使用通配符*来指定一种模式。1.0.*与>=1.0,<1.1是等效的。赋值运算符--------~1.2--------这对于遵循语义化版本号的项目非常有用。~1.2相当于>=1.2,<2.0。

我们需要重点关注通配符和波浪符,通配符很好理解,波浪符有点拗口,~ 最好用例子来解释: ~1.2 相当于 >=1.2,<2.0(标记你所依赖的最低版本),而 ~1.2.3 相当于 >=1.2.3,<1.3。(指定最低版本,但允许版本号的最后一位数字上升。)语义化很难懂,但是直接看例子是可以知道怎么用的

基本用法

composer是通过读取composer.json和composer.lock文件来进行安装包的

在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将定改项目的特定版本。因为 install 命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json 文件中的定义)。如果不存在 composer.lock 文件,Composer 将读取 composer.json 并创建锁文件。

一般的使用用法有:

  1. composer install  (install 命令从当前目录读取 composer.json 文件,处理了依赖关系,并把其安装到 vendor 目录下。)

  2. composer install XXXX  (这是单独安装某些包的时候使用)

  3. composer update (为了获取依赖的最新版本,并且升级 composer.lock 文件,)

  4. composer update XXX (类似)

    --prefer-source: 下载包的方式有两种: source 和 dist。对于稳定版本 composer 将默认使用 dist 方式。而 source 表示版本控制源 。如果 --prefer-source 是被启用的,composer 将从 source 安装(如果有的话)。如果想要使用一个 bugfix 到你的项目,这是非常有用的。并且可以直接从本地的版本库直接获取依赖关系。--prefer-dist: 与 --prefer-source 相反,composer 将尽可能的从 dist 获取,这将大幅度的加快在 build servers 上的安装。这也是一个回避 git 问题的途径,如果你不清楚如何正确的设置。--dry-run: 如果你只是想演示而并非实际安装一个包,你可以运行 --dry-run 命令,它将模拟安装并显示将会发生什么。--dev: 安装 require-dev 字段中列出的包(这是一个默认值)。--no-dev: 跳过 require-dev 字段中列出的包。--no-scripts: 跳过 composer.json 文件中定义的脚本。--no-plugins: 关闭 plugins。--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。--optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
  5. composer require(require 命令增加新的依赖包到当前目录的 composer.json 文件中。但并不即可更新)

  6. composer dump-autoload(某些情况下你需要更新 autoloader,例如在你的包中加入了一个新的类。)

自动加载

composer的自动加载会生产这个文件vendor/autoload.php,然后调用这个文件就能够获得文件里面的类的自动加载

自动加载只支持 PSR-4和 PSR-0两种命名方式

Under the psr-4 key you define a mapping from namespaces to paths, relative to the package root. {    "autoload": {        "psr-4": {            "Monolog\\": "src/",  //这里写法其实差不多,但是展现的意义并不相同,psr4会设定一个命名空间作为包的根目录,举例这行的意思是src/目录映射成为Monolog\\根目录,那么调用这个包的时候写Monolog\Bar\Baz,其实自动加载就会去这里src/Bar/Baz.php找类文件,然后加载            "Vendor\\Namespace\\": ""        }    }}在 psr-0 key 下你定义了一个命名空间到实际路径的映射(相对于包的根目录){    "autoload": {        "psr-0": {            "Monolog\\": "src/",  //这里的意思是src/目录映射为Monolog\\,如果要调用Monolog\Bar\Baz,那么自动加载就会去src/Monolog/Bar/Baz.php,然后加载            "Vendor\\Namespace\\": "src/",            "Vendor_Namespace_": "src/"        }    }}

laravel的自动加载会多了一些东西

vendor/autoload.php<?php// autoload.php @generated by Composerrequire_once __DIR__ . '/composer' . '/autoload_real.php';  //会再次加载autoload_real.php这个文件,然后获取getLoader,不过总的过程是一样的。return ComposerAutoloaderInitf1f9a2cafe15aa5cd52ec13394a5f5fb::getLoader();

看完了这篇文章,相信你对“composer怎么安装”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: composer怎么安装

本文链接: https://www.lsjlt.com/news/274551.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ 生态系统中流行库和框架的贡献指南
    作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
    99+
    2024-05-14
    框架 c++ 流行库 git
  • C++ 生态系统中流行库和框架的社区支持情况
    c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
    99+
    2024-05-14
    生态系统 社区支持 c++ overflow 标准库
  • c++中if elseif使用规则
    c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
    99+
    2024-05-14
    c++
  • c++中的继承怎么写
    继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
    99+
    2024-05-14
    c++
  • c++中如何使用类和对象掌握目标
    在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
    99+
    2024-05-14
    c++
  • c++中优先级是什么意思
    c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
    99+
    2024-05-14
    c++
  • c++中a+是什么意思
    c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
    99+
    2024-05-14
    c++
  • c++中a.b什么意思
    c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
    99+
    2024-05-14
    c++
  • C++ 并发编程库的优缺点
    c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
    99+
    2024-05-14
    c++ 并发编程
  • 如何在 Golang 中备份数据库?
    在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
    99+
    2024-05-14
    golang 数据库备份 mysql git 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作