如何修复使用实体 class 时未找到 Class?如何在对象中显示数据库?
How to fix Class not found when using entity class? How to show database in object?
我正在尝试另一个地方的教程来显示实例对象中的数据。但是当我尝试实现它时,我发现错误
消息:Class 'Booking' 未找到
文件名:C:\xampp\htdocs\teja\application\controllers\controlBooking.php
这是我在 class 预订中的代码
<?php namespace application\classes;
class Booking {
protected $id;
protected $name;
protected $address;
public function setId(string $id){
$this->id = $id;
}
public function getId(){
return $this->id;
}
public function get_booking()
{
$query = $this->db->select("*")
->from('booking')
->order_by('id', 'DESC')
->get();
return $query->result();
}...
这是我的模型class
<?php use application\classes\Booking;
class modelBooking extends CI_Model{
public function get_all(){
$book = new Booking();
$testimoni->get_booking();
}
}
这是我的控制器
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class controlBooking extends CI_Controller {
public function __construct(){
parent ::__construct();
//load model
$this->load->model('modelBooking');
}
public function index(){
$data = new Booking();
$this->load->view('viewBooking', $data);
}
那我怎么在我的视图中显示它class?如何修复该错误?
谢谢大家,请帮我解决这个问题
首先,文件Booking.php应该移动到文件夹/application/libraries/
然后,不要使用 new
,而是使用标准的 CodeIgniter 库加载方案,例如
$this->load->library('booking');
CodeIgniter 'Loader'(即 $this->load->...
)将找到 class 文件(如果它在正确的位置),include
它,并实例化名为 class.
你想在哪里使用上面使用创建的实例
$this->booking->some_method();
CodeIgniter 不会自动加载带命名空间的 classes 开箱即用(据我所知),并且其设计目的不是像在 Laravel 或 Symphony 中那样使用(实体并不真正存在)。我非常怀疑您遵循的教程是 CI 具体的。
这将在 CI 4 中改变,目前处于 Beta 测试阶段。
现在,我建议要么按照 DFriend 的建议将它变成一个库,然后放弃所有 use
和 namespace
声明,然后以 CI 方式加载它,或者您可以按照连同我在这里的回答:
请注意:无论您使用的是库还是上述方法,都无法像在模型或控制器中那样直接访问 $this->db
或任何与 CI 相关的内容。你必须做:
$CI = &get_instance;
$CI->db->get(...);
显然,获取实例部分可以在 class 构造函数中完成,并分配给一个变量以便在多个函数中使用。
我正在尝试另一个地方的教程来显示实例对象中的数据。但是当我尝试实现它时,我发现错误 消息:Class 'Booking' 未找到 文件名:C:\xampp\htdocs\teja\application\controllers\controlBooking.php
这是我在 class 预订中的代码
<?php namespace application\classes;
class Booking {
protected $id;
protected $name;
protected $address;
public function setId(string $id){
$this->id = $id;
}
public function getId(){
return $this->id;
}
public function get_booking()
{
$query = $this->db->select("*")
->from('booking')
->order_by('id', 'DESC')
->get();
return $query->result();
}...
这是我的模型class
<?php use application\classes\Booking;
class modelBooking extends CI_Model{
public function get_all(){
$book = new Booking();
$testimoni->get_booking();
}
}
这是我的控制器
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class controlBooking extends CI_Controller {
public function __construct(){
parent ::__construct();
//load model
$this->load->model('modelBooking');
}
public function index(){
$data = new Booking();
$this->load->view('viewBooking', $data);
}
那我怎么在我的视图中显示它class?如何修复该错误? 谢谢大家,请帮我解决这个问题
首先,文件Booking.php应该移动到文件夹/application/libraries/
然后,不要使用 new
,而是使用标准的 CodeIgniter 库加载方案,例如
$this->load->library('booking');
CodeIgniter 'Loader'(即 $this->load->...
)将找到 class 文件(如果它在正确的位置),include
它,并实例化名为 class.
你想在哪里使用上面使用创建的实例
$this->booking->some_method();
CodeIgniter 不会自动加载带命名空间的 classes 开箱即用(据我所知),并且其设计目的不是像在 Laravel 或 Symphony 中那样使用(实体并不真正存在)。我非常怀疑您遵循的教程是 CI 具体的。
这将在 CI 4 中改变,目前处于 Beta 测试阶段。
现在,我建议要么按照 DFriend 的建议将它变成一个库,然后放弃所有 use
和 namespace
声明,然后以 CI 方式加载它,或者您可以按照连同我在这里的回答:
请注意:无论您使用的是库还是上述方法,都无法像在模型或控制器中那样直接访问 $this->db
或任何与 CI 相关的内容。你必须做:
$CI = &get_instance;
$CI->db->get(...);
显然,获取实例部分可以在 class 构造函数中完成,并分配给一个变量以便在多个函数中使用。