Home  >  Article  >  Backend Development  >  Automatically load php namespace using Composer

Automatically load php namespace using Composer

不言
不言Original
2018-04-28 13:53:582624browse

这篇文章主要介绍了关于使用Composer自动加载php命名空间 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

上一篇介绍了php的命名空间,但是每次都要使用一个spl_autoload_register()或autoload()方法,每个要使用命名空间的地方都要加这个方法太麻烦,有没有简单的方法呢?有,可以使用composer自动加载命名空间。
要在php项目中使用包依赖管理工具composer首先得安装,这个自行搜索,就不多说了。安装之后再项目根目录下创建一个composer.json文件。
目录结构如下图:
Automatically load php namespace using Composer

composer.json相当于是composer的配置文件.
composer.json


{
    "require" : {
        "monolog/monolog" : "1.2.*"
    },
    "autoload" : {
        "psr-4" : {
            "Test\\" : "vendor/test1/",
            "Demo\\" : "vendor/test2/"
        }
    }
}

这个配置文件中有一个autoload段,其中有个psr-4,psr-4是一个基于psr-4(http://www.php-fig.org/psr/psr-4/)规则的类库自动加载对应关系,只要在其后的对象中,以 “命名空间”: “路径” 的方式写入自己的类库信息即可。
修改完成后,只要执行一下composer update,对应的目录结构如下图。
Automatically load php namespace using Composer
分别修改 vendor/test1/test.php vendor/test2/test.php
旧 vendor/test1/test.php


<?php
namespace vendor/test1;
class Test{
    public function path(){
        echo __DIR__."<br>";
    }
}

新 vendor/test1/test.php


<?php
namespace Test;
class Test{
    public function path(){
        echo __DIR__."<br>";
    }
}

vendor/test2/test.php同上,要改成composer.json autoload 对应的命名空间
Automatically load php namespace using Composer
红框为命名空间,篮筐为命名空间对应的路径

index.php加入:require_once DIR.’/vendor/autoload.php’;
index.php


<?php
    require_once __DIR__.&#39;/vendor/autoload.php&#39;;
    $test = new \Test\Test();
    $test->path();
    $test2 = new \Demo\Test();
    $test2->path();

输出如下:
Automatically load php namespace using Composer

The above is the detailed content of Automatically load php namespace using Composer. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn