php魔術方法 autoload

2021-06-26 15:03:42 字數 1438 閱讀 9135

參考:加上一點點自己的理解和疑惑

class_1.php

<?php

class class_1

public function test()

}?>

class_2.php

<?php

class class_2 extends class_1 }

?>

如果要在main.php檔案中使用的class_1類的話,要先requireclass_1檔案和class_2檔案,不然會報錯

但是用__autoload方法的話,只需要

main.php

<?php

function __autoload($name)else

} //$obj_1=new class_1();

$obj_2=new class_2();

$obj_2->test();

?>

__autoload函式回在例項化物件之前執行,而且這裡沒有例項化class_2的時候並沒有先例項化class_1,說明還沒有匯入class_1.php檔案,但是

不會報錯,說明在匯入物件的時候回去判斷匯入當前物件繼承的物件的相應php檔案,不過要注意的是,這裡的class_1和class_2是在同一級目錄下的,如果不是同一級目錄的話,還是會報錯

另外乙個需要注意的是,類名和類的檔名必須一致,才能更方便的使用魔術函式__autoload;

2014/11/4

在定義了命名空間的檔案定義autoload函式

<?php

namespace zj;

use zj_2;

class class_1

}function __autoload ( $class_name )

spl_autoload_register('zj\__autoload');

$temp=new zj_2\class_2();

輸出:this is autoloadclass_2

另外一提,class_exists函式也會觸發autoload函式

<?php

namespace zj;

use zj_2;

class class_1

}function __autoload ( $class_name )

spl_autoload_register('zj\__autoload');

//$temp=new zj_2\class_2();

var_dump(class_exists('zj_2\class_2'));

?>

輸出:

this is autoload

boolean

true

php魔術方法 autoload

autoload 方法是乙個特殊函式,它不是乙個類方法,而是單獨的函式,在類外被宣告,將在例項化乙個還沒被宣告的類中呼叫。舉個栗子 require once test a.php require once test b.php require once test c.php if 條件a else ...

php 魔術方法 autoload

php在魔術函式 autoload 方法出現以前,如果你要在乙個程式檔案中例項化100個物件,那麼你必須用include或者require包含進來100個類檔案,或者你把這100個類定義在同乙個類檔案中 相信這個檔案一定會非常大。但是 autoload 方法出來了,以後就不必為此大傷腦筋了,這個類會...

php魔術常量,魔術方法

魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...