Php 如何修复使用实体类时找不到的类?如何在对象中显示数据库?
我正在尝试从另一个地方的教程来显示实例对象中的数据。但当我尝试实现它时,我发现了错误 消息:未找到“预订”类 文件名:C:\xampp\htdocs\teja\application\controllers\controlBooking.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
<?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(...);