CI框架中 类名不能以方法名相同

昨天晚上一个坑爹的问题折腾了我一晚上,首先我来说下我的代码,我建立了一个index的控制器然后呢  在控制器里有一个index的方法。页面模板都有。

if ( ! defined(‘BASEPATH‘)) exit(‘No direct script access allowed‘);

class  Index  extends CI_Controller{

    public function index(){
            $this->load->view(‘index.html‘);
    }
}

然后你在浏览器中运行的话。就会出错...出错的页面如下。

看到这错误信息,我以为是控制出错,但是仔细检查发现没有错。然后我就开始怀疑是不是win7上的权限问题。然我给文件夹加上admin权限。发现还是这个问题..........,蛋疼呀~!~

我又以为是框架包的原因可能是我不小心删除了某个东西。然后我又从CI官网下载新的框架,从新搭建项目框架。发现还是这个错误[备注:当时心碎了,使劲的砸了鼠标几次,可怜的鼠标就当一次我的发泄品吧~!~]。。。。这样反反复复的折腾了我几个小时,看下手机上的时间我差 12点多....好吧   睡觉去吧。躺在床上还在想这个问题,我以前做过的几个项目也是用CI框架来做的啊,为什么没有这样的问题呢....... 就这样想着想着解决办法,就睡着了。。。。。。。。。

第二天快速的来到公司,从新搭建起昨晚相同的错误的框架,然后跟以前用CI框架做的项目,写的进行对比了下。咳咳,还真的找出原因来,原来是我控制器名和方法名不一样。然后我就改动着那个报错框架,把方法名换了一下,我查竟然好了。

然后我就开始思考为啥类名跟方法名相同就会报错呢

........................

想了会,原来是每一个类中都有一个相同名称的隐式的构造方法,如果自己在写一个的跟类名相同的方法名的话,就会跟构造方法冲突。

其实还有一种方法也可以解决,那就是在构造方法中继承父类的构造函数,因为子类可以从写父类的方法这样的话就不会报错了。

<?php if ( ! defined(‘BASEPATH‘)) exit(‘No direct script access allowed‘);

class Index  extends CI_Controller {

    public  function __construct(){

       parent::__construct();

    }

    public function index()
    {

        $this->load->view(‘show.html‘);

    }

}

CI框架中 类名不能以方法名相同,布布扣,bubuko.com

时间: 2024-08-04 23:49:08

CI框架中 类名不能以方法名相同的相关文章

CI框架中的SQL注入隐患

 0x00 在CI框架中,获取get和post参数是使用了$this->input类中的get和post方法. 其中,如果get和post方法的第二个参数为true,则对输入的参数进行XSS过滤,注意只是XSS过滤,并不会对SQL注入进行有效的防范. 例子: Controller中,定义一个shit方法,获取get数据: 指定了第二个参数为true: (1)XSS测试 (2)SQL注入测试 并不会对单引号进行处理. 例子在程式舞曲CMS中,该CMS是基于CI框架进行开发的CMS: 这里的变量

将smarty模版引擎整合到CI框架中

将smarty模版引擎整合到CI框架中. 下载:ci,smarty 配署ci 在这里就不多说了…… 1.  将下载好的smarty包的lib文件上传到ci中的application/libraries 文件中,将取名称修改为smarty,在libraries文件新建cismarty.php文件,内容如下: if (!defined('BASEPATH')) exit("no direct script access allowd"); //以下是加载smarty的类文件 require

php CI框架中base_url 和site_url的区别

在CI框架中base_url得到的路径是不包括入口的文件index.php文件 site_url包含了入口文件.当调用MVC模式的时候使用site_url  加载页面 <link href="<?php echo base_url('assets/styles/main.css');?>" rel="stylesheet" type="text/css" /> <form method="post"

对CI框架中几个文件libraries

对CI框架中几个文件libraries,helpers,hooks夹说明 来源:未知    时间:2014-10-20 11:37   阅读数:117   作者:xbdadmin [导读] 1.library文件夹 如果你想扩展CI的功能,那么就把你的类库放在这,注意,这个文件夹是有class组成的,可以看看如果 加载library注意事项 ! 2.helper文件夹 如果你需要使用一些函数来帮你... 1.library文件夹 如果你想扩展CI的功能,那么就把你的类库放在这,注意,这个文件夹是

CI框架中集成CKEditor编辑器的教程

CKEditor是在很多开发过程中都会用到的一个富文本编辑器,那么如何在CI框架中使用它呢?这里介绍了在CI下使用CKEditor的方法,版本比较低,是在CI 1.7.3下使用fckeditor 2.6.6.供大家参考. 1.将fckeditor目录置入CI_PATH/system/plugins/ 2.在CI_PATH/system/application/config/config.php中加入: $config['fckeditor_basepath'] = "/system/plugin

CI框架中自定义view文件夹位置

要想自定义view文件夹的位置,首先要了解CI框架时如何加载view文件夹的. CI中默认调用view的方法是: $this->load->view(); //这一行代码的原理是什么呢?请往下看: 我们打开application/core/Loader.php,里面有一个这样的方法: public function add_package_path($path, $view_cascade = TRUE) { $path = rtrim($path, '/').'/'; array_unshi

CodeIgniter(CI)框架中的验证码

在CodeIgniter框架中,CI本身自带了验证码,但是查看文档的时候,发现: 需要新建一个表,用来存储验证码信息.因为习惯了session存储验证码信息,所以我把我认为比较好看的验证码应用在了CI的框架中. 在 CodeIgniter/application/libraries/ 目录下,新建一个文件 取名 captcha.php. 1 <?php 2 defined('BASEPATH') OR exit('No direct script access allowed'); 3 4 cl

php ci框架中载入css和js文件失败的原因及解决方法

在将html页面整合到ci框架里面的时候,载入css和js失败. 原因是ci框架是入口的框架 对框架中文件的全部请求都须要经过index.php处理完毕,当载入外部的css和js文件的时候要使 用base_url()函数处理外部的链接. 在控制器中须要先加载url相关的类 public function test() { $this->load->helper('url'); $this->load->view('admin/test'); } 在test.php的view视图中.

CI框架中,扩展验证码类。

使用CI框架的朋友,应该都知道CI框架的的验证码辅助函数,不太好用.它需要写入到数据库中,然后再进行比对. 大家在实际项目中,好像不会这样去使用,因为会对数据库造成一定的压力. 所以,我们还是利用session来临时存储验证码,比较的稳妥. 下面附上验证码类的代码.这个类是放在libraries这个库文件夹下. <?php /** * 验证码类 */ class Code{ //资源 private $img; //画布宽度 public $width = 150; //画布高度 public