日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php 类加载,关于PHP中类的加载

發(fā)布時(shí)間:2024/7/23 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 类加载,关于PHP中类的加载 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

類(lèi)的訪問(wèn)方式有兩種:

通過(guò)實(shí)例化對(duì)象訪問(wèn)

類(lèi)成員訪問(wèn)

而訪問(wèn)的前提便是內(nèi)存中有類(lèi)的存在,所以需要提前將類(lèi)加載至內(nèi)存中。

1.手動(dòng)加載

//類(lèi)文件 Salary.php

class Salary{

public function Student(){

echo "Salary下面的Student方法";

}

}

?>

應(yīng)用文件:useSalary.php

//$s = new Salary();會(huì)報(bào)錯(cuò),因?yàn)閡seSalaty.php中間未定義Salary類(lèi)

include_once 'Salary.php';//也可以使用require,通常使用_once,因?yàn)轭?lèi)不允許重名

$s = new Salary();

echo $s->Student();

?>

//加載類(lèi)文件是一種比較消耗資源的方式,可以事先使用class_exists()函數(shù)來(lái)判定類(lèi)是否存在,存在就不用加載,不存在才加載

if(!class_exists('Salary')){

//不存在:加載

include_once 'Salary.php';

}

//使用

$s = new Salary();

?>

2.自動(dòng)加載

在PHP7之前使用的自動(dòng)加載機(jī)制:利用系統(tǒng)提供的__autoload()函數(shù),然后當(dāng)系統(tǒng)需要使用類(lèi),而內(nèi)存中又不存在的時(shí)候,系統(tǒng)就會(huì)自動(dòng)調(diào)用__autoload()函數(shù)來(lái)加載類(lèi)文件。

function __autoload($classname){//參數(shù)為類(lèi)名:即當(dāng)前需要訪問(wèn)的類(lèi)的名字

//需要人為定義去哪加載,怎么加載

include_once $classname . '.php';//假定為當(dāng)前目錄下,類(lèi)文件名字為:類(lèi)名.php

}

//使用類(lèi):內(nèi)存目前并沒(méi)有

$s = new Salary();//系統(tǒng)發(fā)現(xiàn)內(nèi)存沒(méi)有Salary,所以調(diào)用__autoload()去加載

?>

//若在不同路徑下

//定義自動(dòng)加載

function __autoload($classname){

$abc_file = 'abc/' . $classname . '.php';//如abc/Salary.php

if(file_exists($c_file)){ //利用file_exists()判斷文件是否存在

include_once $abc_file;

}

}

?>

在PHP7后,不建議使用__autoload()函數(shù),而是使用一種注冊(cè)機(jī)制,將用戶自定義的函數(shù),放到系統(tǒng)內(nèi)部,使用spl_autoload_register(定義好的函數(shù))。

function myself_autoload($classname){//與__autoload()類(lèi)似

$abc_file = 'abc/' . $classname . '.php';//如abc/Salary.php

if(file_exists($c_file)){

include_once $c_file;

}

}

//此時(shí),上述函數(shù)永遠(yuǎn)不會(huì)自動(dòng)運(yùn)行,除非將函數(shù)注冊(cè)到系統(tǒng)內(nèi)部

spl_autoload_register('myself_autoload');

?>

//可以定義多個(gè)方法

function wayone_autoload($classname){

function waytwo_autoload($classname){

}

//此時(shí),上述函數(shù)永遠(yuǎn)不會(huì)自動(dòng)運(yùn)行,除非將函數(shù)注冊(cè)到系統(tǒng)內(nèi)部

spl_autoload_register('wayone_autoload');

spl_autoload_register('waytwo_autoload');

?>

推薦:php教程

總結(jié)

以上是生活随笔為你收集整理的php 类加载,关于PHP中类的加载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。