控制器代码(包括我的测试):
$inventory = $this->load->model('character/inventoryModel');
//include('C:\xampp\htdocs\proj\application\models\character\inventoryModel.php');
//$testObject = new InventoryModel(43);
//var_dump($inventory); die();
echo $inventory->checkInventory(25, 1, 43);
模型头和构造函数:
class InventoryModel extends CI_Model
{
protected $who,
$backpackCount,
$equippedCount;
public function __construct()
{
$this->backpackCount = 0;
$this->equippedCount = 0;
parent::__construct();
}
如果我从测试代码调用,模型返回正常,但从CI本身我得到:
致命错误:调用某个成员函数 非对象
转储实例返回null - 模型不是从CI内部实例化的,但如果我执行基本包含和新实例,则实例化很好。我做错了什么?
答案 0 :(得分:1)
试试这个:
$this->load->model('character/InventoryModel');
echo( $this->InventoryModel->checkInventory(25, 1, 43) );
来自CodeIgniter文档:
加载后,您将使用与您的类同名的对象访问您的模型函数:
$this->load->model('Model_name');
$this->Model_name->function();
以下是链接:https://ellislab.com/codeigniter/user-guide/general/models.html。
您还应注意,在加载模型时,您使用的是错误的模型名称。名称应为“InventoryModel”而不是“inventoryModel”,因此名称与类本身相同。
并且你得到了致命的错误消息,因为model
方法没有返回任何内容,根据文档,它根本不应该。只需加载没有赋值的模型,然后通过模型类的名称使用它,如上所示和文档中所示:
$this->InventoryModel->checkInventory(25, 1, 43)
答案 1 :(得分:0)
$this->load->model('myModel', 'myCustomModelName');
$value = $this->myCustomModelName->getValue();
这很简单。希望其他人能发现这很有用。