我在本机php app中有这段代码。
use Elasticsearch\ClientBuilder;
require 'vendor/autoload.php';
我正在将此应用转换为Codeigniter。现在,当我在CI中粘贴上面的代码时,它给了我错误。我在下面的陈述中修改了所需的部分错误。
require_once APPPATH."third_party/elasticsearch/vendor/autoload.php";
但我无法修复
use Elasticsearch\ClientBuilder;
它不断给我语法错误。谁知道如何解决它?
请帮忙。 感谢
答案 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