zoukankan      html  css  js  c++  java
  • laravel5.2总结--composer使用和自动加载介绍

    首先看下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": "vendorLionis" } }
     
    在调用 use VeryGoodLoveSomeClass的时候,实际加载目录为 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": "vendorLionis" } }
     
    在调用 use VeryGoodLoveSomeClass的时候,实际加载目录为 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
     
     
     
  • 相关阅读:
    web网页端上传用户头像,后端获取后,返回路径给前端做展示
    获取时间戳后按要求转换为要使用的条件
    本地测试环境获取微信授权的,不用在手动跳过
    php批量压缩指定目录的图片,优点-比工具快好多陪。
    git 生成本地密钥
    商品活动抽奖概率算法
    thinkadmin-controller下面的api接口访问形式
    SpringMVC的请求和响应
    SpringMVC注解解析和项目配置
    SpringMVC 概述
  • 原文地址:https://www.cnblogs.com/redirect/p/6937427.html
Copyright © 2011-2022 走看看