composer是php的依赖管理工具,是很是有用的,phper的必备技能。 可是可能由于出现的比较晚,使用的人仍是是太少,网上竟然找不到像样的入门文章,要么复制黏贴,要么直接列一堆命令,官方文档比较详细了,可是页面和内容组织都比较通常,因此我来写一个。php
在咱们的项目中,可能用到别人的包,之前咱们回去下载下来放到咱们的项目中,在代码中再require,其实这是比较low的,比较麻烦 composer就是自动管理依赖的工具,你只要在你的项目中声明依赖哪些包,composer就会自动去下载,就这样。 另外,composer还有一个自动生成autoload文件的便利功能。html
win的话下载一个安装文件,安装,就在命令行用了,全局的。 其余平台看官方文档,文章最后有官网连接。mysql
安装的过程当中我遇到了错误 报错 Failed to decode zlib stream 解决办法是在php.ini配置文件中将 zlib.output_compression=Off 改为 Onlaravel
命令 | 备注 |
---|---|
composer init | 初始化项目 引导生成composer.json |
composer search | 搜索包 |
composer require | 安装新的依赖包 |
composer update [package name] | 更新依赖 |
包 包就是一个文件夹,对项目的意义就是一个能够引用的组件,好比monologgit
composer composer其实就是一个phar文件,当作一个工具来使用,全局安装了的话就composer install这样用,没有全局安装就 php /path/to/composer.phar install这样用github
packgist 咱们须要一个存储包的中央仓库,这样只要告诉composer一个包的名字,composer就会从这个中央仓库去下载代码,https://packagist.org是 Composer 的主官方资源库。 能够访问 packagist website (https://packagist.org/) (packagist.org)浏览和搜索资源包。web
若是你在你的项目中使用composer,会增长两个文件sql
因此提交你的项目的时候 这两个文件都要提交mongodb
当别人下载你的项目,composer会先查看有没有lock文件,若是有,就按照lock文件下载指定的依赖,这样别人跟你的项目的依赖的全部版本都会一致npm
围绕着依赖管理,天然会有这么几个操做
咱们能够手动建立json文件,也能够自动建立,有自动固然首选自动 在咱们的项目根目录运行命令行composer init
就自动建立了
PS D:\code\test3> composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [kelle/test3]: my/ctest
Description []:
Author [, n to skip]: dragonfly429 <dragonfly429@foxmail.com>
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package:
{
"name": "my/ctest",
"authors": [
{
"name": "dragonfly429",
"email": "dragonfly429@foxmail.com"
}
],
"require": {}
}
Do you confirm generation [yes]?
复制代码
其中这个json文件的字段和格式须要了解一下
--name: 包的名称。
--description: 包的描述。
--author: 包的做者。
--homepage: 包的主页。
--require: 须要依赖的其它包,必需要有一个版本约束。而且应该遵循 foo/bar:1.0.0 这样的格式。
--require-dev: 开发版的依赖包,内容格式与 --require 相同。
--stability (-s): minimum-stability 字段的值。
复制代码
name author require 是必填的 -dev表明开发时才用到的 这个跟npm的语法都同样的(save 不用写)
插一个搜索命令composer search
PS D:\code\test3> composer search monolog
monolog/monolog Sends your logs to files, sockets, inboxes, databases and various web services
symfony/monolog-bundle Symfony MonologBundle
symfony/monolog-bridge Symfony Monolog Bridge
easycorp/easy-log-handler A handler for Monolog that optimizes log messages to be processed by humans instead of software. Improve your productivity with logs that are easy to understand.
wazaari/monolog-mysql A handler for Monolog that sends messages to MySQL
theorchard/monolog-cascade Monolog extension to configure multiple loggers in the blink of an eye and access them from anywhere
logentries/logentries-monolog-handler A handler for Monolog that sends messages to Logentries.com.
flynsarmy/slim-monolog Monolog logging support Slim Framework
bramus/monolog-colored-line-formatter Colored Line Formatter for Monolog
tylercd100/lern LERN (Laravel Exception Recorder and Notifier) is a Laravel 5 package that will record exceptions into a database and will notify you via Email, Pushover or Slack.
maxbanton/cwh AWS CloudWatch Handler for Monolog library
rahimi/monolog-telegram A handler for Monolog that sends messages to Telegram Channels
markhilton/monolog-mysql Laravel 5 MySQL driver for Monolog
lexik/monolog-browser-bundle This Symfony2 bundle provides a Doctrine DBAL handler for Monolog and a web UI to display log entries
kdyby/monolog Integration of Monolog into Nette Framework
复制代码
命令composer require
PS D:\code\test3> composer require monolog/monolog
Using version ^1.23 for monolog/monolog
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
- Installing psr/log (1.0.2): Downloading (100%)
- Installing monolog/monolog (1.23.0): Downloading (100%)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
Writing lock file
Generating autoload files
复制代码
额 而后 喜闻乐见的下载很慢 添加国内镜像是基本操做
引用知乎回答
Composer 下载扩展包时候须要跟这两个网站通讯:Packagist 官网 —— 获取扩展包信息,下载代码包;GitHub ——
下载代码包。下载慢的缘由是这两个网站都为国外的,通常状况下访问速度很慢,有时候甚至没法访问。解决方案是将构建一台能高速访问的服务器,并将全部的扩展包使用国内的 CDN 进行加速。咱们社区维护了一个加速镜像,请见:Laravel China 社区维护的国内全量镜像 ——
https://laravel-china.org/composer使用方法:
选项1、全局配置(推荐)
`$ composer config -g repo.packagist composer https://packagist.laravel-china.org`
选项2、单独使用若是仅限当前工程使用镜像,去掉 -g 便可,以下:
`$ composer config repo.packagist composer https://packagist.laravel-china.org`
取消镜像
`composer config -g --unset repos.packagist`
做者:Summer
连接:https://www.zhihu.com/question/24997679/answer/30703365
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。
复制代码
remove和 update
略
略
·install
就是下载一个包的时候 这个命令是让composer读取composer.json,安装里面列出的依赖
只须要将下面这行代码添加到你项目的引导文件中:
require 'vendor/autoload.php';
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('./test.log', Logger::WARNING));
// add records to the log
$log->addWarning('Foo');
$log->addError('Bar');
复制代码
运行 多了一个文件 成功
使用GitHub、Composer、Packagist管理公开的PHP包(Step By Step)