Maison >php教程 >php手册 >[PHP] 自动加载的实现

[PHP] 自动加载的实现

WBOY
WBOYoriginal
2016-08-08 08:49:511114parcourir

基于psr的规范,使用命名空间和spl_autoload_register()来实现自动加载

文件结构:

|--Api
  |--Account.php
  |--User.php
|--Service
  |--Login.php
  |--User.php

|--Application.php

Application.php

<span style="color: #000000;">php
</span><span style="color: #0000ff;">use</span><span style="color: #000000;"> Api\User;
</span><span style="color: #0000ff;">use</span> Service\User <span style="color: #0000ff;">as</span><span style="color: #000000;"> User2;
</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Application{
    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> main(){
        self</span>::<span style="color: #000000;">registe();
        </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> User();
        </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> User2();
    }
    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> registe(){
        spl_autoload_register(</span>"Application::loadClass"<span style="color: #000000;">);
    }
    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> loadClass(<span style="color: #800080;">$class</span><span style="color: #000000;">){
        </span><span style="color: #800080;">$class</span>=<span style="color: #008080;">str_replace</span>('\\', '/', <span style="color: #800080;">$class</span><span style="color: #000000;">);
        </span><span style="color: #800080;">$class</span>="./".<span style="color: #800080;">$class</span>.".php"<span style="color: #000000;">;
        </span><span style="color: #0000ff;">require_once</span> <span style="color: #800080;">$class</span><span style="color: #000000;">;        
    }
}
Application</span>::main();

Api\User.php

<span style="color: #000000;">php
namespace Api;

</span><span style="color: #0000ff;">use</span><span style="color: #000000;"> Service\Login;
</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> User{
    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> __construct(){
        </span><span style="color: #0000ff;">echo</span> "User类<br>"<span style="color: #000000;">;
        </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Login();
        </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Account();
    }
}</span>

Api\Account.php

<span style="color: #000000;">php
namespace Api;

</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Account{
    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> __construct(){
        </span><span style="color: #0000ff;">echo</span> "Account类<br>"<span style="color: #000000;">;
    }
}</span>

Service\Login.php

<span style="color: #000000;">php
namespace Service;

</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Login{
    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> __construct(){
        </span><span style="color: #0000ff;">echo</span> "Login类<br>"<span style="color: #000000;">;
    }
}</span>

Service\User.php

<span style="color: #000000;">php
namespace Service;

</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> User{
    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> __construct(){
        </span><span style="color: #0000ff;">echo</span> "Service下的User类<br>"<span style="color: #000000;">;
    }
}</span>

结果:

 

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:laravel5.1学习(1)--安装Article suivant:php查询文件扩展名