Codeigniter Class' REST_Controller'未找到

时间:2017-01-06 03:05:20

标签: rest codeigniter

我对Chris Kacerguis维护的流行REST API codeigniter有疑问。我创建了一个如下所示的Datadiri控制器:

<?php
require (APPPATH.'/libraries/REST_Controller.php');

class Datadiri extends REST_Controller{
    function __construct($config = 'rest'){
        parent::__construct($config);
    }
    //tampilkan data
    function index(){
        $buku = $this->db->get('perpustakaan');
        $this->response($buku, 200);
    }
}

这是Rest_controller.php https://github.com/chriskacerguis/codeigniter-restserver/blob/master/application/libraries/REST_Controller.php

但仍然相同,错误类&#39; REST_Controller&#39;未找到。我怎么能解决这个问题?

  

致命错误:Class&#39; REST_Controller&#39;找不到   C:\ xampp \ htdocs \ CodeIgniter \ application \ controllers \ datadiri.php on   第4行遇到PHP错误

     

严重性:错误

     

消息:Class&#39; REST_Controller&#39;找不到

     

文件名:controllers / datadiri.php

     

行号:4

     

回溯:

10 个答案:

答案 0 :(得分:5)

最后问题解决了。 我编辑application / config / config.php 来自:$config['subclass_prefix'] = 'MY_'; 致:$config['subclass_prefix'] = 'REST_';

和Datadiri.php这样:

<?php
  use Restserver\Libraries\REST_Controller;
   class Datadiri extends REST_Controller{
       function __construct(){
           parent:: __construct();
       }
       function index_get(){
           $buku = $this->db->get('perpustakaan')->result();
           $this->response($buku, 200);
       }
   }

答案 1 :(得分:4)

在您的控制器api php中确保有此

require APPPATH . '/libraries/REST_Controller.php';
use Restserver\Libraries\REST_Controller;

然后转到Rest_Controller并确保您拥有

use CI_Controller;
require APPPATH . 'libraries/Format.php';

希望对您有帮助

答案 2 :(得分:3)

我遇到了同样的问题,并在控制器中的require()语句解决了问题后添加了命名空间。

之后:

require (APPPATH.'/libraries/REST_Controller.php');

添加:

// use namespace
use Restserver\Libraries\REST_Controller;

答案 3 :(得分:1)

不使用Composer。

  • 在您的项目目录中下载/提取CI
  • 从github(https://github.com/chriskacerguis/codeigniter-restserver)下载codeigniter-restserver
  • 在codeigniter的同一目录中提取codeigniter-restserver,用codeigniter-restserver文件覆盖CodeIgniter文件(和目录)
  • 编辑文件controllers \ api \ Example.php 在“类示例”扩展REST_Controller {之前 添加:

需要APPPATH。 'libraries / REST_Controller.php'; 需要APPPATH。 'libraries / Format.php';

之后,它看起来像:

... 需要APPPATH。 'libraries / REST_Controller.php'; 需要APPPATH。 'libraries / Format.php';

class示例扩展了REST_Controller {

function __construct()
{

...

用于测试: -在浏览器中打开项目 -在欢迎屏幕上,单击REST Server测试 -在下一个屏幕上,单击“用户”(-默认为JSON)

答案 4 :(得分:0)

让我们尝试如下......

 <?php
   require('application/libraries/REST_Controller.php');

    class Datadiri extends REST_Controller{
        function __construct($config = 'rest'){
            parent::__construct($config);
        }
        //tampilkan data
        function index(){
            $buku = $this->db->get('perpustakaan');
            $this->response($buku, 200);
        }
    }

OR

REST_Controller.php放入application/core,然后只需

<?php

class Datadiri extends REST_Controller{
    function __construct($config = 'rest'){
        parent::__construct($config);
    }
    //tampilkan data
    function index(){
        $buku = $this->db->get('perpustakaan');
        $this->response($buku, 200);
    }
}

不需要包含放在核心文件夹中的文件。

答案 5 :(得分:0)

这个库将进入Composer,因此您需要运行

composer require chriskacerguis/codeigniter-restserver

并在配置文件

中将$config['COMPOSER_AUTOLOAD']更改为true

答案 6 :(得分:0)

这是一个双向参考问题,您可以通过以下两个步骤从根本上解决它:

1-在您的api类的开头添加以下代码:

use Restserver\Libraries\REST_Controller;
require APPPATH . 'libraries/REST_Controller.php';
require APPPATH . 'libraries/Format.php';

class Example extends REST_Controller {..

2-在文件中:application / libraries / REST_Controller.php     添加:

use CI_Controller;

之前

abstract class REST_Controller extends CI_Controller {

干杯!

答案 7 :(得分:0)

在我自己的Codeigniter项目中实现此问题时遇到了同样的问题。 我只是将 Format.php REST_Controller.php 文件复制到 Libraries 文件夹中。
将这些文件放入“库”文件夹后,您必须更改
命名空间Restserver \ Libraries;

命名空间YOUR_PROJECT_NAME \ Libraries;
在两个文件(Format.php和REST_controller.php)中。
并在扩展 REST_Controller 的控制器中,将这三行代码直接放在php标签后

使用YOUR_PROJECT_NAME \ Libraries \ REST_Controller;
需要APPPATH。 'libraries / REST_Controller.php';
需要APPPATH。 'libraries / Format.php';

希望它将对某人有所帮助。谢谢

答案 8 :(得分:0)

最好的方法是使用composer进行安装,然后将composer自动加载文件加载到codeigniter中,并在扩展了use Restserver\Libraries\REST_Controller;的控制器中使用命名空间REST_Controller

答案 9 :(得分:0)

添加此...

require(APPPATH.'/libraries/REST_Controller.php');
   use Restserver\Libraries\REST_Controller;
   use CI_Controller;
   require APPPATH . 'libraries/Format.php';

希望这会起作用:)