用户
 找回密码
 入住 CI 中国社区
搜索
楼主: hahacc
收起左侧

[已解决] 扩展My_Controller却提示找不到Class

[复制链接]
发表于 2009-4-8 19:11:52 | 显示全部楼层
在上面的例子中,CodeIgniter 将尝试寻找并装载一个名为 blog.php 的控制器。


这里的意思是说要小写文件名。

对于你提出的问题,好像是类库的命名不对,没找到 MY_Controller,这个东西应该是类库。
http://codeigniter.org.cn/user_guide/general/core_classes.html
发表于 2009-4-13 15:12:18 | 显示全部楼层
我也是同样的问题,大侠怎么解决的?
发表于 2009-4-13 15:13:37 | 显示全部楼层
唯一MY_Email.php(就是手册里的那个例子)能够找到
其他的都提示:
An Error Was Encountered
Unable to load the requested class: basic
怎么办?
发表于 2009-4-13 16:05:04 | 显示全部楼层
看看 class: basic 是什么东西?是不是父类?
发表于 2009-4-13 16:58:54 | 显示全部楼层
本帖最后由 deader 于 2009-4-13 17:10 编辑

文件application/libraries/MY_Emai.php
代码:

PHP复制代码
<?php
class MY_Emai extends Controller
{
        function __construct()
        {
                echo "email";
        }
}
?>
复制代码


然后在一个controller里
$this->load->library('emai');

view 显示错误如下:
An Error Was Encountered
Unable to load the requested class: Emai


但是 我把类名'Emai' 改为Email,load里也改为'Email',libraries文件夹下也保存为'Email' 就正常,并且只有改为Email才能正常,

请教hex老大,怎么回事,搞了2个小时了,万分感谢!

补充一下,我的是linux系统
发表于 2009-4-13 18:34:52 | 显示全部楼层
MY_ 是子类化的前缀!你必须有父类才能这么做,也就是你必须有 Emai 这个类。
如果你是从系统的 Email 继承,那就要用 MY_Email,否则如果是自己新写的类,就要用 Emai 作为类名和文件名!
发表于 2009-4-13 19:53:56 | 显示全部楼层
本帖最后由 deader 于 2009-4-14 09:48 编辑

哦,明白了。谢谢hex
如果我要继承ci的Controller类 该如何写?

看了http://codeigniter.org.cn/user_guide/general/core_classes.html
现在又两个问题:
1、写成MY_Controller没有问题,但是我要换一个名字就不行,该怎么办?

2、不保存为MY_的格式,假设直接保存为emais.php,然后在autoload里load,但是我再 extends email ...的时候,又是500错误,或者是空白页面。搞不明白了。

我的想法是,我做一个基本类BasicController 继承自ci 的 Controller ,以后写的类都继承自BasicController,这样就比较好操作了,但是现在不知道怎么实现,总是500错误。
发表于 2009-12-28 11:20:39 | 显示全部楼层
扩展普通类,根本就是找不到被扩展的类。。
class MY_Pagination extends CI_Pagination {

Fatal error: Class 'CI_Pagination' not found in J:\web

如果扩展核心类就可以找到。。。这个框架,哎。。。
发表于 2009-12-28 12:25:14 | 显示全部楼层
回复 18# yicool


    呵呵,不知道楼上是如何写的,肯定是代码没写对,我这里一直都很正常,楼主可以把你遇到问题的代码贴出来,大家可以帮你分析一下~
发表于 2009-12-31 16:55:46 | 显示全部楼层
我用的笨办法,先把原来的类文件include进来

本版积分规则