第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

什么是自動(dòng)加載;如何使用spl_autoload,__ autoload和spl_autoload

什么是自動(dòng)加載;如何使用spl_autoload,__ autoload和spl_autoload

PHP
翻閱古今 2019-10-23 15:24:59
我正在學(xué)習(xí)高級(jí)PHP標(biāo)準(zhǔn),并嘗試實(shí)現(xiàn)新的有用方法。之前,我__autoload只是為了避免在每個(gè)頁(yè)面上包含多個(gè)文件而逃脫,但是最近我看到了一個(gè)提示__autoload manualspl_autoload_register()為自動(dòng)加載類提供了更靈活的替代方法。因此,不建議使用__autoload(),以后可能不建議使用或?qū)⑵鋭h除。但我真的不知道如何實(shí)施spl_autoload和spl_autoload_register
查看完整描述

3 回答

?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

spl_autoload_register() 允許您注冊(cè)PHP將放入堆棧/隊(duì)列中的多個(gè)函數(shù)(或您自己的Autoload類中的靜態(tài)方法),并在聲明“新類”時(shí)順序調(diào)用。


因此,例如:


spl_autoload_register('myAutoloader');


function myAutoloader($className)

{

    $path = '/path/to/class/';


    include $path.$className.'.php';

}


//-------------------------------------


$myClass = new MyClass();

在上面的示例中,“ MyClass”是您要實(shí)例化的類的名稱,PHP將該名稱作為字符串傳遞給spl_autoload_register(),從而允許您選擇變量并將其用于“包含”適當(dāng)?shù)念?文件。因此,您不需要特別通過(guò)include / require語(yǔ)句來(lái)包含該類。


就像上面的示例一樣,只需簡(jiǎn)單地調(diào)用您想要實(shí)例化的類,并且由于您已經(jīng)注冊(cè)了spl_autoload_register()自己的函數(shù)(通過(guò)),該函數(shù)可以確定所有類的位置,因此PHP將使用該函數(shù)。


使用的好處spl_autoload_register()是,與__autoload()您不同的是,您不需要在創(chuàng)建的每個(gè)文件中實(shí)現(xiàn)自動(dòng)加載功能。spl_autoload_register()還可以讓您注冊(cè)多個(gè)自動(dòng)加載功能,以加快自動(dòng)加載速度并使其變得更加容易。


例:


spl_autoload_register('MyAutoloader::ClassLoader');

spl_autoload_register('MyAutoloader::LibraryLoader');

spl_autoload_register('MyAutoloader::HelperLoader');

spl_autoload_register('MyAutoloader::DatabaseLoader');


class MyAutoloader

{

    public static function ClassLoader($className)

    {

         //your loading logic here

    }



    public static function LibraryLoader($className)

    {

         //your loading logic here

    }

關(guān)于spl_autoload,手冊(cè)指出:


此功能旨在用作的默認(rèn)實(shí)現(xiàn)__autoload()。如果未指定其他內(nèi)容且spl_autoload_register()沒(méi)有任何參數(shù)調(diào)用該函數(shù),則此函數(shù)將用于以后對(duì)的任何調(diào)用__autoload()。


實(shí)際上,如果所有文件都位于一個(gè)目錄中,并且您的應(yīng)用程序不僅使用.php文件,而且還使用擴(kuò)展名為.inc的自定義配置文件,那么您可以使用的一種策略是添加包含所有內(nèi)容的目錄文件到PHP的包含路徑(通過(guò)set_include_path())。

而且,由于還需要配置文件,因此將用于spl_autoload_extensions()列出要PHP查找的擴(kuò)展名。


例:


set_include_path(get_include_path().PATH_SEPARATOR.'path/to/my/directory/');

spl_autoload_extensions('.php, .inc');

spl_autoload_register();

由于spl_autoload是__autoload()magic方法的默認(rèn)實(shí)現(xiàn),因此當(dāng)您嘗試實(shí)例化新類時(shí),PHP將調(diào)用spl_autoload。


希望這可以幫助...


查看完整回答
反對(duì) 回復(fù) 2019-10-23
?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊

從PHP 5.3開(kāi)始,您可以使用spl_autoload_register()名稱空間,這意味著您可以組織項(xiàng)目并自動(dòng)加載php類,而無(wú)需任何要求或包含,也無(wú)需重新定義__autoload()函數(shù)。


為了演示這種行為,只需創(chuàng)建一個(gè)名為index.php的文件:


<?php

spl_autoload_register();

var_dump(new Main\Application);

然后在index.php文件旁邊創(chuàng)建一個(gè)名為Main的文件夾。最后,在Main中創(chuàng)建一個(gè)名為Application.php的文件,并將以下代碼粘貼到其中:


<?php namespace Main;

class Application{}


查看完整回答
反對(duì) 回復(fù) 2019-10-23
  • 3 回答
  • 0 關(guān)注
  • 694 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)