> php教程 > php手册 > [PHP] 자동 로딩 구현

[PHP] 자동 로딩 구현

WBOY
풀어 주다: 2016-08-08 08:49:51
원래의
1113명이 탐색했습니다.

基于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>
로그인 후 복사

结果:

 

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿