喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: 另类方法实现自动载入自定义函数文件auto_load_function  
  本主题被作者加入到他/她的 Blog 中  
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
另类方法实现自动载入自定义函数文件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
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(参数可以是数组)。真是方便之极
?>
嗯,的确达php4中实现autoload自定义函数的目的 ! 很神奇吧?这是一种非常另类的用法!  在国内,还没有见过有实现这样的效果。在国外,也不知道有没有。
到底这样的技巧对你的编程有没有好处?自已取舍吧。




五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-7-14 10:32 AM#1
查看资料  访问主页  Blog  发短消息  QQ . .   顶部
 
phphp
版主
Rank: 7Rank: 7Rank: 7
加班一族


UID 65188
精华 1
积分 184
帖子 3007
金钱 173 喜悦币
威望 10
人脉 1
阅读权限 100
注册 2005-7-20
来自 北京市海淀区
状态 离线
[推荐阅读] 网站构架师要做哪些方面的事情
有几个传几个吧
auto_load_function::r('b', 'c', 'd')




书到用时方恨少, 事非经过不知难
2006-7-15 02:34 PM#2
查看资料  访问主页  Blog  发短消息  QQ . .   顶部
 
蟋蟀
版主
Rank: 7Rank: 7Rank: 7
村里巡逻队长


UID 67242
精华 0
积分 2036
帖子 1763
金钱 2036 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2005-12-17
来自 福建
状态 离线
[推荐阅读] 使用mysql5碰到的问题
<?
/**
* 函数 调用文件
* 参数 未确定
* 返回  参数数组
*/
  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"));
没太明白,是不是这个意思。




吉林php群
27089230
2006-7-15 03:29 PM#3
查看资料  Blog  发短消息  QQ . .   顶部
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[推荐阅读] 信用卡办下来鸟~~~
好象传递无限多也可以,并且不用数组.



doc
2006-7-16 10:35 AM#4
查看资料  访问主页  发短消息  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] 求网页重构兼职 2名(北京海淀)
大家还没看明白。附个文件上来,应该会明白的。相信这个,是很有魅力的!

 附件: 您所在的用户组无法下载或查看附件



五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-7-16 01:24 PM#5
查看资料  访问主页  Blog  发短消息  QQ . .   顶部
 
phphp
版主
Rank: 7Rank: 7Rank: 7
加班一族


UID 65188
精华 1
积分 184
帖子 3007
金钱 173 喜悦币
威望 10
人脉 1
阅读权限 100
注册 2005-7-20
来自 北京市海淀区
状态 离线
[推荐阅读] 诚聘程序员
看明白了,没有10个参数出不来10个,当然可以屏蔽错误 .
为调用一个函数而实例化一个类没必要,用static方法或直接用函数好些
常用的还是放一起吧,动态载入更慢 

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




书到用时方恨少, 事非经过不知难
2006-7-16 06:03 PM#6
查看资料  访问主页  Blog  发短消息  QQ . .   顶部
 
phphp
版主
Rank: 7Rank: 7Rank: 7
加班一族


UID 65188
精华 1
积分 184
帖子 3007
金钱 173 喜悦币
威望 10
人脉 1
阅读权限 100
注册 2005-7-20
来自 北京市海淀区
状态 离线
[推荐阅读] 关于争议性帖子不宜直接删除的说明
再加个function_exists( $f[0] )



书到用时方恨少, 事非经过不知难
2006-7-16 07:46 PM#7
查看资料  访问主页  Blog  发短消息  QQ . .   顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.025325 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP