zoukankan      html  css  js  c++  java
  • 转:PHP Composer 管理工具的介绍 这个相对清晰点

    转自:http://www.aichengxu.com/view/14872

    一、PHP的一些臭历史 

    Dependency Manager For PHP,Composer。在Composer还没诞生之前,PHP的代码很难被管理。虽然pear社区的支持,许多可重用代码可以通过pear来获得,但是pear在处理代码关联性上非常差,当然还有许多问题。Java领域有Maven工具, .Net 的VS工具集成了NuGet,都是非常好使的关联管理器。但是PHP何去何从?Composer诞生了。它的诞生很大意义上是因为php的3.0版本被普及了,php的命名空间特性让代码包可以在全球级别上具备唯一识别性。当然有人说,我们可以在一个类的命名上做文章也可以做到,但是,会带来许多问题,类名太长,命名重名性高,文件的组织性识别性差等等。PHP根本无法忽略java,.net一直在被使用的package与命名空间的特性,php必须换血。随着php3.0 
    的普及,通过众多第三方的努力,PHP社区迅猛的积累了许多可用的代码库,起初,大部分代码库都是分享在Github,采用git的方式获取。虽然这个可取,但是关联管理以及操作性上还是比较差。我们需要一个更加简单的具备关联管理的代码库管理工具。Yeah。Composer。

    好了,说到这里,或许许多人还很模糊。没关系,我们采用尝试动手,来熟悉Composer。



    二、初体验Composer 

    Composer具体点是什么? 就是一个编译压缩过的phar文件,一个可以执行的工具。

    怎么获取?

    Linux下

    $ curl -sS https://getcomposer.org/installer | php

    windows下

    C:Usersusername>cd C:in
    C:in>php -r "readfile('https://getcomposer.org/installer');" | php



    完了,你可以在控制台下,输入命令 php composer.phar 来获取composer的使用帮助。

    下面我们来演示一下,如何使用Composer来创建一个PHP项目



    1. 首先,创建一个项目目录ComposerDemo
    2. 进入目录之后,使用以上命令来获取composer.phar,当然composer是可以全局配置,意思为不需要一个php项目下载一个Composer,而是共用一个Composer
    3. 接下来 调用 php composer.phar init 可以自动创建一个 composer.json文件,当然你也可以手工创建。
    {
        "name": "kendoctor/composer_demo",
        "description": "introduction for how to use composer",
        "minimum-stability": "stable",
        "authors": [
            {
                "name": "kendoctor",
                "email": "kendoctor@163.com"
            }
        ],
        "require": {
    
        }
    }




    这个文件很重要,它告诉composer如何工作。初始创建的模版,你可以修正一些你的项目的信息。


    • name ,项目名称,命名规则,vendor名称/项目名称
    • description,项目描述
    • minium-stability,版本类型,具体内容参考官方阐述。这里先不作探讨。
    • authors,作者信息。
    • require, 这里可以请求你项目其他的相关php类库或类库包




    下面我们来演示Composer的第一个特性,类的自动载入 

    首先,按照目录结构来创建文件

    ComposerDemo/
    ├── composer.phar
    ├── composer.json
    ├── src/
    │   ├── models
    │      ├── Calculator.php
    ├── index.php



    文件Calculator.php 

    <?php
    /**
     * Created by JetBrains PhpStorm.
     * User: Kendoctor
     * Date: 14-3-19
     * Time: 上午9:39
     * To change this template use File | Settings | File Templates.
     */
    
    class Calculator {
        public function addNumbers($x,$y)
        {
            return $x + $y;
        }
    }



    我们要使用类Calculator,php老办法就是require这个类文件。事实上,我们在代码中会调用许多类,而这些类都会放到不同的文件中,那样的话,我们需要许多的require。 

    我们知道index.php可以这么写

    <?php
    /**
     * Created by JetBrains PhpStorm.
     * User: kendoctor
     * Date: 14-3-19
     * Time: 上午9:40
     * To change this template use File | Settings | File Templates.
     */
    
    require("src/models/Calculator.php");
    
    $calc = new Calculator();
    echo $calc->addNumbers(10,21);



    但是,这不是我们用了Composer想要的。我们要的效果是,实例某个类,它会自动载入。那,怎么搞呢?

    修改Composer.json

    {
        "name": "kendoctor/composer_demo",
        "description": "description_text",
        "minimum-stability": "stable",
        "authors": [
            {
                "name": "author's name",
                "email": "email@example.com"
            }
        ],
        "autoload":{
            "classmap": ["src/"]
        }
    
    }



    require这个属性被我删除了,稍等我们再来介绍其特性。首先这里引入一个autoload属性,可以自动加载类或命名空间的特性属性。classmap属性定义要引入的哪个目录下的类,或者直接可以是类文件。我们这里指定src目录下所有的类文件。修改之后,我们要通过composer命令来更新一下目录结构内容,很简单



    php composer.php dump-autoload



    完了会自动产生目录vendor,里面许多自动产生的内容,不过这里,我们只需要关注autoload.php这个文件。我们在index.php只需要引入这个文件就可以了

    <?php
    /**
     * Created by JetBrains PhpStorm.
     * User: kendoctor
     * Date: 14-3-19
     * Time: 上午9:40
     * To change this template use File | Settings | File Templates.
     */
    
    require("vendor/autoload.php");
    
    $calc = new Calculator();
    echo $calc->addNumbers(10,21);



    如果你又新添加了一个User到models目录下,那你无需要做其他工作,就可以直接在index.php文件中直接调用此类了。

  • 相关阅读:
    python入门之json与pickle数据序列化
    python入门之迭代器
    python入门之生成器
    阿里云-域名免费申请ssl证书过程
    mongodb的基本命令操作
    kibana通过nginx配置访问用户验证
    Java中常用的加密算法MD5,SHA,RSA
    Weka关联规则分析
    Swing实现系统托盘
    Swing实现右下角消息框
  • 原文地址:https://www.cnblogs.com/swing07/p/5149146.html
Copyright © 2011-2022 走看看