很普通的问题:
就是在向前台输出内容时.有时是同一个内容.但是要求输出的格式不一样.
比仿说同样是个新闻列表.有的新闻的列表需要显示日期字段,有的还需要同时输出新闻的图片.
如何在PHP那部分处理呢?(输出后用JS或CSS控制不在讨论之内). 初级的方法应该是每种输出写一个函数.这样的方法代码重从率太低;我一般是写一个函数,用传参来区分是哪种输出形式调用,然后返回相应的格式.
代码如下    function myfun($type){
        /*读取数据库代码略*/
        if($type='wordList'){
            return "输出wordList需要的字符串";
        }else if($type='wordAndDateList'){
            return "输出wordAndDateList需要的字符串";
        }
    }    echo myfun('wordAndDateList');
但是这样如果有很多格式要输出,就会显的很杂乱.代码重用率稍好,但也不是很高.我想肯定有更正规,更优美的解决办法.所以在此请教大家.
请高手赐教. 说说您都是怎么处理.不胜感激.面向对象或是其它之类,只要是好方法都可以谈谈~~~~~~~~~~~~

解决方案 »

  1.   

    这就要用到php天生独特的功能了
    $action = 'a'; //楼主可以通过get分别传参数a, b, c值给$action变量看一下有什么結果// 优点:  直接把通过get传函数名, 直接调用设计好的函数
    //  缺点:  对函数的执行权限要注意,是所有人,还是只有管理员
    $action();function a(){ echo 'a'; } function b(){ echo 'b'; } function c(){ echo 'c'; } 
      

  2.   


    能用smarty举例否? 我想见识一下 
      

  3.   


    还是不太懂你的意思. 
    我的问题还没到模版解决的地方吧?!我只是想读出数据库的记录后,根据需要输出各种各样的样式...比仿说.我有时想输出为HTML,有时是JSON,有时又是Script...
      

  4.   


    就是防止别人对你不应该使用的函数执行了, 何通过用户权限
    比如 用户权限大于一的直接加载一个文件, 里面全是模板函数, 这是通过$action来触发调用什么类型的模板函数, 它们就相应的输出什么内容了, 不用整天 if()elseif()else()
      

  5.   

    我明白字符串转函数的功能. 可是$action的值是不确定的.如果不做什么判断或限制.那用户不是可以执行任意的函数!?~
    系统函数都可以执行.不是很危险?!
      

  6.   

    if(!empty($action) &&  preg_match('/^ajax_[0-9a-z_A-Z]+$/', $action) && function_exists($action) ){
    $action();
    }else{
    exit('非法调用');
    }应该可以解决大部分的安全问题
      

  7.   


    $action = 'ajax_'.$_GET['action'];if(function_exists($action)) { 
        $action(); 
    }这个简单, 接到参数后加自己的前缀, 就不会乱调用系统函数了,  如果按你代码来改