如何在Opencart 3中包含我的自定义库

时间:2019-09-19 20:25:33

标签: php opencart opencart-3

我想在我的商店中添加自定义库,而无需在需要该库的任何地方添加require语句。

例如,我有以下课程

class SuperLibrary {
   function someMethod() {

   }
}

如何在不修改框架文件的情况下包含它?

1 个答案:

答案 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;
    }
}

因此要加载您的自定义库:

  1. .php处创建一个<root>/system/library文件,在这种情况下,我们可以使用以下名称-superlibrary.php

  2. 让我们考虑我们的库类是单例。因此,在文件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;
           }
      }
    
  3. 接下来,如果您尝试转储已加载的类,则不会在列表中找到它,因为,我们在代码中的任何地方都没有使用它。例如,让我们在任何控制器中使用它:

    $superLib = SuperLibrary::getInstance();
    $superLib->someMethod();
    
  4. 如果所有设置均正确,则应该看到该方法的转储输出。

我希望有帮助。