国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

摜蛋游戲WEB版——PHP后臺(tái)實(shí)現(xiàn)源碼

php中文網(wǎng)
發(fā)布: 2016-08-08 09:31:43
原創(chuàng)
2774人瀏覽過(guò)

以下是摜蛋游戲WEB版的部分后臺(tái)源碼,全部源碼陸續(xù)發(fā)布。當(dāng)有大量的類(lèi)文件要包含的時(shí)候,我們只要確定相應(yīng)的規(guī)則,然后在__autoload()函數(shù)中,將類(lèi)名與實(shí)際的磁盤(pán)文件對(duì)應(yīng)起來(lái),就可以實(shí)現(xiàn)lazy loading的效果。從這里我們也可以看出__autoload()函數(shù)的實(shí)現(xiàn)中最重要的是類(lèi)名與實(shí)際的磁盤(pán)文件映射規(guī)則的實(shí)現(xiàn)。?

但現(xiàn)在問(wèn)題來(lái)了,假如在一個(gè)系統(tǒng)的實(shí)現(xiàn)中,假如需要使用很多其它的類(lèi)庫(kù),這些類(lèi)庫(kù)可能是由不同的開(kāi)發(fā)工程師開(kāi)發(fā),其類(lèi)名與實(shí)際的磁盤(pán)文件的映射規(guī)則不盡相同。這時(shí)假如要實(shí)現(xiàn)類(lèi)庫(kù)文件的自動(dòng)加載,就必須在__autoload()函數(shù)中將所有的映射規(guī)則全部實(shí)現(xiàn),因此__autoload()函數(shù)有可能會(huì)非常復(fù)雜,甚至無(wú)法實(shí)現(xiàn)。最后可能會(huì)導(dǎo)致__autoload()函數(shù)十分臃腫,這時(shí)即便能夠?qū)崿F(xiàn),也會(huì)給將來(lái)的維護(hù)和系統(tǒng)效率帶來(lái)很大的負(fù)面影響。在這種情況下,在php5引入spl標(biāo)準(zhǔn)庫(kù),一種新的解決方案,即spl_autoload_register()函數(shù)。

2、spl_autoload_register()函數(shù)

此函數(shù)的功能就是把函數(shù)注冊(cè)至SPL的__autoload函數(shù)棧中,并移除系統(tǒng)默認(rèn)的__autoload()函數(shù)。下面的例子可以看出:

[cpp] view plaincopyprint?

  1. function?__autoload($class_name)?{??
  2. ????echo?'__autload?class:',?$class_name,?'
    '
    ;??
  3. }??
  4. function?classLoader($class_name)?{??
  5. ????echo?'SPL?load?class:',?$class_name,?'
    '
    ;??
  6. }??
  7. spl_autoload_register('classLoader');??
  8. new?Test();//結(jié)果:SPL?load?class:Test??
function __autoload($class_name) {
    echo '__autload class:', $class_name, '<br />';
}
function classLoader($class_name) {
    echo 'SPL load class:', $class_name, '<br />';
}
spl_autoload_register('classLoader');
new Test();//結(jié)果:SPL load class:Test
登錄后復(fù)制

語(yǔ)法:bool??spl_autoload_register?( [callback $autoload_function] )??? 接受兩個(gè)參數(shù):一個(gè)是添加到自動(dòng)加載棧的函數(shù),另外一個(gè)是加載器不能找到這個(gè)類(lèi)時(shí)是否拋出異常的標(biāo)志。第一個(gè)參數(shù)是可選的,并且默認(rèn)指向spl_autoload()函數(shù),這個(gè)函數(shù)會(huì)自動(dòng)在路徑中查找具有小寫(xiě)類(lèi)名和.php擴(kuò)展或者.ini擴(kuò)展名,或者任何注冊(cè)到spl_autoload_extensions()函數(shù)中的其它擴(kuò)展名的文件。

[php] view plaincopyprint?

  1. class?CalssLoader?????
  2. {?????
  3. ????public?static?function?loader($classname)?????
  4. ????{?????
  5. ????????$class_file?=?strtolower($classname).".php";?????
  6. ????????if?(file_exists($class_file)){?????
  7. ????????????require_once($class_file);?????
  8. ????????}?????
  9. ????}?????
  10. }??????
  11. //?方法為靜態(tài)方法?????
  12. spl_autoload_register('CalssLoader::loader');??????
  13. $test?=?new?Test();??
<?php  
class CalssLoader   
{   
    public static function loader($classname)   
    {   
        $class_file = strtolower($classname).".php";   
        if (file_exists($class_file)){   
            require_once($class_file);   
        }   
    }   
}    
// 方法為靜態(tài)方法   
spl_autoload_register('CalssLoader::loader');    
$test = new Test();
登錄后復(fù)制
? ? ? 一旦調(diào)用spl_autoload_register()函數(shù),當(dāng)調(diào)用未定義類(lèi)時(shí),系統(tǒng)會(huì)按順序調(diào)用注冊(cè)到spl_autoload_register()函數(shù)的所有函數(shù),而不是自動(dòng)調(diào)用__autoload()函數(shù)。如果要避免這種情況,需采用一種更加安全的spl_autoload_register()函數(shù)的初始化調(diào)用方法:

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

[php] view plaincopyprint?

  1. if(false?===?spl_autoload_functions()){??????
  2. ????if(function_exists('__autoload')){??????
  3. ????????spl_autoload_registe('__autoload',false);??????
  4. ????}??????
  5. ?}?????
if(false === spl_autoload_functions()){    
    if(function_exists('__autoload')){    
        spl_autoload_registe('__autoload',false);    
    }    
 }   
登錄后復(fù)制

spl_autoload_functions()函數(shù)會(huì)返回已注冊(cè)函數(shù)的一個(gè)數(shù)組,如果SPL自動(dòng)加載棧還沒(méi)有被初始化,它會(huì)返回布爾值false。然后,檢查是否有一個(gè)名為_(kāi)_autoload()的函數(shù)存在,如果存在,可以將它注冊(cè)為自動(dòng)加載棧中的第一個(gè)函數(shù),從而保留它的功能。之后,可以繼續(xù)注冊(cè)自動(dòng)加載函數(shù)。

還可以調(diào)用spl_autoload_register()函數(shù)以注冊(cè)一個(gè)回調(diào)函數(shù),而不是為函數(shù)提供一個(gè)字符串名稱。如提供一個(gè)如array('class','method')這樣的數(shù)組,使得可以使用某個(gè)對(duì)象的方法。

下一步,通過(guò)調(diào)用spl_autoload_call('className')函數(shù),可以手動(dòng)調(diào)用加載器,而不用嘗試去使用那個(gè)類(lèi)。這個(gè)函數(shù)可以和函數(shù)class_exists('className',false)組合在一起使用以嘗試去加載一個(gè)類(lèi),并且在所有的自動(dòng)加載器都不能找到那個(gè)類(lèi)的情況下失敗。

[php] view plaincopyprint?

  1. f(spl_autoload_call('className')?&&?class_exists('className',false)){??????
  2. ????
  3. ????}?else?{??????
  4. ????}?????
f(spl_autoload_call('className') && class_exists('className',false)){    
  
    } else {    
    }   
登錄后復(fù)制
SPL自動(dòng)加載功能是由spl_autoload() ,spl_autoload_register(), spl_autoload_functions() ,spl_autoload_extensions()和spl_autoload_call()函數(shù)提供的。

??

以上就介紹了摜蛋游戲WEB版——PHP后臺(tái)實(shí)現(xiàn)源碼,包括了方面的內(nèi)容,希望對(duì)PHP教程有興趣的朋友有所幫助。

PHP速學(xué)教程(入門(mén)到精通)
PHP速學(xué)教程(入門(mén)到精通)

PHP怎么學(xué)習(xí)?PHP怎么入門(mén)?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門(mén)到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!

下載
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
開(kāi)源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)