主頁 > 知識庫 > PHP實(shí)現(xiàn)自動(dòng)加載機(jī)制

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

熱門標(biāo)簽:滄州電銷外呼系統(tǒng)價(jià)格 銀行信貸電話機(jī)器人 上海400客服電話怎么申請 400電話個(gè)人能不能辦理 合肥ai電銷機(jī)器人費(fèi)用 溫州外呼系統(tǒng)招商 凱立德地鐵站地圖標(biāo)注 手機(jī)外呼系統(tǒng)什么原理 天津電銷外呼系統(tǒng)違法嗎

php自動(dòng)加載

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

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

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

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

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

spl_autoload_register()

一個(gè)簡單的例子

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()會自動(dòng)先調(diào)用spl_autoload()在路徑中查找具有小寫文件名的".php"程序.默認(rèn)查找的擴(kuò)展名還有".ini",還可以用spl_autoload_extenstions()注冊擴(kuò)展名.

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

function loader1($class)
{

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

}
function loader2($class)
{
//當(dāng)loader1()找不到時(shí),我來找
}
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)加載

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)用方法,你寫的東西就開始執(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');
}

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

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

您可能感興趣的文章:
  • php自動(dòng)加載代碼實(shí)例詳解
  • php框架CI(codeigniter)自動(dòng)加載與自主創(chuàng)建對象操作實(shí)例分析
  • PHP類的自動(dòng)加載與命名空間用法實(shí)例分析
  • PHP 命名空間和自動(dòng)加載原理與用法實(shí)例分析
  • PHP 自動(dòng)加載類原理與用法實(shí)例分析

標(biāo)簽:酒泉 洛陽 白城 怒江 溫州 金華 赤峰 七臺河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實(shí)現(xiàn)自動(dòng)加載機(jī)制》,本文關(guān)鍵詞  PHP,實(shí)現(xiàn),自動(dòng),加載,機(jī)制,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP實(shí)現(xiàn)自動(dòng)加載機(jī)制》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP實(shí)現(xiàn)自動(dòng)加載機(jī)制的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章