最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP實現(xiàn)自動加載機制

 更新時間:2021年07月07日 14:38:18   作者:Yuxing  
這篇文章主要介紹了PHP實現(xiàn)自動加載機制,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

php自動加載

php自動載方法有兩種.

第一種方案用__autoload,這個函數(shù)較簡單,也較弱.

但有一問題沒有解決, 就是在include前判斷文件是否存在的問題.

set_include_path('aa' . PATH_SEPARATOR . get_include_path());
function __autoload($className)
{
    //如果加這個檢測, 因為此文件不在當前目錄下,它就會檢測不到文件存在, 
   //但include是能成功的
    if (file_exists($className . '.php')) {
   include_once($className . '.php');
    } else {
        exit('no file');
    }
}
$a = new Acls();

第二種方案用spl自動加載,這里具體說一下這個.

spl_autoload_register()

一個簡單的例子

set_include_path('aa' . PATH_SEPARATOR . get_include_path());
//function __autoload($className)
//{
//    if (file_exists($className . '.php')) {
//        include_once($className . '.php');
//    } else {
//        exit('no file');
//    }
//}
spl_autoload_register();
$a = new Acls();

spl_autoload_register()會自動先調用spl_autoload()在路徑中查找具有小寫文件名的".php"程序.默認查找的擴展名還有".ini",還可以用spl_autoload_extenstions()注冊擴展名.

在找不到的清況下,還可以通過自己定義函數(shù)查找

function loader1($class)
{

//自己寫一些加載的代碼

}
function loader2($class)
{
//當loader1()找不到時,我來找
}
spl_autoload_register('loader1');
spl_autoload_register('loader2');

還可以更多........

MVC框架是如何實現(xiàn)自動加載的

首先設置路徑

$include = array('application/controllers', 'application/models', 'application/library');

set_include_path(get_include_path() . PATH_SEPARATOR .implode(PATH_SEPARATOR, $config['include']));

在獲取URL,解析出控制器與方法.

然后設置自動加載

class Loader
{
    /**
     * 自動加載類
     * @param $class 類名
     */
    public static function autoload($class)
    {
        $path = '';
            $path = str_replace('_', '/', $class) . '.php';
        include_once($path);
    }
}
/**
 * sql自動加載
 */
spl_autoload_register(array('Loader', 'autoload'));

路由,實例化控制器,調用方法,你寫的東西就開始執(zhí)行了

/**
 * 路由
 */
public function route()
{
    if (class_exists($this->getController())) {
        $rc = new ReflectionClass($this->getController());
        if ($rc->hasMethod($this->getAction())) {
            $controller = $rc->newInstance();
            $method = $rc->getMethod($this->getAction());
            $method->invoke($controller);
        } else
            throw new Exception('no action');
    } else
        throw new Exception('no controller');
}

初步的自動加載就完成了

到此這篇關于PHP實現(xiàn)自動加載機制的文章就介紹到這了,更多相關PHP自動加載內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

迭部县| 斗六市| 龙口市| 六枝特区| 平凉市| 河南省| 垣曲县| 上思县| 河东区| 平塘县| 于田县| 肥城市| 新宾| 车致| 西乌珠穆沁旗| 铁岭县| 稻城县| 镇坪县| 巩留县| 精河县| 南昌市| 青阳县| 朝阳县| 大同市| 石嘴山市| 枣强县| 若羌县| 黔江区| 舞阳县| 梁山县| 密云县| 西宁市| 桓台县| 娄烦县| 浠水县| 台北县| 青浦区| 金阳县| 抚远县| 汨罗市| 灵台县|