Composer使用_composer package search-程序员宅基地

技术标签: composer  杂项  

原文:http://www.cnblogs.com/52fhy/p/5246013.html#3876041

是什么

如果你知道yumapt-getnpmbower等命令中的一种或者多种,那么,你也能很快知道composer是什么了。没错,它就是PHP里快速安装类库的。平时,我们安装一个PHP类库,需要搜索->下载;使用composer,我们只要知道包名,直接composer insatll就可以了。

PHP 语言本身就带有强大的网络功能、文件管理功能和丰富的系统 API,Composer 也只是一段 PHP 脚本而已。

引自Composer中文网的描述:

是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

作用

安装PHP包、依赖库。

示例:

$ composer require monolog/monolog

这是在安装monolog库。

$ composer create-project laravel/laravel learnlaravel5 5.0.22

这是在安装laravel框架并创建项目。

YII框架也是通过composer安装的。

为什么用composer

通过过composer,我们可以使用大量的第三方库,而无需自己造轮子。优秀项目示例:

  • overtrue/wechat 让微信开发更简单!
  • catfan/medoo 一款ORM框架
  • monolog/monolog 日志记录
  • hprose/hprose RPC框架

你可以在 https://packagist.org/ 找到你需要的库。甚至你可以提交自己写的优秀的库到该平台里供大家使用。

如果不会composer,流行的laravelyii框架安装都成为问题,更不用谈学习了;很多优秀的轮子你无法使用。所以,推荐phper必须学会composer。

安装Composer

首先得安装Composer命令行工具。由于国内互联网某种神秘的力量让Composer变得越来越不稳定,可能导致安装不了。如果无法按步骤安装,本小节最后我会提供国内下载地址。

脚本自动安装

下面是安装命令(来自https://getcomposer.org/download/):

php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php

php -r "if (hash('SHA384', file_get_contents('composer-setup.php')) === 'fd26ce67e3b237fffd5e5544b45b0d92c41a4afe3e3f778e942e43ce6be197b9cdc7c251dcde6e2a52297ea269370680') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); }"

php composer-setup.php

php -r "unlink('composer-setup.php');"

按顺序执行即可。安装好后提示:

All settings correct for using Composer
Downloading...

Composer successfully installed to: /root/composer/composer.phar
Use it: php composer.phar

操作执行结束,会在当前目录下生成composer.phar文件。

在Linux里,composer.phar是可执行程序。

例如,我们可以使用php composer.phar update执行更新操作。

全局安装:

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

之后,就可以直接使用composer install安装包了。不过通常情况下只需将composer.phar的位置加入到PATH就可以,不一定要全局安装。

手动安装

首先去https://getcomposer.org/download/下载https://getcomposer.org/download/1.2.0/composer.phar,建议下载最新版本的:
Latest Snapshot
1.2.0 (2016-07-18)
1.2.0-RC (2016-07-04)
1.1.3 (2016-06-26)
1.1.2 (2016-05-31)

下载后放到php安装位置里,然后

Linux:

cp composer.phar /usr/bin/composer
chmod +x /usr/bin/composer

Windows:
新建:

composer.bat #windowscomposer #git-bash

composer.bat

@ECHO OFF
php "%~dp0composer.phar" %*

composer

#!/bin/sh

dir=$(d=$(dirname "$0"); cd "$d" && pwd)

# see if we are running in cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
    
    # cygwin paths start with /cygdrive/ which will break windows PHP,
    # so we need to translate the dir path to windows format. However
    # we could be using cygwin PHP which does not require this, so we
    # test if the path to PHP starts with /cygdrive/ rather than /usr/bin.
    if [[ $(which php) == /cygdrive/* ]]; then
        dir=$(cygpath -m $dir);
    fi
fi

dir=$(echo $dir | sed 's/ /\ /g')
php "${dir}/composer.phar" $*

如果上述链接下载不了,请使用: http://pan.baidu.com/s/1gfmSIbD 密码: f4vr 。

我还专门建了github仓库:https://github.com/52fhy/composer

Linux需要给composer可执行权限。之后就可以使用composer了:

$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.2.0 2016-07-19 01:28:52

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  about           Short information about Composer
  archive         Create an archive of this composer package
  browse          Opens the package's repository URL or homepage in your browser.
  clear-cache     Clears composer's internal package cache.
  clearcache      Clears composer's internal package cache.
  config          Set config options
  create-project  Create new project from a package into given directory.
  depends         Shows which packages cause the given package to be installed
  diagnose        Diagnoses the system to identify common errors.
  dump-autoload   Dumps the autoloader
  dumpautoload    Dumps the autoloader
  exec            Execute a vendored binary/script
  global          Allows running commands in the global composer dir ($COMPOSER_HOME).
  help            Displays help for a command
  home            Opens the package's repository URL or homepage in your browser.
  info            Show information about packages
  init            Creates a basic composer.json file in current directory.
  install         Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
  licenses        Show information about licenses of dependencies
  list            Lists commands
  outdated        Shows a list of installed packages that have updates available, including their latest version.
  prohibits       Shows which packages prevent the given package from being installed
  remove          Removes a package from the require or require-dev
  require         Adds required packages to your composer.json and installs them
  run-script      Run the scripts defined in composer.json.
  search          Search for packages
  self-update     Updates composer.phar to the latest version.
  selfupdate      Updates composer.phar to the latest version.
  show            Show information about packages
  status          Show a list of locally modified packages
  suggests        Show package suggestions
  update          Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file.
  validate        Validates a composer.json and composer.lock
  why             Shows which packages cause the given package to be installed
  why-not         Shows which packages prevent the given package from being installed

生成一个空的Composer项目

在合适的地方新建一个文件夹,命名为 MFFC(My First Framework based on Composer),在文件夹下新建文件 composer.json

{
  "require": {
  }
}

命令行切换到 MFFC 目录下,运行:

composer update

就会在该目录下生成一个vendor文件夹。以后所有的第三扩展包都会安装在这里。

里面的代码大家可以看看。

安装扩展包

以下以monolog为例:

声明依赖

在项目目录下创建一个composer.json文件,指明依赖,比如,你的项目依赖 monolog:

{
    "require": {
        "monolog/monolog": "1.2.*"
    }
}

如果不需要使用https,可以这么写,以解决有时候因为https造成的问题:

{
    "require": {
        "monolog/monolog": "1.2.*"
    },
    "config": {
        "secure-http": false
    }
}

安装依赖

安装依赖非常简单,只需在项目目录下运行:

composer install

如果没有全局安装的话,则运行:

php composer.phar install

更新全部的包(谨慎使用):

composer update

注意:使用composer install或者composer update命令将会更新所有的扩展包,项目中使用需谨慎!!!

若只安装指定的包推荐在命令行使用:

composer require monolog/monolog

进行安装。

如果需要指定版本:

composer require "monolog/monolog:1.2.*"

更新某个包:

composer update monolog/monolog

移除某个包:

composer remove monolog/monolog

如果手动更新了composer.json需要更新autoload:

composer dump-autoload

包版本约束

精确版本:示例: 1.0.2

范围:使用比较操作符你可以指定包的范围。这些操作符包括:>,>=,<,<=,!=。你可以定义多个范围,使用空格 或者逗号,表示逻辑上的与,使用双竖线||表示逻辑上的或。其中与的优先级会大于或。示例:

>=1.0
>=1.0 <2.0
>=1.0 <1.1 || >=1.2

范围(使用连字符):
例子:1.0 - 2.0,等同于>=1.0.0 <2.1(2.0相当于2.0.*)。

通配符:可以使用通配符去定义版本。1.0.*相当于>=1.0 <1.1
例子:1.0.*

下一个重要版本操作符:使用波浪号~。示例:
~1.2相当于>=1.2 <2.0.0,而~1.2.3相当于>=1.2.3 <1.3.0

折音号^:例如,^1.2.3相当于>=1.2.3 <2.0.0,因为在2.0版本前的版本应该都没有兼容性的问题。而对于1.0之前的版本,这种约束方式也考虑到了安全问题,例如^0.3会被当作>=0.3.0 <0.4.0对待。

自动加载

Composer提供了自动加载的特性,只需在你的代码的初始化部分中加入下面一行:

require 'vendor/autoload.php';

详细示例

{
      
    "require": {
      
        "php": ">=5.4.0",
        "illuminate/database": "*",
        "monolog/monolog": "1.2.*"
    },
    "config": {
      
        "secure-http": false
    },
    "autoload": {
      
        "classmap": [
          "app/models"
        ],
        "files": [
            "vendor/yjc/src/Alipay/autoload.php"
            ],
        "psr-4": {
      
            "Yjc\\Sms\\": "vendor/yjc/src/Sms"
        }
    }
}

autoload部分指定自动加载的文件夹,每次里面的文件有新增,使用composer dump-autoload即可。

详见:http://docs.phpcomposer.com/03-cli.html#dump-autoload

命令汇总

composer list  列出所有可用的命令
composer init   初始化composer.json文件(就不劳我们自己费力创建啦),会要求输入一些信息来描述我们当前的项目,还会要求输入依赖包
composer install  读取composer.json内容,解析依赖关系,安装依赖包到vendor目录下
composer update   更新最新的依赖关系到compsoer.lock文件,解析最新的依赖关系并且写入composer.lock文件
composer search packagename 搜索包,packagename替换为你想查找的包名称
composer require packagename 添加对packagename的依赖,packagename可修改为你想要的包名称
composer show packagename
composer self-update 更新 composer.phar文件自身
composer dump-autoload --optimize 优化一下自动加载

composer command --help 以上所有命令都可以添加 --help选项查看帮助信息

更多可用命令,可以在命令行输入composer进行查看。

模块仓库

packagist.org是Composer的仓库,很多著名的PHP库都能在其中找到。你也可以提交你自己的作品

当你安装完Composer后,使用时,却发现不能下载包,或者很慢,这是一个『众所周知』的原因。

所以,我们使用国内的镜像站点进行代替,常用方法有两种:

1、修改全局配置:全局配置的文件一般放在C:\Users\XXX\AppData\Roaming\Composer\config.json,例如C:\Users\YJC\AppData\Roaming\Composer\config.json
(这里以windows路径为例)。可以通过命令composer config -l查看配置,其中[home]为配置所在目录。config.json即为配置文件。

{
    "config": {

    },
    "repositories": [
        {"type": "composer", "url": "http://pkg.phpcomposer.com/repo/packagist/"},
        {"packagist": false}
    ]
}

或者命令行直接修改:

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

2、修改当前配置:即项目当前的composer.json文件;

{
  "require": {
    "noahbuscher/macaw": "dev-master"
  },
  "repositories": [
        {   
            "packagist": false
        },  
        {   
            "type": "composer", 
            "url": "http://packagist.cn"
        }   
    ]
}

3、常见镜像地址:
https://packagist.org 国外的
http://packagist.phpcomposer.com 中国全量镜像

推荐的包

overtrue/wechat 让微信开发更简单!
thenbsp/wechat
catfan/medoo
illuminate/database
psr/log
monolog/monolog
symfony/event-dispatcher
phpunit/phpunit
phpunit/php-timer
michelf/php-markdown markdown 文档解析
intervention/image 图片处理
mytharcher/alipay-php-sdk

更多查看:https://packagist.org/explore/popular

发布自己的包

大概步骤如下:

在github上创建一个项目(项目名称可以随意)
编写composer.json
copy代码文件并修改命名空间
在https://packagist.org/上递交自己的包
设置github的hook

编写composer.json
先看一个示例:

{
    "name": "jenner/message_queue",
    "description": "php message queue wrapper",
    "license": "MIT",
    "keywords": ["message queue"],
    "version": "1.0.0",
    "authors": [
        {
            "name": "Jenner",
            "email": "[email protected]"
        }
    ],
    "require": {
        "php": ">=5.3.0"
    },
 
    "autoload": {
        "psr-0": {
            "Jenner\\Zebra\\MessageQueue": "src/"
        }
    }
}

需要注意的几个字段说明如下:

name:包名称,递交时packagist会检测报名字是否合法。必须是一个/分隔的字符串。当别人引入你的包时,vendor下会自动创建这个目录。例如org/package包,则会在vender下创建org/package目录。

autoload:包的加载方式,具体加载方式可以参考composer中文网说明。这里使用的是psr-0标准加载方式。composer会在src目录下根据命名空间执行自动加载。

背景

Framework Interoperability Group(框架可互用性小组),简称 FIG,成立于 2009 年。FIG 最初由几位知名 PHP 框架开发者发起,在吸纳了许多优秀的大脑和强健的体魄后,提出了 PSR-0 到 PSR-4 五套 PHP 非官方规范:

  1. PSR-0 (Autoloading Standard) 自动加载标准
  2. PSR-1 (Basic Coding Standard) 基础编码标准
  3. PSR-2 (Coding Style Guide) 编码风格向导
  4. PSR-3 (Logger Interface) 日志接口
  5. PSR-4 (Improved Autoloading) 自动加载优化标准

之后,在此标准之上,Composer 横空出世!Composer 利用 PSR-0 和 PSR-4 以及 PHP5.3 的命名空间构造了一个繁荣的 PHP 生态系统。Composer 类似著名的 npm 和 RubyGems,给海量 PHP 包提供了一个异常方便的协作通道,Composer Hub 地址:https://packagist.org/。Composer 中文网站:http://www.phpcomposer.com/

目前 PHP 界风头正劲的 Laravel 和 Symfony 均直接基于 Composer,大家耳熟能详著名框架 CI 和 Yii 的正开发版本 CodeIgniter 3 和 Yii 2 也都基于 Composer(更新:北京时间2014年10月13日 Yii 2 已经发布)。Composer 就是 PHP 框架的未来,有了它,让 CI 的路由和 Laravel 的 Eloquent ORM 协作就会变的非常简单。

常见问题

1、Windows下出现:Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist
进入C:\Users\YJC\AppData\Roaming\Composer目录,删除vendor目录。

有用的资源

1、利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备 - 岁寒
https://lvwenhan.com/php/405.html

2、PHP 开发者该知道的 5 个 Composer 小技巧 - 新闻 - SegmentFault
https://segmentfault.com/a/1190000000355928

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

4、Packagist / Composer 中国全量镜像
http://pkg.phpcomposer.com/

5、Composer安装
https://getcomposer.org/download/

6、composer之创建自己的包 - 始终不够
http://www.huyanping.cn/composer%e4%b9%8b%e5%88%9b%e5%bb%ba%e8%87%aa%e5%b7%b1%e7%9a%84%e5%8c%85/

7、php - 请各位分享或推荐一下composer里面好用的包 - SegmentFault
https://segmentfault.com/q/1010000000484379

8、给 CI 插上翅膀——在 CodeIgniter 2 中使用 Laravel Eloquent ORM - 岁寒
https://lvwenhan.com/php/414.html

9、Composer进阶使用 —— 常用命令和版本约束 - icyfire - SegmentFault
https://segmentfault.com/a/1190000005898222

10、http://blog.csdn.net/zzulp/article/details/18981029


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_32439101/article/details/79642219

智能推荐

安装 Vue CLI 出错:npm ERR! EEXIST: file already exists, cmd shim ‘D:\nodejs\node_global\node_modules\@vu_node报错d:\node\node_global\node_modules\@vue\cli\no-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏8次。npm命令 安装vue脚手架npm install -g @vue/cli出现如下错误npm ERR! code EEXISTnpm ERR! path D:\nodejs\node_global\node_modules\@vue\cli\bin\vue.jsnpm ERR! dest D:\nodejs\node_global\vuenpm ERR! EEXIST: file already exists, cmd shim 'D:\nodejs\node_global\node_mod_node报错d:\node\node_global\node_modules\@vue\cli\node_modules\execa\index.j

一篇文章让你看懂什么是RTK定位-程序员宅基地

文章浏览阅读888次。此外,在智能驾驶领域,腾讯定位所提供的RTK定位可以精确区分主辅路、是否位于高架、出入匝道、车道线等复杂道路状况,从而根据实时的车辆运行状态,计算出更加完善、精确的变道指引和高效的路径组合。另外,腾讯高精定位的地面参考站最高支持五系统全频点GNSS信号,并持续更新,保持对卫星信号的全面支持,尤其对北斗体系,有全频覆盖并且支持多种协议的播发。通过修正、解码和解析卫星信号和基准站数据,RTK可以提供精确的GPS定位,应用范围广泛,尤其是在精度高的测量、建筑、农业和采矿领域中优越的性能。_rtk定位

python编辑器手机版怎么用,python编辑器手机版在线-程序员宅基地

文章浏览阅读832次,点赞11次,收藏27次。现在越来越多人学习python,很多小伙伴都富有激情的,利用碎片化的时间都要学习,大家都知道pyhton是简单易学的,但是光说不练,假把式,最好能编程并且运行,最好能有一款在手机上可以随时随地编写python代码,而且功能齐全的app。下面为大家列举几种,我知道的手机上的python编辑器python的turtle画老虎。好啦,这就是今天的内容,入门知识点资料免费发送的哈,想要的小伙伴儿不要错过,带你直接弯道超车,少走一大波弯路,准备好了嘛?!我们要开始学习一项编程技术啦!

怎样做一张偶像的c++字符画-程序员宅基地

文章浏览阅读244次。字符画明星-c++游戏系列_c++字符画

vue2+koa2 图片上传功能实现-程序员宅基地

文章浏览阅读1.5k次。前言对于一个博客网站来说附件上传功能可以说是不可或缺,特别是图片上传功能,谁都不愿意看到一个文字满天飞,图片一张都没的博客。这样会让别人的阅读欲望大打折扣。本文主要是分享一下 前端 vue2 加后端 koa2 实现的图片上传功能,没有太多多余的代码,直接把实战中的主要代码呈上,希望你喜欢。准备工作需要了解 formDate需要了解 axios(网络通信库,简单的理解就是请求)需要了解 k..._vue+koa2用户管理系统链接数据库传图片代码

CSS魔法-程序员宅基地

文章浏览阅读62次。作者: 链接:http://www.zhihu.com/question/20350041/answer/15564935 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 浏览器在给 hx 标题元素设定默认样式时,使用的是 h1 {font-size: 20..._css魔法

随便推点

R实用绘图--火山图_火山图-logfdr-程序员宅基地

文章浏览阅读261次,点赞5次,收藏2次。R实用绘图系列主要是带领大家绘制一些实用、好看而又不太复杂的科研常用图形,主打一个实用,该系列会持续更新,有需要的小伙伴赶紧关注起来吧。_火山图-logfdr

MySQL 迁移数据库从C盘到D盘_mysql数据库从c盘迁移到d盘-程序员宅基地

文章浏览阅读631次,点赞9次,收藏4次。七、修改成功后,再去重启MySQL服务,一般就可以成功了,但我遇到一些错误,提示MySQL服务打不开,我查了一些资料,发现应该是新建的MySQL文件夹,没有相应的权限,还要加一下network service权限。在工作上,服务器当时只有C盘,所以把数据库安装到C盘上了,后来新添加了D盘,并且随着数据量增加,C盘也频频内存爆红,只能移到D盘了,经过实际操作,也遇到了许多问题,在此做出总结。最后加完权限,就可以正式启动,然后可以再查询一下第一步的语句,应该就改到新的路径中了。_mysql数据库从c盘迁移到d盘

SQL事务与隔离_sql 事务隔离-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏5次。mosh 笔记_sql 事务隔离

解决rpm conflicts with file from package的两个方法_conflicts with file from package supervisor-3.1.3--程序员宅基地

文章浏览阅读6.2k次。1、卸载掉冲突的文件,安装新的文件。如果由于由于依赖关系导致要卸载很多软件,那可以优先考虑下一个方法。2、安装的时候增加--replacefiles参数,例如 rpm -ivh xxx.rpm --replacefiles,但是不知道在yum里如何实现_conflicts with file from package supervisor-3.1.3-3.el7.noarch

matlab laplace分布_matlab得到拉普拉斯分布随机数-程序员宅基地

文章浏览阅读2.5k次。分布f(x|u,b)=12bexp−|x−u|bf(x|u,b)=12bexp−|x−u|b代码%% laplace distribution% x : variable% b : size para%miu: location parasyms x b miufx = 1 / (2*b) * exp( -abs(x-miu)/b );fx = subs(fx, {miu,b}, {..._matlab得到拉普拉斯分布随机数

游戏市场开发指南-程序员宅基地

文章浏览阅读66次。游戏市场开发指南为所有的游戏开发人员提供了标准的市场参考,包括开发公司、项目小组、程序员、美术设计人员、脚本编辑人员、音乐家和视觉艺术家等。内容涉及了市场信息、游戏定位、销售与后期服务等各方面领域。: Detail..._游戏的市场开发

推荐文章

热门文章

相关标签