Php 如何修复使用实体类时找不到的类?如何在对象中显示数据库?

Php 如何修复使用实体类时找不到的类?如何在对象中显示数据库?,php,codeigniter,class,entity,Php,Codeigniter,Class,Entity,我正在尝试从另一个地方的教程来显示实例对象中的数据。但当我尝试实现它时,我发现了错误 消息:未找到“预订”类 文件名:C:\xampp\htdocs\teja\application\controllers\controlBooking.php 这是我在课堂预订中的代码 <?php namespace application\classes; class Booking { protected $id; protected $name; protected $add

我正在尝试从另一个地方的教程来显示实例对象中的数据。但当我尝试实现它时,我发现了错误 消息:未找到“预订”类 文件名:C:\xampp\htdocs\teja\application\controllers\controlBooking.php

这是我在课堂预订中的代码

<?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();
}...
首先,文件Booking.php应移动到文件夹
/application/libraries/

然后,不要使用
new
,而是使用标准的CodeIgniter库加载方案,例如

$this->load->library('booking');
CodeIgniter“Loader”(即
$this->load->…
)将定位类文件(如果它位于正确的位置),
包括它,并实例化命名类

无论您想在何处使用上述方法创建的实例,请使用

$this->booking->some_method();

CodeIgniter不会自动加载开箱即用的名称空间类(我知道),也不会像在Laravel或Symphony中那样使用(实体并不存在)。我非常怀疑你遵循的教程是针对CI的

这将在目前处于测试阶段的CI 4中发生变化

现在,我建议按照DFriend的建议将其作为一个库,并取消所有
use
namespace
声明,然后以CI的方式加载它,或者您可以按照我的回答在这里进行操作:

请注意:无论您使用的是库还是上述方法,您都无法访问
$this->db
或任何与模型或控制器直接相关的CI。您必须执行以下操作:

$CI = &get_instance;
$CI->db->get(...);

显然,get-instance部分可以在类构造函数中完成,并分配给一个变量以在多个函数中使用。

您的应用程序是否使用任何类型的自动加载?有关CodeIgniter,请参阅。@JiriHrazdil当我添加$autoload['libraries']=array('database','session','classes');仍然发现错误:无法加载请求的类:类。如何为类添加自动加载?在模型中,对象是什么?在我们能看到的任何地方都没有定义。另外,您如何处理使用
$book=newbooking()创建的
$book
?@DFriend很抱歉这是我的打字错误,我是说
$book->get_booking()在我创建
$book=newbooking()之后非常感谢!现在我可以运行我的代码了,但是,如果我想把数据库中的数据放在setttergetter方法中,比如:
$this->booking->setName(从数据库获取)我该怎么做?我不知道你想做什么,问一个新问题。
$this->booking->some_method();
$CI = &get_instance;
$CI->db->get(...);