用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1696|回复: 1
收起左侧

[HELP] 求助:一个PHP类,怎么才能转成CI类

[复制链接]
发表于 2014-1-25 10:05:36 | 显示全部楼层 |阅读模式

PHP复制代码
 
<?php
class TreeUtil{
        public function ToList($tree,$parentId,$childrenField,$idField,$parentIdField,$isList){
               
                $list = array();
               
                for($i=0,$len=count($tree);$i<$len;$i++){
                        $task = $tree[$i];
                        $task[$parentIdField] = $parentId;
                       
                        $children = $task[$childrenField];
                        if($children != null && count($children) > 0){
                                $id = $task[$idField] == null ? "" : $task[$idField];
                                $treeUtil = new TreeUtil();
                                $list2 = $treeUtil->ToList($children,$id,$childrenField,$idField,$parentIdField);
                                $list = array_merge($list,$list2);
                        }
                        //unset($task[$childrenField]);
                        array_push($list,$task);
                }
                //如果传递的数据已经是list,需要删除重复的数据
                if($parentId == "-1" && $isList == true){
                        for($m=0,$l=count($list);$m<$l;$m++){
                                for($j=$m+1,$s=count($list);$j<$s;$j++){
                                        if($list[$m]["_id"] == $list[$j]["_id"]){
                                                if($list[$m][$idField] == null){
                                                        $list[$j][$parentIdField] = $list[$m][$parentIdField];
                                                        unset($list[$m]);
                                                }else{
                                                        $list[$m][$parentIdField] = $list[$j][$parentIdField]; 
                                                        unset($list[$j]);
                                                }
                                               
                                        }
                                }
                        }
                }
                return $list;
        }
}
?>
 
复制代码

发表于 2014-1-25 11:07:53 | 显示全部楼层
本帖最后由 yuvista 于 2014-1-25 11:09 编辑

改造其实不麻烦:对于不需要传入参数的类来说,CI类和普通类没什么区别。
但是,一般来说,许多类在初始话之前需要传入配置参数,普通类可能会是这样
PHP复制代码
function __construct($var_a,$var_b,$var_c){
     $this->var_1 = $var_a;
     $this->var_2 = $var_b;
     $this->var_3 = $var_c;
}
复制代码

但是CI只支持传入一个配置数组,为了能传入多个参数,你可以改造成这个样子
PHP复制代码
 
function __construct($config){
     $this->var_1 = $config['var_a'];
     $this->var_2 = $config['var_b'];
     $this->var_3 = $config['var_c'];
}
 
复制代码


然后在载入类的时候,你只需要这样就OK了。
PHP复制代码
 
$config = array(
    'var_a' => $var_a,
    'var_b' => $var_b,
    'var_c' => $var_c
);
$this->load->library('foo',$config);
 
复制代码

暂时就想到这么多,想起来再说。

本版积分规则