gpt4 book ai didi

php - CodeIgniter 中的特征

转载 作者:可可西里 更新时间:2023-11-01 00:18:34 25 4
gpt4 key购买 nike

我正在尝试在 CodeIgniter 中使用特征。我将 Trait 放在库目录中,然后将库加载到 Controller 中。然后我在模型中使用了 trait,但是没有用,我收到了以下错误

特征文件(在库中):

trait DataTablesTrait{
public function query(){
$this->db->select('*');
$this->db->limit(10, 1);
return $this->db->get('my_table');
}
}
?>

Controller :

class myController extends CI_Controller {  

public function __construct(){
parent::__construct();
$this->load->library('DataTablesTrait');
$this->load->model('ABC_Model');
}
}

型号:

class ABC_Model extends CI_Model {
use DataTablesTrait;
function callQuery(){
$this->query();
}
}

我得到了这个错误:

Non-existent class: DataTablesTrait

请指教

最佳答案

CodeIgniter (CI) 对traitnamespace 不友好,但可以使用它们。不过,它需要稍微解决 CI。

主要问题,即您必须解决的 CI 问题,是调用

$this->load->library('DataTablesTrait');

CI 会找到这个文件,但是 load->library 会尝试实例化失败的特征,因为不可能自己实例化特征。

将上面的行替换为

include APPPATH.'/libraries/DataTablesTrait.php';

你应该没有错误。但是您不会得到结果,因为 callQuery() 不返回任何内容。为了完成测试,callQuery() 返回 Trait 应该产生的 CI_DB_result 对象

public function callQuery()
{
return $this->query();
}

向 Controller 添加一个索引函数,以便我们可以转储输出

public function index()
{
$DB_result = $this->ABC_Model->callQuery();
var_dump($DB_result->result());
}

这应该会产生预期的输出——假设“my_table”有数据:)

关于php - CodeIgniter 中的特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47871164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com