php加载autoload,php自动加载类__autoload()的方法_PHP教程
本文章來給大家簡單的介紹一下關(guān)于php自動加載類__autoload()的方法,希望此方法對各位同學(xué)會有所幫助哦。
作用:當(dāng)在程序中需要實例化一個類,剛好這這類又不是在本文件中,則需要用包含函數(shù)將外部文件包含進(jìn)來。但是,當(dāng)要用的外部類很多后,就會發(fā)現(xiàn)用包含函數(shù)會顯得十分的繁瑣,這是就可以用__autoload()全局函數(shù)自動加載類。
當(dāng)在index.php中要使用前面三個類時,就需要寫三個例如include("name.class.php") 這樣的方法,效率會十分低,但如果使用了__autoload()函數(shù)就不用這樣麻煩了,只需要寫這樣一個函數(shù)方法就可以了:
在 PHP 5 中,不再需要這樣了。可以定義一個 __autoload() 函數(shù),它會在試圖使用尚未被定義的類時自動調(diào)用。通過調(diào)用此函數(shù),腳本引擎在 PHP 出錯失敗前有了最后一個機會加載所需的類。
在下例中將通過實例來說明 __autoload() 是如何使用的。
首先定義一個類ClassA,文件名為ClassA.class.php
代碼如下
復(fù)制代碼
class ClassA{
public function funa(){
echo "classA loaded successfully!
";
}
}
然后在相同目錄下再定義另一個類ClassB,文件名為ClassB.class.php,ClassB繼承ClassA
代碼如下
復(fù)制代碼
class ClassB extends ClassA {
public function funb(){
echo "classB also loaded successfully!
";
}
}
最后在與上面兩個文件相同目錄下再定義一個autoload.php(這個文件名隨便取)
代碼如下
復(fù)制代碼
function __autoload($class_name) {
require_once ("./".ucfirst($class_name).'.class.php');//ucfirst使類名首字母轉(zhuǎn)換為大寫
}
$obj = new ClassB();
$obj->funa();
$obj->funb();
?>
運行autoload.php的程序,看結(jié)果:
classA loaded successfully!
classB also loaded successfully!
例子: 文件夾下有這樣幾個文件:
User.class.php;
Person.class.php;
Message.class.php;
index.php;
我們就可以這樣操作
代碼如下
復(fù)制代碼
index.php
function __autoload($className){ //ucfirst() 將字符串首字母變?yōu)榇髮?/p>
include("ucfirst($className)".class.".php"); }
/**************
*例如:在index.php文件中實例化User.class.php中的User類,如果不存在則自動調(diào)用__autoload()函數(shù)
代碼如下
復(fù)制代碼
*,將類名User作為參數(shù)傳入
*************/
$user=new User();
//通過自動加載類調(diào)用User.class.php文件
$person=new Person();
//通過自動加載類調(diào)用Person.class.php文件
$Message=new Message();
//通過自動加載類調(diào)用Message.classphp文件 function="" message="new" person="new" user="new">
http://www.bkjia.com/PHPjc/632689.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632689.htmlTechArticle本文章來給大家簡單的介紹一下關(guān)于php自動加載類__autoload()的方法,希望此方法對各位同學(xué)會有所幫助哦。 作用:當(dāng)在程序中需要實例化一...
總結(jié)
以上是生活随笔為你收集整理的php加载autoload,php自动加载类__autoload()的方法_PHP教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于jmx监控kafka_0542-6.
- 下一篇: 帝国cms php替换,帝国CMS内容关