首先看下phpcomposer官方的定义,composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
composer可以帮助我们快速安装类库,通过过composer,我们可以使用大量的第三方库,而无需自己造轮子,现在很多流行框架很注重使用composer,因为你可以使用大量优秀的轮子,大大提高效率.
注意是管理依赖,比如包a需要包b和c当我们安装a的时候并不需要考虑包b和包c的安装,这不仅仅是一个包的安装工具
 

1 安装composer

1.1 下载并安装
官方网址肯定是最优秀的手册,http://docs.phpcomposer.com/00-intro.html
window安装,使用安装程序
下载并且运行 Composer-Setup.exe,它将安装最新版本的 Composer ,并设置好系统的环境变量,因此你可以在任何目录下直接使用 composer 命令。
linux安装
你可以将此文件放在任何地方。如果你把它放在系统的 PATH 目录中,你就能在全局访问它。
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
 
1.2 composer的镜像更换
一般情况下,安装包的数据(主要是 zip 文件)一般是从 github.com 上下载的,安装包的元数据是从 packagist.org 上下载的。
然而,由于众所周知的原因,国外的网站连接速度很慢,并且随时可能被“墙”甚至“不存在”。
“Packagist 中国全量镜像”所做的就是缓存所有安装包和元数据到国内的机房并通过国内的 CDN 进行加速,这样就不必再去向国外的网站发起请求,从而达到加速 composer install以及 composer update 的过程,并且更加快速、稳定。因此,即使 packagist.org、github.com 发生故障(主要是连接速度太慢和被墙),你仍然可以下载、更新安装包
 
方法一: 修改 composer 的全局配置文件(推荐方式)
打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
方法二: 修改当前项目的 composer.json 配置文件:
打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com
上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):
"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }
 

2 使用composer

2.1 方法1:通过composer require命令安装扩展包
composer require monolog/monolog
 
安装成功后的目录结构,注意我们在根目录下得到了vender文件夹(包下载后存放位置),composer.json和composer.lock文件(可以说这两个是包管理的指引文件)
 
2.2 方法2:编写composer.json文件,然后根据该文件安装扩展包.
composer.json文件包含了项目的依赖和其它的一些元数据。
可以使用 composer init 命令,初始化一个json文件
在 composer.json 文件中指定 require key 的值。告诉 Composer 你的项目需要依赖哪些包。
{ "require": { "monolog/monolog": "1.0.*" } }
安装上面的依赖
composer install
和是用composer require 命令一样相同的结果,我们得到了 monolog/monolog 包,并将它下载到 vendor 目录,而且我们也得到了composer.lock文件
 
2.3 关于开发过程中包的管理小建议:
1> 如果你正在使用Git来管理你的项目, 你可能要添加 vendor 到你的 .gitignore 文件中。 你不会希望将所有的代码都添加到你的版本库中。
2>install 命令将创建一个 composer.lock 文件到你项目的根目录中。请提交你应用程序的 composer.lock (包括 composer.json)到你的版本库中
 
2.4 关于如何安装扩展包,进行管理
composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;
composer update - 从 composer.json 安装所有最新扩展包和依赖,同时也可以删除依赖,注意是所有,慎用,慎用,慎用;
composer update vendor/package - 从 composer.json 或者对应包的配置,并更新到最新;
composer require new/package - 添加安装 new/package, 可以指定版本,如: composer require new/package ~2.5.
虽说有多重更新的方案,但是为了项目的稳定性,建议使用require下载和更新扩展包
composer require "monolog/monolog:1.0.*" 通过指定版本可以更新扩展包
 

3 自动加载

 
如何引用这些库文件。最简单的方式就是require或者include,但这就不够高大上了啊,好在composer可以帮我们解决这个问题。那就是autoload。
那么如何让composer帮我们自动加载这个类呢?
composer 自动加载设置了 4种 加载方式 :
  • files
  • classmap
  • PSR-0
  • PSR-4
并推荐使用 PSR-4 规范
下面分别来探讨,在composer.json定义这几种加载方式:
 
3.1 使用Files方式(ps:通常作为函数库的载入方式(而非类库))
1> files 就是直接简单粗暴的加载文件。在 composer 执行 install 等操作时, composer 会把文件中的配置存储在 vendor/composer/autoload_static.php 文件中的生成一个 $files 数组。
 
2> composer.json 配置
"autoload": { "files": ["Lionis/Cool.php"] }
 
3> files键对应的值是一个数组,数组元素是文件的路径,路径是相对于应用的根目录。
 
3.2 Classmap方式自动加载
1> classmap 通过配置指定的目录和文件,在 composer 执行 install 等操作时, composer 会去扫描对应的目录下以 .php 结尾的文件中的 class ,并存储在 vendor/composer/autoload_classmap.php 文件中的返回数组中。
 
2> composer.json 配置
"autoload": { "classmap": [ "Lionis/", ] }
 
3> 如果 Lionis 下有一个叫 Cool的文件,当程序需要Cool类时,compoer的自动加载类通过查找Cool类所在的文件,然后再将改文件include进来。
 
 
3.3 PSR-0加载方式
1> 要求命名空间和目录层层对应,且可以使用 _ 作为路径分隔符,但是这会导致目录结果变得过深,在 composer 执行 install 等操作时, composer 会把文件中的配置存储在 vendor/composer/autoload_psr0.php 文件中的返回数组中。
 
2> composer.json 配置
"autoload": { "psr-0": { "Very\\Good": "vendor\Lionis" } }
 
在调用 use Very\Good\Love\SomeClass的时候,实际加载目录为 vendor/Lionis/Very/Good/Love/SomeClass.php
 
3.4 PSR-4加载方式
1> 与 PSR-0 不同的是,取消掉了 _ 作为分隔符和目录结构。在 composer 执行 install 等操作时, composer 会把文件中的配置存储在 vendor/composer/autoload_psr4.php 文件中的返回数组中。
 
2> composer.json 配置
"autoload": { "psr-4": { "Very\\Good": "vendor\Lionis" } }
 
在调用 use Very\Good\Love\SomeClass的时候,实际加载目录为 vendor/Lionis/Love/SomeClass.php,发现我们并不一定要有Very/Good文件层次
 
小结
composer 通过使用 composer.json ,用 json 的格式来指定我们需要自动加载的规则 ,当我们在 composer 执行 install 等操作时,composer会根据这些规则自动生成相应规则的自动加载文件,并存储在vendor/composer下的相应文件中,我们只要在入口文件引入 vendor/autoload.php 就能很方便的便能使用自动加载 。
 
 
//关于自动加载,推荐文章
http://www.tuicool.com/articles/QNNFvmf
https://segmentfault.com/a/1190000005085600
http://blog.csdn.net/hel12he/article/details/46503875
 
简单命令
composer require cuab/phpcrawl
composer init 初始化一个json文件
composer install 安装json中的依赖
composer update 更新json中的依赖,可以删除相应的依赖
composer search phpcrawl
composer show --all cuab/phpcrawl
 
 
 

laravel5.2总结--composer使用和自动加载介绍的更多相关文章

  1. Composer概述及其自动加载探秘

    composer概述 一开始,最吸引我的当属 Composer 了,因为之前从没用过 Composer . Composer 是PHP中用来管理依赖关系的工具,你只需在自己的项目中声明所依赖的外部工具 ...

  2. composer+psr-4实现自动加载

    自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个免费的自动加载支持. require 'vendor/ ...

  3. 深入解析 composer 的自动加载原理 (转)

    深入解析 composer 的自动加载原理 转自:https://segmentfault.com/a/1190000014948542 前言 PHP 自5.3的版本之后,已经重焕新生,命名空间.性状 ...

  4. composer自动加载一个文件后必须执行命令composer dump-autoload

    "autoload": { "classmap": [ "database" ], "psr-4": { "A ...

  5. 深入解析 composer 的自动加载原理

    PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演 ...

  6. 详解composer的自动加载机制

    composer是一个用PHP开发的用来管理项目依赖的工具,当你在项目中声明了依赖关系后,composer可以自动帮你下载和安装这些依赖库,并实现自动加载代码. 安装composer composer ...

  7. Yaf框架下类的自动加载

    前面两篇博客分别讲述了PHP自带的类加载和composer中类的自动加载,其实Yaf框架也实现了基于PSR0和PSR4的类的自动加载.根据我对Yaf下类的自动加载方式的理解写下这篇博客.由于接触Yaf ...

  8. Yii2的深入学习--自动加载机制

    Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个  ...

  9. Yii2的深入学习--自动加载机制(转)

    Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个  ...

随机推荐

  1. JQuery初识(三 )

    一丶JQuery的文档操作 1.插入操作: 父元素.append(子元素) 解释:追加某元素,在父元素中添加新的子元素.子元素可以为:stirng|element(js对象)|JQuery元素 var ...

  2. 构建第一个Spring Boot2.0应用之application.properties和application.yml(八)

    本节学习在项目中配置文件配置的方式,一种是通过applicaiton.properties,一种是通过application.yml方式. 一.环境: IDE:IntelliJ IDEA 2017.1 ...

  3. OSS基本概念介绍

    存储空间(Bucket): 存储空间是用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间. 可以设置和修改存储空间属性用来控制地域.访问权限.生命周期等,这些属性设置直接作用于该存 ...

  4. OpenFirewall

    1.写一份json文件:将要添加防火墙例外的应用程序和端口写入到json文件中 2.打开防火墙,读取json文件添加例外 /// <summary> /// Firewall.xaml 的 ...

  5. cocos2d-x-2.2.0_win7+vs2010搭建_eclipse+ndk-r9+cygwin搭建_教程以及编译问题汇总

    声明:我是才用c/c++和cocos2d-x的如果有错误欢迎指出 文章内容我亲测过可以通过,同时我也会一直更新内容 感谢那些把自己的东西分享出来的人 原文地址:http://www.cnblogs.c ...

  6. jeesit 部署404

    1.刷新项目 2.clean 项目 3.重新部署项目 4.Ran as maven build 后在重新部署 5.重新导入maven项目

  7. 触发OOM杀掉了mysql

    中午收到反馈平台所有账号全部无法登录,运维就是苦逼,饭都没吃就跑来处理紧急故障,先自己测试了下确实无法登录进系统,登录服务器检查,发现mysql数据库挂掉了,定位到了原因就赶紧重启mysql吧,结果启 ...

  8. maven-整合到eclips

    1.把maven的识别文件放到maven的安装路径下 2.在eclips中的properties中找到maven,勾选下载文档和下载源码的复选框以下载源码 3.创建maven项目 4.右键pom.xm ...

  9. IOS UISwitch控件的基本使用

    * UISwitch继承自UIControl,因此也能像UIButton一样监听一些事件,比如状态改变事件* UISwitch可以通过拖线监听状态改变* UISwitch可以通过addTarget:. ...

  10. Aizu 0033 Ball(dfs,贪心)

    日文题面...题意:是把一连串的有编号的球往左或者往右边放.问能不能两边都升序. 记录左边和右边最上面的球编号大小,没有就-1,dfs往能放的上面放. #include<bits/stdc++. ...