在webman的插件中如何加载自己的插件函数呢?

楚羽幽

看文档里面好像还没有在插件中导入自己的函数呀,我新建了一个插件的autoload.php,但似乎好像还是没生效

1352 1 1
1个回答

walkor 打赏

support/bootstrap.php里找到

foreach (config('autoload.files', []) as $file) {
    include_once $file;
}

在上面加一段代码

foreach (config('plugin', []) as $firm => $projects) {
    foreach ($projects as $name => $project) {
        foreach ($project['autoload']['files'] ?? [] as $file) {
            include_once $file;
        }
    }
}
  • 楚羽幽 2022-03-22

    现在有没有其他方案可以扩展引入自己的函数库呢?还是得用这个方法呀? 我这里倒是可以改,但发布了插件,官方的bootstrap.php没有这些代码,别人安装我插件就报错了呀

  • walkor 2022-03-22

    下个版本会加上这个代码。
    如果担心有的用户没有这段代码,就用composer.json来自动加载。

    本地开发需要更改2个composer.json,一个是webman的composer.json,一个是你插件的composer.json。正式发布的时候只需要你插件的composer.json。

    比如你要加载的文件是 vendor/foo/admin/src/functions.php
    1、webman的composer.json里autoload.files里加上要加载的文件

    "autoload": {
        "psr-4": {
          "": "./",
          "App\\": "./app"
        },
        "files": [
          "./support/helpers.php",
          "./vendor/foo/admin/src/functions.php"
        ]
      },

    2、你的插件项目的composer.json里autoload.files类似这样

    "autoload": {
        "psr-4": {
         // 这里省略了配置
        },
        "files": [
          "./src/functions.php"
        ]
      },

    然后执行 composer dumpautoload

  • 楚羽幽 2022-03-22

    ok,明白了

年代过于久远,无法发表回答
×
🔝