我想在我的商店中添加自定义库,而无需在需要该库的任何地方添加require
语句。
例如,我有以下课程
class SuperLibrary {
function someMethod() {
}
}
如何在不修改框架文件的情况下包含它?
答案 0 :(得分:2)
就您正在使用Opencart 3+
而言,有个好消息。如果配置正确,库将自动加载。
我们可能会在Opencart的来源中找到。使用自动加载功能:
spl_autoload_register('library');
spl_autoload_extensions('.php');
library
函数本身
function library($class)
{
$file = DIR_SYSTEM . 'library/' . str_replace('\\', '/', strtolower($class)) . '.php';
if (is_file($file)) {
include_once(modification($file));
return true;
} else {
return false;
}
}
因此要加载您的自定义库:
在.php
处创建一个<root>/system/library
文件,在这种情况下,我们可以使用以下名称-superlibrary.php
让我们考虑我们的库类是单例。因此,在文件superlibrary.php
中,我们定义简单的类:
class SuperLibrary
{
private static $inst;
public static function getInstance()
{
static::$inst = null;
if (static::$inst === null) {
static::$inst = new static();
}
return static::$inst;
}
private function __construct()
{
}
public function someMethod() {
var_dump("HELLO WORLD");
exit;
}
}
接下来,如果您尝试转储已加载的类,则不会在列表中找到它,因为,我们在代码中的任何地方都没有使用它。例如,让我们在任何控制器中使用它:
$superLib = SuperLibrary::getInstance();
$superLib->someMethod();
如果所有设置均正确,则应该看到该方法的转储输出。
我希望有帮助。