我在另一个地方尝试教程,以显示实例对象中的数据。但是当我尝试实现它时,我发现了错误 消息:找不到“预订”类 文件名:C:\ xampp \ htdocs \ teja \ application \ controllers \ controlBooking.php
这是我在Booking类中的代码
<?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();
}...
这是我的模型课
<?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);
}
那我如何在视图类中显示它?如何解决该错误? 谢谢大家,请帮助我解决这个问题
答案 0 :(得分:1)
首先,应将文件 Booking.php 移至文件夹/application/libraries/
然后,而不是使用new
,而使用标准的CodeIgniter库加载方案,例如
$this->load->library('booking');
CodeIgniter的“加载程序”(即$this->load->...
)将定位类文件(如果在正确的位置)include
,并实例化命名的类。
您想使用上述用途创建的实例的任何地方
$this->booking->some_method();
答案 1 :(得分:0)
CodeIgniter不会自动加载命名空间类(我知道),并且不会像在Laravel或Symphony中那样使用(实际上并不存在)。我高度怀疑您遵循的教程是特定于CI的。
这将在当前处于beta测试的CI 4中发生变化。
就目前而言,我建议要么按照DFriend的建议将其变成一个库,然后松开所有的typename LL<T>::Node *tmp;
和use
声明,然后以CI方式加载它,或者您可以在这里跟随我的回答: How do I include the OOP "defiant randomdotorg" library in codeigniter?
请注意:无论您使用的是库还是上述方法,您都无法像在模型或控制器中那样直接访问namespace
或与CI相关的任何内容。您必须这样做:
$this->db
显然,可以在类构造函数中完成get实例部分,并将其分配给变量以用于多个功能。