½Ð¿ï¾Ü ¶i¤J¤â¾÷ª© | Ä~Äò³X°Ý¹q¸£ª©
·j¯Á
¬d¬Ý: 2825|¦^´_: 0

[PHP] [PHP] ¨ç¼Æspl_autoload_register() & __autoload()¤¶²Ð¤Î¥Îªk¹ê§@

[½Æ»sÃì±µ]
µoªí©ó 2013-9-24 09:56:40 | Åã¥Ü¥þ³¡¼Ó¼h |¾\Ū¼Ò¦¡
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
  1. <?php
  2. //class1.class.php¤¤
  3. class class1{
  4.         public function __construct(){
  5.                 echo "class1";
  6.         }
  7. }
  8. ?>

  9. <?php
  10. //class2.class.php¤¤
  11. class class2{
  12.         public function __construct(){
  13.                 echo "class2";
  14.         }
  15. }
  16. ?>

  17. <?php
  18. //class3.class.php¤¤
  19. class class3{
  20.         public function __construct(){
  21.                 echo "class3";
  22.         }
  23. }
  24. ?>
½Æ»s¥N½X
index.php¤å¥ó¤¤¼g¤J
  1. <?php
  2. function __autoload($classname){
  3.         $filename = "./class/".$classname.".class.php";
  4.         if(is_file($filename)){
  5.                 include $filename;
  6.         }
  7. }

  8. $test1 = new class1();
  9. echo '<br/>';
  10. $test1 = new class2();
  11. echo '<br/>';
  12. $test1 = new class3();

  13. //结ªG¬O
  14. class1
  15. class2
  16. class3

  17. ?>
½Æ»s¥N½X
§Ú­Ì¦¨¥\ªº¦Û°Ê¥[¸ü¤Fclass¤U­±©Ò¦³ªº­n¥[¸üªºÃþ¡C



2.spl_autoload_register() ¡X¡X µù¥U__autoload()¨ç¼Æ

class¸Ì­±ªº¤å¥ó¤£°µ¥ô¦ó§ïÅÜ¡A¥u¬O²³æªº§ï¼g¤@¤Uindex.php
  1. <?php
  2. // 写¤@个loadclass¨ç数
  3. // loadclass¨ç数¤£¨ã备¦Û动¥[载类ªº¥\¯à
  4. function loadclass($classname){
  5.         $filename = "./class/".$classname.".class.php";
  6.         if(is_file($filename)){
  7.                 include $filename;
  8.         }
  9. }
  10. // spl_autoload_register()¨ç数让这个loadclass¨ã备¤F¦Û动¥[载类ªº¥\¯à
  11. spl_autoload_register("loadclass");

  12. $test1 = new class1();
  13. echo '<br/>';
  14. $test1 = new class2();
  15. echo '<br/>';
  16. $test1 = new class3();
  17. ?>
½Æ»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:
  1. <?php
  2. function load(){
  3. require_once 'lib.php';
  4. }
  5. spl_autoload_register('load');
  6. ?>
½Æ»s¥N½X
¨ä¤¤lib.php¤å¥ó¥N½X¦p¤U
¥N½X¦p¤U:
  1. <?php
  2. class className{
  3. function method(){
  4. echo 'a method in class';
  5. }
  6. }

  7. function onlyMethod(){
  8. echo 'method only';
  9. }
  10. ?>
½Æ»s¥N½X
»¡©ú¡Glib.php¤å¥ó为¤@­ÓclassNameÃþ©M¤@­ÓonlyMethod¨ç¼Æ

²Ä¤G¨B¡A½Õ¥Î¦Û°Ê¥[¸üÃþ
¥N½X¦p¤U:
  1. $class = new className();
  2. $class->method();
  3. 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ª½±µ½Õ¥Î¨ç¼Æ
  1. 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ª½±µ½Õ¥Î
  1. $class = new className();
  2. 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
±z»Ý­nµn¿ý«á¤~¥i¥H¦^©« µn¿ý | µù¥U

¥»ª©¿n¤À³W«h

¥»½×¾Â¬°«DÀç§Q¤§ºô¸ô¥­¥x¡A©Ò¦³¤å³¹¤º®e§¡¬°ºô¤Í¦Û¦æµoªí¡A¤£¥Nªí½×¾Â¥ß³õ¡I­Y¯A¤Î«IÅv¡B¹Hªkµ¥±¡¨Æ¡A½Ð§iª¾ª©¥D³B²z¡C


Page Rank Check

¼s§i¥Zµn  |   ¥æ´«³sµ²  |   ÃÙ§U§Ú­Ì  |   ªA°È±ø´Ú  |   §K³dÁn©ú  |   «ÈªA¤¤¤ß  |   ¤¤¥¡¤À¯¸

¤â¾÷ª©|¤¤¥¡½×¾Â

GMT+8, 2024-3-29 01:22 , Processed in 0.076628 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

§Ö³t¦^´_ ªð¦^³»³¡ ªð¦^¦Cªí