喜悦国际村 » 喜悦原创 » 另类方法实现自动载入自定义函数文件auto_load_function

页: [1]
qh6632006-7-14 02:32 AM
另类方法实现自动载入自定义函数文件auto_load_function

做大型项目时。需要准确地调用需要用到的函数,而不能包含数个函数而不管用不用得上,非常低效率。
这就需要一个规划。目录结构是规划的一个非常重要的组成部份。一般会用一个目录专门用来存放自定函数。自定义函数的文件名格式如:

function.get_ip.php函数名get_ip()与文件名对应
function.get_browser.php函数名get_browser()与文件名对应
function.size_readable.php函数名get_browser()与文件名对应
....

那么,如果需要使用到一个自定义函数时,一般都需要 include_once 自定义函数的文件名。然后执行相对应的自定义函数。这样一个反复的include操作,给编程带来一点不便。
如果,有象php5中的__autoload函数这样自动载入类文件,该多好呀!编程是多么愉块!

嗯,别急,慢慢来!
举个例子,看下面的这个函数。返回的是一个文件名,参数1及参数2。
文件名:function.b.php
[php]
function b($b1='1',$b2='2'){
        $a .= 'function.b.php'."<br>";
        $a .= 'b1:'.$b1."<br>";
        $a .= 'b2:'.$b2."<br>";
        return $a;
}
[/php]
[php]
class auto_load_function
{
        var $pach;
        //无此函数失败返回false
        function r(){
                $f = func_get_args();
                $n = $this->pach.'function.'.$f['0'].'.php';
                if(is_file($n)){
                        include_once($n);
                        return $f['0'] ( $f['1'], $f['2'], $f['3'], $f['4'], $f['5'], $f['6'], $f['7'], $f['8'], $f['9'], $f['10']);//预定10个参数,估计没几个人写的函数会超过10个参数的。如果真的超过10个参数,就自已加上去吧。
                }
                return false;
        }
}
$r = new auto_load_function();
$r->path = './';
echo $r->r('b','cc','pp');//看到结果了吗?这句是关键,只一句就自动引入function.b.php函数文件并运行b()函数了,还可以传递参数cc与pp(参数可以是数组)。真是方便之极

[/php]

嗯,的确达php4中实现autoload自定义函数的目的 ! 很神奇吧?这是一种非常另类的用法!  在国内,还没有见过有实现这样的效果。在国外,也不知道有没有。
到底这样的技巧对你的编程有没有好处?自已取舍吧。

phphp2006-7-15 06:34 AM
有几个传几个吧
auto_load_function::r('b', 'c', 'd')

蟋蟀2006-7-15 07:29 AM
<?
/**
* 函数 调用文件
* 参数 未确定
* 返回  参数数组
*/
  function m_include()
    {
     $param=func_get_args();
     $filename=$param[0].".php";
     if(!empty($param) && file_exists($filename))
      {
       include($filename);
       array_shift($param);
       return $param;
      }
     else
     {
      return false;
     }
   }
//调试
  print_r(m_include("input","01.mp3","02.mp3","hml"));
没太明白,是不是这个意思。

fcicqbbs2006-7-16 02:35 AM
好象传递无限多也可以,并且不用数组.

qh6632006-7-16 05:24 AM
大家还没看明白。附个文件上来,应该会明白的。相信这个,是很有魅力的!

phphp2006-7-16 10:03 AM
看明白了,没有10个参数出不来10个,当然可以屏蔽错误 .
为调用一个函数而实例化一个类没必要,用static方法或直接用函数好些
常用的还是放一起吧,动态载入更慢 

[[i] 本帖最后由 phphp 于 2006-7-16 06:11 PM 编辑 [/i]]

phphp2006-7-16 11:46 AM
再加个function_exists( $f[0] )


查看完整版本: 另类方法实现自动载入自定义函数文件auto_load_function


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.006136 second(s), 2 queries