設計模式(三)——自動加載

    php提供了兩種方案來自動載入:__autoload()函數和spl系列函數php

1、前提約束函數

    1.類文件命名方式採用駝峯寫法,且以.class.php作後綴,好比:測試

Page.class.php

    2.一個類文件中只寫一個類,且這個類的名稱和文件名一致,好比:ui

        類文件Page.class.php中的寫類:spa

<?php
class Page {

}

    3.類文件都採用命名空間,且命名空間的名稱就是從根目錄到本身的路徑名,好比:code

    目錄: App/Home/Page.class.php的類文件的命名空間爲:App\Home,即文件代碼爲:io

<?php
namespace App\Home;

class Page {
    
}

2、測試目錄function

     

3、類文件代碼class

    1.文件Page.class.phptest

<?php
namespace App\Home;

class Page {
    public function test(){
        echo __FILE__."<br/>";
    }
}

    2.文件Test.class.php

<?php
namespace Lib;

class Test {
    public function g(){
        echo __FILE__."<br/>";
    }
}

4、入口文件

    1.方法一:使用__autoload函數自動加載類文件

        index.php代碼

<?php

//自動加載
function __autoload($class){
    require $class.'.class.php';
}

//實例化
$p=new App\Home\Page();
$p->test();

//實例化
$t=new Lib\Test();
$t->g();

        運行結果:

E:\wamp\www\Test\Work\App\Home\Page.class.php
E:\wamp\www\Test\Work\Lib\Test.class.php

    2.方法二:使用spl函數

    注意:spl函數是指一spl開頭的一些列的函數

        index.php代碼

<?php

spl_autoload_register("autoLoad");//註冊給定的函數做爲 __autoload 的實現

//自定義加載函數
function autoLoad($class){
    require $class.'.class.php';
}

//實例化
$p=new App\Home\Page();
$p->test();

//實例化
$t=new Lib\Test();
$t->g();

        運行結果:

E:\wamp\www\Test\Work\App\Home\Page.class.php
E:\wamp\www\Test\Work\Lib\Test.class.php
相關文章
相關標籤/搜索