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

时间:2019-04-14 11:29:39

标签: php codeigniter class entity

我在另一个地方尝试教程,以显示实例对象中的数据。但是当我尝试实现它时,我发现了错误 消息:找不到“预订”类 文件名: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);
}

那我如何在视图类中显示它?如何解决该错误? 谢谢大家,请帮助我解决这个问题

2 个答案:

答案 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实例部分,并将其分配给变量以用于多个功能。