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

[PHP] 自动加载的实现

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB原创
2016-08-08 08:49:511146浏览

基于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>

结果:

 

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn