![](/img/trans.png)
[英]How to autoload classes without namespaces with Composer without reinstalling?
[英]How to autoload PHP namespaces without Composer?
我正在尝试使用此库: https : //github.com/wunderio/docebo-php
但是,尽管它在页面上列出了Composer命令,但在Composer中找不到它。
如示例所示,如何调用该库并创建Docebo
类的新实例?
use Docebo\Docebo;
try {
$docebo = new Docebo('base_url', 'client_id', 'client_secret', 'username', 'password');
} catch (Exception $e) {
echo $e->getMessage();
}
我试图通过克隆github存储库并创建以下代码来使用此库:
docebo-php/src$ cat test.php
<?php
require_once("Docebo/Docebo.php");
use Docebo\Docebo;
try {
$docebo = new Docebo('base_url', 'client_id', 'client_secret', 'username', 'password');
} catch (Exception $e) {
echo $e->getMessage();
}
?>
这只会导致:
$ php test.php
PHP Fatal error: Interface 'Docebo\DoceboInterface' not found in /var/www/www/htdocs/docebo-php/src/Docebo/Docebo.php on line 18
不清楚您使用的是任何框架还是仅使用纯PHP代码。
我的解决方案适用于纯PHP代码:
您可以编写自己的PHP自动加载器以包含类似以下的库:
function __autoload($class_name)
{
//class directories
$directorys = array(
'/Controllers/',
'/Libraries/',
);
//for each directory
$ds = "/"; //Directory Seperator
$dir = dirname(__FILE__); //Get Current file path
$windir = "\\"; //Windows Directory Seperator
$path = str_replace($windir, $ds, $dir);
foreach($directorys as $directory)
{
//see if the file exsists
if(file_exists( $path . $directory . $class_name . '.php'))
{
require_once( $path . $directory . $class_name . '.php');
//only require the class once, so quit after to save effort (if you got more, then name them something else
return;
}
}
}
将其存储为项目根目录中的autoload.php,然后将其放在您喜欢的任何PHP文件之上:
require_once('autoload.php');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.