无法加载"使用" Codeigniter中的陈述

时间:2017-01-05 23:57:46

标签: php codeigniter

我在本机php app中有这段代码。

 use Elasticsearch\ClientBuilder;
 require 'vendor/autoload.php';

我正在将此应用转换为Codeigniter。现在,当我在CI中粘贴上面的代码时,它给了我错误。我在下面的陈述中修改了所需的部分错误。

require_once APPPATH."third_party/elasticsearch/vendor/autoload.php";

但我无法修复

use Elasticsearch\ClientBuilder;

它不断给我语法错误。谁知道如何解决它?

请帮忙。 感谢

1 个答案:

答案 0 :(得分:2)

简单的方法是使用config / autoload.php文件。将您的代码作为库,并使其自动加载。

但是如果你想要导入很多课程,那么这不是一个实用的方法。这是我做的: 我专门为我自己的文件和库创建了一个文件夹,命名空间,然后自动加载。

现在让我们假设您将文件放在MyProject文件夹中,并且命名空间与路径匹配。像MyProject / Bases / Class1.php有名称空间MyProject / Bases。

然后在config / config.php文件的末尾添加此代码。



spl_autoload_extensions('.php'); // Only Autoload PHP Files

spl_autoload_register(function($classname){
    
    if( strpos($classname,'\\') !== false ){
        // Namespaced Classes
        $classfile = /*strtolower(*/str_replace('\\','/',$classname)/*)*/;
        
        if($classname[0] !== '/'){
            $classfile = APPPATH.''.$classfile.'.php';
        }
        
        require($classfile);
        
    } else if( strpos($classname,'interface') !== false ){
        // Interfaces
        strtolower($classname);
        require('application/interfaces/'.$classname.'.php');
    }
    
});




这段代码会自动加载应用程序目录中命名空间的所有文件。现在你可以添加你想要的任何文件,根据它的目录路径命名它,然后使用'它在你的课堂上。

感谢Thimothy Perez的回答here