程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP中__autoload與smarty3沖突的解決方法

PHP中__autoload與smarty3沖突的解決方法

編輯:PHP綜合

今天更新了smarty到3.0,結果發現項目中的__autoload()不能用了,

作為一個剛學習PHP 的菜鳥新手,搞了半天才明白問題出在它倆的沖突上,郁悶了好幾天。後通過查看,Smarty3.0 中的SMARTY2_BC_NOTES文件,得 知Smarty3.0跟php的__autoload()有沖突:

——————————————————————————-——-

== Autoloader ==

Smarty 3 does register its own autoloader with spl_autoload_register. If your code has

an existing __autoload function then this function must be explicitly registered on

the __autoload stack. See http://us3.php.net/manual/en/function.spl-autoload-register.php

for further details.

——————————— —————————————————————

解決辦法是使用spl_autoload_register()注冊自己的加載類。

現在給出配置前後的代碼:

————————————————————————————————————

  if(substr($className, -6)=="Action"){   
   include(APP_CLASS_PATH.'Action/'.$className.".class.php");   
  }elseif(substr($className, -5)=="Model"){   
   include(APP_CLASS_PATH.'Model/'.$className.".class.php");   
  }elseif($className=="Smarty"){   
   require_once NET_ROOT."Smarty/Smarty.class.php";   
  }elseif(substr($className, -6)=="Public"){   
 include(APP_CLASS_PATH.'Public/'.$className.".class.php");   
  }   
 ——————————————————————————————   

class ClassAutoloader {   
 public function __construct() {   
  spl_autoload_register(array($this, 'loader'));   
 }   
 private function loader($className) {   
  if(substr($className, -6)=="Action"){   
   echo '1';   
   include(APP_CLASS_PATH.'Action/'.$className.".class.php");   
  }elseif(substr($className, -5)=="Model"){   
   echo '2';   
   include(APP_CLASS_PATH.'Model/'.$className.".class.php");   
  }elseif($className=="Smarty"){   
   echo '3';   
   require_once NET_ROOT."Smarty/Smarty.class.php";   
  }elseif(substr($className, -6)=="Public"){   
   echo '4';   
   include(APP_CLASS_PATH.'Public/'.$className.".class.php");   
  }   
 }   
}   
$autoloader = new ClassAutoloader();

希望能幫助遇到此問題的朋友,讓大家少走彎路。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved