繁体   English   中英

在课堂上找不到Codeigniter方法

[英]Codeigniter method not found in class

我刚开始学习CodeIgniter。 我有一些PHP背景但不是OOP。 所以我从他们的网站下载了CI并开始关注用户指南,但我遇到了一些这样的问题

消息:未定义的属性:News_model :: $ load

文件名:models / news_model.php

行号:7

在那一行是__construct()函数

public function __construct()
{
    $this->load->database();
}

同样在下一个函数db field not found in class 'News model'并且method 'result_array' not found in class...

public function get_news($slug = FALSE)
{
    if ($slug === FALSE)
    {
        $query = $this->db->get('news');
        return $query->result_array();
    }

    $query = $this->db->get_where('news', array('slug' => $slug));
    return $query->row_array();
}

我知道这是非常基本的,但我现在有点迷失了 如果有人可以解释或者至少指出我可以学习的其他好的教程,我会很高兴的。 这是完整的class News_model

class News_model extends CI_Controller {

public function __construct()
{
    $this->load->database();
}

public function get_news($slug = FALSE)
{
    if ($slug === FALSE)
    {
        $query = $this->db->get('news');
        return $query->result_array();
    }

    $query = $this->db->get_where('news', array('slug' => $slug));
    return $query->row_array();
}
}

对不起,可是:

class News_model extends CI_Controller {...}

???

是的,user2883814是正确的,CodeIgniter中的每个模型都必须只扩展CI_Model类。 所以看起来应该是这样的:

class News_model extends CI_Model

然后,您应该将模型加载到控制器以供使用。

顺便说一下,CodeIgniter中不会使用模型,而只能使用控制器和视图。

模型应该扩展CI_Model类。

class News_model extends CI_Model { /* ... */ }

但是,使用控制器需要调用__construct的方法CI_Controller当你覆盖类__construct方法:

class News extends CI_Controller {

    public function __construct()
    {
        // Call CI_Controller construct method first.
        parent::__construct();

        $this->load->database();
    }
}

由于您要覆盖继承者类中的__construct()方法,因此应首先调用父构造函数。

否则,当控制器初始化时,您将丢失LoaderCore类,并且$this->load将永远不会工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM