php - 如何在没有 Composer 的情况下自动加载 PHP 命名空间?
问题描述
我正在尝试使用这个库: 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 repo 来使用这个库,并创建以下内容:
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');
推荐阅读
- png - Ghostscript -- 将 PS 转换为 PNG、旋转和缩放
- linux - 如何在 libcurl 中启用 sslv3 请求
- apache-camel - 如何使用来自 Topic ActiveMQ Artemis 的消息
- go - Golang 代码中的未知错误:第二遍中的插入排序?
- c++ - C++:为什么函数对象基类、适配器和绑定器被弃用(C++11)和移除(C++17)?
- c - MISRAC:2012:规则 4.1 八进制和十六进制转义序列应终止
- java - 会话 ID 为空。调用 quit() 后使用 WebDriver?
- css - 如何使用 bootstrap 3.3.7 在顶部导航栏中创建下拉菜单?
- c++ - “链接 CXX 可执行世界服务器”失败
- r - 如何使用插入符号比较不同的模型,调整不同的参数?