CodeIgniter - 无法使用对象

时间:2010-05-17 03:55:18

标签: php codeigniter

摘要:

当我打电话给... / index.php / product时,我收到:

  

致命错误:调用成员函数   get_prod_single()在非对象中   /var/www/sparts/main/controllers/product.php   第16行

违规的第16行是:

$data['pn_oem'] = $this->product_model->get_prod_single($product_id);

看起来我不知道如何使它成为一个工作对象。你能救我吗?

代码:

在我的 / Models 文件夹中,我有 product_model.php

<?php
class Product_model extends Model {

    function Product_model()
    {
        parent::Model();
    }

    function get_prod_single($product_id)
    {
        //This will be a DB lookup ...
        return 'foo';  //stub to get going
    }   
}
?>

在我的 / controllers 文件夹中,我有 product.php

<?php
class Product extends Controller {

    function Product()
    {
        parent::Controller();
    }

    function index()  {

      $this->load->model('Product_model');

      $product_id = 113; // will get this dynamically

      $data['product_id'] = $product_id;
      $data['pn_oem'] = $this->product_model->get_prod_single($product_id);

      $this->load->view('prod_single', $data);
    }
}
?>

3 个答案:

答案 0 :(得分:3)

只需改变:

$this->load->model('Product_model');

为:

$this->load->model('product_model');

传递给加载程序的名称似乎引用了文件名。

答案 1 :(得分:1)

我认为这是$ this-&gt; load-&gt;模型('Product_model');将创建一个名为Product_model而不是product_model的模型... PHP区分大小写。

答案 2 :(得分:1)

CI的模型名称区分大小写,因此“product_model”而不是“Product_model”将完成此任务。如果你愿意,你可以设置某种别名,如果我没记错的话,就像

$this->load->model('product_model', 'Product_model');

本来也会奏效。

编辑:别名中的轻微拼写错误。固定