bnomei/autoloader-for-kirby

用于在插件中自动加载各种 Kirby 扩展的辅助工具

4.4.0 2024-08-20 16:42 UTC

README

Release Downloads Coverage Maintainability Discord

用于在插件中自动加载各种 Kirby 扩展的辅助工具

商业使用


支持开源!

此插件免费,但如果您在商业项目中使用它,请考虑赞助我或捐款。
如果我的工作帮助您赚了一些钱,那么我得到一些回报似乎也是公平的,对吧?

要善良。分享一点。谢谢。

— Bruno
 

安装

composer require bnomei/autoloader-for-kirby

此包 NOT 是 kirby 插件

  • 这是一个 composer 包,因为它实际上使其设置更容易,并且不会干扰扩展的加载顺序。
  • 作为一个包,它也可以用于本地插件,也可以作为在线插件中的 composer 依赖项。

扩展自动加载

添加您想要自动加载的每种扩展类型的加载器一次,它将正确注册所有子文件夹中的文件。

支持的扩展

以下扩展可以自动加载

  • 蓝图 (php 或 yml,类)
  • 类 (php)
  • 集合 (php)
  • 命令 (php)
  • 控制器 (php)
  • 块模型 (php)
  • 页面模型 (php)
  • 路由 (php)
  • api路由 (php)
  • 用户模型 (php)
  • 片段 (php)
  • 模板 (php)
  • 翻译 (php 或 yml 或 json)

注意

  • 此包添加了从 yaml 或 json 文件加载翻译的功能,这不是 kirby 核心的原始部分。
  • “类”加载器非常基础。建议使用 kirby 的 load()-辅助程序或 composer 的 psr-4 自动加载的自定义数组。
  • “路由”和“apiRoutes”加载器基于 @tobimori 的代码,需要类似于 Next.js 的文件结构 示例
  • 从类加载的蓝图需要 kirby-blueprints 插件

用法

在您的项目或插件的 composer.json 中将其作为依赖项引入后,您可以使用 autoload()-辅助程序来加载各种扩展。

/site/plugins/example/index.php

<?php

// only autoloader
Kirby::plugin('bnomei/example', autoloader(__DIR__)->toArray());
<?php

// merge autoloader with custom config
Kirby::plugin('bnomei/example', autoloader(__DIR__)->toArray([
    'options' => [
        // options
    ],
    // other extensions
]));
<?php

// optionally change some settings
/*
autoloader(__DIR__, [
    'snippets' => [
        'folder' => 'schnippschnapp',
    ],
]);
*/

autoloader(__DIR__)->classes();
// use a different folder
// autoloader(__DIR__)->classes('src');

// set each option explicitly without merging
Kirby::plugin('bnomei/example', [
    'options' => [
        // options
    ],
    'blueprints' => autoloader(__DIR__)->blueprints(),
    'collections' => autoloader(__DIR__)->collections(),
    'commands' => autoloader(__DIR__)->commands(),
    'controllers' => autoloader(__DIR__)->controllers(),
    'blockModels' => autoloader(__DIR__)->blockModels(),
    'pageModels' => autoloader(__DIR__)->pageModels(),
    'routes' => autoloader(__DIR__)->routes(),
    'userModels' => autoloader(__DIR__)->userModels(),
    'snippets' => autoloader(__DIR__)->snippets(),
    'templates' => autoloader(__DIR__)->templates(),
    'translations' => autoloader(__DIR__)->translations(),
    // other extensions
]);

设置

该包附带 默认设置 以适应大多数用例。但您可以随时更改它们,每次调用 autoloader()-辅助程序时为不同的目录(即每个插件的 index.php 文件)。

/site/plugins/example/index.php

<?php

Kirby::plugin('bnomei/example', autoloader(__DIR__, [
        'blockModels' => [
            // mapping BlockModel class names to file names, like
            // MyCustomBlock::class => 'my.custom' (site/blueprints/blocks/my.custom.yml)
            'transform' => fn ($key) => \Bnomei\Autoloader::pascalToDotCase($key),
        ],
    ])->toArray()
);

建议

此插件与我的 Kirby CLI 工具 结合使用效果很好,该工具可以帮助您更快地创建扩展文件。

免责声明

此包按“原样”提供,不提供任何保证。自行承担风险,并在将它们用于生产环境之前始终自行测试。如果您发现任何问题,请 创建新问题

许可

MIT

不建议在任何推广种族主义、性别歧视、恐同、动物虐待、暴力或其他任何形式的仇恨言论的项目中使用此软件包。