¤¤¥¡½×¾Â - CENTER BBS
¼ÐÃD:
[PHP] ¨ç¼Æspl_autoload_register() & __autoload()¤¶²Ð¤Î¥Îªk¹ê§@
[¥´¦L¥»¶]
§@ªÌ:
³¢¤l¿ú
®É¶¡:
2013-9-24 09:56
¼ÐÃD:
[PHP] ¨ç¼Æspl_autoload_register() & __autoload()¤¶²Ð¤Î¥Îªk¹ê§@
1.__autoload() ¡X¡X ¦Û°Ê¥[¸ü¨ç¼Æ
§Ú§â«Ü¦hÓÃþ¤å¥ó¥HÃþ¦W.class.phpªº§Î¦¡¦s©ñ¦bclass¥Ø¿ý¤¤¡A¦bclassªº¦P¯Å¥Ø¿ý¤¤«Ø¥ß¤@Óindex.php¡C¶i¤Jclass¥Ø¿ý¸Ì±¤À§O«Ø¥ßclass1.class.php¡Bclass2.class.php¡Bclass3.class.php¤å¥ó¡A¤À§O¬°¸Ì±ªº¤å¥ó²K¥[¤@¤U¥N½X
<?php
//class1.class.php¤¤
class class1{
public function __construct(){
echo "class1";
}
}
?>
<?php
//class2.class.php¤¤
class class2{
public function __construct(){
echo "class2";
}
}
?>
<?php
//class3.class.php¤¤
class class3{
public function __construct(){
echo "class3";
}
}
?>
½Æ»s¥N½X
index.php¤å¥ó¤¤¼g¤J
<?php
function __autoload($classname){
$filename = "./class/".$classname.".class.php";
if(is_file($filename)){
include $filename;
}
}
$test1 = new class1();
echo '<br/>';
$test1 = new class2();
echo '<br/>';
$test1 = new class3();
//结ªG¬O
class1
class2
class3
?>
½Æ»s¥N½X
§Ú̦¨¥\ªº¦Û°Ê¥[¸ü¤Fclass¤U±©Ò¦³ªºn¥[¸üªºÃþ¡C
2.spl_autoload_register() ¡X¡X µù¥U__autoload()¨ç¼Æ
class¸Ì±ªº¤å¥ó¤£°µ¥ô¦ó§ïÅÜ¡A¥u¬O²³æªº§ï¼g¤@¤Uindex.php
<?php
// 写¤@个loadclass¨ç数
// loadclass¨ç数¤£¨ã备¦Û动¥[载类ªº¥\¯à
function loadclass($classname){
$filename = "./class/".$classname.".class.php";
if(is_file($filename)){
include $filename;
}
}
// spl_autoload_register()¨ç数让这个loadclass¨ã备¤F¦Û动¥[载类ªº¥\¯à
spl_autoload_register("loadclass");
$test1 = new class1();
echo '<br/>';
$test1 = new class2();
echo '<br/>';
$test1 = new class3();
?>
½Æ»s¥N½X
¦Ü©ó©Ê¯à¤W±¡Aµo²{«Ü¦h®Ø¬[¸Ì±³£¬O¥Îªºspl_autoload_register()¡A°Ñ¦Ò¤åÄm»¡ªk¬Ospl_autoload_register()¸û·s¥B®Ä¯à¸û¦n¡C
spl_autoload_register() ¥Îªk¹êÅç¹Lµ{¡G
²Ä¤@¨B
¡A¨Ï¥Îspl_autoload_register()¨ç¼Æª`¥Uload()¤èªk
¥N½X¦p¤U:
<?php
function load(){
require_once 'lib.php';
}
spl_autoload_register('load');
?>
½Æ»s¥N½X
¨ä¤¤lib.php¤å¥ó¥N½X¦p¤U
¥N½X¦p¤U:
<?php
class className{
function method(){
echo 'a method in class';
}
}
function onlyMethod(){
echo 'method only';
}
?>
½Æ»s¥N½X
»¡©ú¡Glib.php¤å¥ó为¤@ÓclassNameÃþ©M¤@ÓonlyMethod¨ç¼Æ
²Ä¤G¨B
¡A½Õ¥Î¦Û°Ê¥[¸üÃþ
¥N½X¦p¤U:
$class = new className();
$class->method();
onlyMethod();
½Æ»s¥N½X
¿é¥X¡G
a method in class
method only
»¡©ú¡G¹ê¨Ò¤ÆclassNameÃþ¡A¨Ã½Õ¥ÎÃþmethod()¨ç¼Æ¡A¦P®É½Õ¥ÎonlyMethod()¤èªk¡A¿é¥X¥¿±`¡A¨S¦³¥X²{¿ù»~
²Ä¤T¨B
¡Aª½±µ½Õ¥Î¨ç¼Æ
onlyMethod();
½Æ»s¥N½X
»¡©ú¡G¨S¦³¹ê¨Ò¤ÆÃþ¡Aª½±µ½Õ¥Îlib.php¤å¥ó¤¤ªºonlyMethod()¨ç¼Æ
¿é¥X¡G
Fatal error: Call to undefined function onlyMethod() in '...(¬Ù²¤¸ô®|)'
²Ä¥|¨B
¡A¹ê¨Ò¤ÆclassNameÃþ¡A¦Aª½±µ½Õ¥Î
$class = new className();
onlyMethod();
½Æ»s¥N½X
¿é¥X¡Gmethod only
±q¤W±ªº¥|¨B¹êÅçµo²{¡A¦pªG¥[¸üªº¤å¥ó¥]§t¨ç¼Æ¡A¨Ï¥Î«h¤@©w»Ýn¹ê¨Ò¤ÆùرªºÃþ¡A§_«h´N²£¥Í²§±`±¡ªp Call to undefined function¿ù»~¡A¨ãÅé¦b¨Ï¥Î¤¤nª`·N¤@¤U¡C
Åwªï¥úÁ{ ¤¤¥¡½×¾Â - CENTER BBS (https://centerbbs.com/)
Powered by Discuz! X3