手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2009年07月8日的文章

在手册上看到的spl_autoload

在手册上看到的,原文地址为:http://cn.php.net/manual/en/function.spl-autoload.php

很吃惊,原来,在默认情况下,spl_autoload的效率并不高?
我没有测试,原文测试的时间在07年,不知道现在的效率怎么样了。以后有空的时候测试一下。。。
以下是原文:
Note that, the orders of file extensions is important for performance. You should make the priority of your favourite file extension higest or use only one extension for your class files. Check out this example:

Some class files:

ClassA.php

PHP代码
  1. <?php class ClassA { var $val = 'Hello from class "ClassA"'; } ?>  

ClassB.php
PHP代码
  1. <?php class ClassB { var $val = 'Hello from class "ClassB"'; } ?>  

ClassC.php
PHP代码
  1. <?php class ClassC { var $val = 'Hello from class "ClassC"'; } ?>  

ClassD.php
PHP代码
  1. <?php class ClassD { var $val = 'Hello from class "ClassD"'; } ?>  

ClassE.php
PHP代码
  1. <?php class ClassE { var $val = 'Hello from class "ClassE"'; } ?>  


1. Simple:
PHP代码
  1. <?php  
  2. // default priority: .inc .php  
  3. for($n=65; $n<70; $n++) {  
  4.     $className = 'Class'.chr($n);  
  5.     spl_autoload($className);  
  6.     $ins = new $className;  
  7.     echo $ins->val.'<br>';  
  8. }  
  9. // 4.2 miliseconds  
  10. ?>  


2. Change priority:
PHP代码
  1. <?php  
  2. spl_autoload_extensions('.php,.inc');  
  3. // new priority: .php .inc  
  4. for($n=65; $n<70; $n++) {  
  5.     $className = 'Class'.chr($n);  
  6.     spl_autoload($className);  
  7.     $ins = new $className;  
  8.     echo $ins->val.'<br>';  
  9. }  
  10. // 1.4 miliseconds  
  11. ?>  


Or you can use this simple function that runs a bit faster for the extensions with lower priority :)
PHP代码
  1. <?php  
  2. function my_autoload($className$extList='.inc,.php') {  
  3.     $ext = explode(',',$extList);  
  4.     foreach($ext as $x) {  
  5.         $fname = $className.$x;  
  6.         if(@file_exists($fname)) {  
  7.             require_once($fname);  
  8.             return true;  
  9.         }  
  10.     }  
  11.     return false;  
  12. }  
  13.   
  14. for($n=65; $n<70; $n++) {  
  15.     $className = 'Class'.chr($n);  
  16.     my_autoload($className);  
  17.     $ins = new $className;  
  18.     echo $ins->val.'<br>';  
  19. }  
  20. // 2.6 miliseconds  
  21. ?>  

---
Safak Ozpinar - Istanbul University, Computer Engineering

Tags: spl_autoload

纪念那逝去的岁月

纪念那逝去的岁月。
本想摘取一些各大网站的新闻、稿件来做纪念的,结果
一片冷青

怎么办?我也不敢发声音。

只能从百度百科里找找资料了。

地址为:http://baike.baidu.com/view/10754.htm

七七事变也称“卢沟桥事变”(Lugouqiao Incident / Lugou Bridge Incident/Lukouchiao Bridge Incident/Marco Polo Bridge Incident/Roko Bridge Incident)

虽然我不喜欢百度,但这个时候还是很感谢,因为他里面有这么一段:“七七事变”72年

再次怀念一下