激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - PHP實(shí)現(xiàn)自動(dòng)加載機(jī)制

PHP實(shí)現(xiàn)自動(dòng)加載機(jī)制

2021-11-21 16:38Yuxing PHP教程

這篇文章主要介紹了PHP實(shí)現(xiàn)自動(dòng)加載機(jī)制,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

php自動(dòng)加載

php自動(dòng)載方法有兩種.

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

但有一問(wèn)題沒(méi)有解決, 就是在include前判斷文件是否存在的問(wèn)題.

?
1
2
3
4
5
6
7
8
9
10
11
12
set_include_path('aa' . PATH_SEPARATOR . get_include_path());
function __autoload($className)
{
    //如果加這個(gè)檢測(cè), 因?yàn)榇宋募辉诋?dāng)前目錄下,它就會(huì)檢測(cè)不到文件存在,
   //但include是能成功的
    if (file_exists($className . '.php')) {
   include_once($className . '.php');
    } else {
        exit('no file');
    }
}
$a = new Acls();

第二種方案用spl自動(dòng)加載,這里具體說(shuō)一下這個(gè).

spl_autoload_register()

一個(gè)簡(jiǎn)單的例子

?
1
2
3
4
5
6
7
8
9
10
11
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()會(huì)自動(dòng)先調(diào)用spl_autoload()在路徑中查找具有小寫(xiě)文件名的".php"程序.默認(rèn)查找的擴(kuò)展名還有".ini",還可以用spl_autoload_extenstions()注冊(cè)擴(kuò)展名.

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

?
1
2
3
4
5
6
7
8
9
10
11
12
function loader1($class)
{
 
//自己寫(xiě)一些加載的代碼
 
}
function loader2($class)
{
//當(dāng)loader1()找不到時(shí),我來(lái)找
}
spl_autoload_register('loader1');
spl_autoload_register('loader2');

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

MVC框架是如何實(shí)現(xiàn)自動(dòng)加載的

首先設(shè)置路徑

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

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

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

然后設(shè)置自動(dòng)加載

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Loader
{
    /**
     * 自動(dòng)加載類
     * @param $class 類名
     */
    public static function autoload($class)
    {
        $path = '';
            $path = str_replace('_', '/', $class) . '.php';
        include_once($path);
    }
}
/**
 * sql自動(dòng)加載
 */
spl_autoload_register(array('Loader', 'autoload'));

路由,實(shí)例化控制器,調(diào)用方法,你寫(xiě)的東西就開(kāi)始執(zhí)行了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * 路由
 */
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');
}

初步的自動(dòng)加載就完成了

到此這篇關(guān)于PHP實(shí)現(xiàn)自動(dòng)加載機(jī)制的文章就介紹到這了,更多相關(guān)PHP自動(dòng)加載內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/yuxing/archive/2010/06/19/1760742.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一色桃子av大全在线播放 | 久久国产精品99国产 | 99精品视频在线导航 | 久久99偷拍视频 | 一级免费 | 欧美精品一级 | 高清av在线| 欧美激情精品久久久久久久久久 | 911精品影院在线观看 | 亚洲一区播放 | 特一级毛片 | 日本成人一区二区三区 | 一本色道精品久久一区二区三区 | 天天草天天爱 | 久久精品伊人网 | 毛片视频网站在线观看 | 日本人乱人乱亲乱色视频观看 | 国产三级精品最新在线 | 一区二区久久电影 | 久久综合给合久久狠狠狠97色69 | 欧美一级淫片免费播放口 | 欧美a在线观看 | 成人午夜天堂 | 国产精品高潮99久久久久久久 | 国产一级免费在线视频 | 亚洲免费视频大全 | 欧美黄色小视频 | 99久久久国产精品免费观看 | 国产午夜精品久久久久婷 | 久综合| 欧美高清另类自拍视频在线看 | 视频www| 欧美综合日韩 | 精品一区二区三区在线观看视频 | 黄色免费小网站 | 超碰人人做人人爱 | 国产精品免费一区二区三区都可以 | 国产成人在线一区二区 | 精品国产一区二区亚洲人成毛片 | 内地av在线| 国产亚洲精久久久久久蜜臀 |