找不到类

#1 zhangshiwen

Fatal error: Class 'category' not found in D:\xampp\htdocs\find\controller\main.php on line 19

单个文件我测试过了,没问题,但是放到框架里面就这样,基本上要放的地方都放过了:L还是悟性太低看不懂手册说的是什么意思,问答区找了好久也没解决
看了手册没明白要怎么弄。

        //测试数据
        $data[]=array('cat_id'=>1,'pid'=>0,'name'=>'中国');
        $data[]=array('cat_id'=>2,'pid'=>0,'name'=>'美国');
        $data[]=array('cat_id'=>3,'pid'=>0,'name'=>'韩国');
        $data[]=array('cat_id'=>4,'pid'=>1,'name'=>'北京');
        $data[]=array('cat_id'=>5,'pid'=>1,'name'=>'上海');
        $data[]=array('cat_id'=>6,'pid'=>1,'name'=>'广西');
        $data[]=array('cat_id'=>7,'pid'=>6,'name'=>'桂林');
        $data[]=array('cat_id'=>8,'pid'=>6,'name'=>'南宁');
        $data[]=array('cat_id'=>9,'pid'=>6,'name'=>'柳州');
        $data[]=array('cat_id'=>10,'pid'=>2,'name'=>'纽约');
        $data[]=array('cat_id'=>11,'pid'=>2,'name'=>'华盛顿');
        $data[]=array('cat_id'=>12,'pid'=>3,'name'=>'首尔');
       
        $cat=new Category(array('cat_id','pid','name','cname'));
        $s=$cat->getTree($data);//获取分类数据树结构
        $s=$cat->getTree($data,1);//获取pid=1所有子类数据树结构
        foreach($s as $vo)
        {
         echo $vo['cname'].'
';
        }
$this->display("ndex.php");

2012-12-03 14:44:35

#2 zhangshiwen

图片也不知道配的对不对

2012-12-03 14:51:30

#3 zhangshiwen

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 38056 bytes)

另外还出现了这个问题。。

2012-12-03 15:59:41

#4 zhangshiwen



class Category extends spController
{       
                //原始的分类数据
                private $rawList=array();
                //格式化后的分类
                private $formatList=array();
                //格式化的字符
                private $icon = array('│','├','└');
                //字段映射,分类id,上级分类pid,分类名称title,格式化后分类名称fulltitle
                private $field=array();
               
                /*
                功能:构造函数
                属性:public;
                参数: $field,字段映射,分类id,上级分类pid,分类名称title,格式化后分类名称fulltitle
                          依次传递,例如在分类数据表中,分类id,字段名为cid,上级分类pid,字段名称name,希望格式化分类后输出cname,
                          则,传递参数为,$field('cid','pid','name','cname');若为空,则采用默认值。
                返回:无
                */               
                 public function __construct($field=array())
                {                       
                                $this->field['id']=isset($field['0'])?$field['0']:'id';
                                $this->field['pid']=isset($field['1'])?$field['1']:'pid';
                                $this->field['title']=isset($field['2'])?$field['2']:'title';
                                $this->field['fulltitle']=isset($field['3'])?$field['3']:'fulltitle';
                }

                /*
                功能:返回给定上级分类$pid的所有同一级子分类;
                属性:public;
                参数:上级分类$pid;
                返回:子分类,二维数组;
                */               
                public function getChild($pid,$data=array())
                {
                                $childs=array();
                                if(empty($data))
                                {
                                        $data=$this->rawList;
                                }
                                foreach($data as $Category)
                                {
                                        if($Category[$this->field['pid']]==$pid)
                                                $childs[]=$Category;
                                }
                                return $childs;
                }
       
                /*
                功能:得到递归格式化分类;
                属性:public;
                参数:$data,二维数组,起始分类id,默认$id=0;
                返回:递归格式化分类数组;
                */               
                public function getTree($data,$id=0)
                {
                        //数据为空,则返回
                        if(empty($data))
                                return false;
                               
                        $this->rawList=array();
                        $this->formatList=array();
                        $this->rawList=$data;
                        $this->_searchList($id);
                        return $this->formatList;
                }
               
                /*
                功能:无限分类核心部分,递归格式化分类前的字符;
                属性:private;
                参数:分类id,前导空格;
                返回:无;
                */
                private function _searchList($id=0,$space="")
                {
                        //下级分类的数组
                        $childs=$this->getChild($id);
                        //如果没下级分类,结束递归
                        if(!($n=count($childs)))
                                return;
                        $cnt=1;
                        //循环所有的下级分类
                        for($i=0;$i<$n;$i++)
                        {
                                        $pre="";
                                        $pad="";
                                        if($n==$cnt)
                                        {
                                                $pre=$this->icon[2];
                                        }
                                        else
                                        {
                                                $pre=$this->icon[1];
                                                $pad=$space?$this->icon[0]:"";
                                        }
                                        $childs[$i][$this->field['fulltitle']]=($space?$space.$pre:"").$childs[$i][$this->field['title']];
                                        $this->formatList[]=$childs[$i];
                                        //递归下一级分类
                                        $this->_searchList($childs[$i][$this->field['id']],$space.$pad."  ");
                                        $cnt++;
                        }
                }
        }

2012-12-03 16:00:29

#5 jake

看入门教程第二节,类名和文件名要一致,包括大小写。而且要理解,框架是单入口的程序,仔细看看入门教程。

另外Allowed memory size of 134217728 bytes exhausted (tried to allocate 38056 bytes)这个问题估计是你递归或者什么情况下,数组过大产生的内存不够。如果不需要那么大的数组就不搞,或者加大php.ini里面的内存设置。

2012-12-03 16:45:46

#6 zhangshiwen

jake 发表于 2012-12-3 16:45
看入门教程第二节,类名和文件名要一致,包括大小写。而且要理解,框架是单入口的程序,仔细看看入门教程。 ...
我找到解决方法来是类方法没写好所导致的原因

2012-12-03 20:09:20