dxw/iguana

WordPress 的依赖注入框架

v1.3.2 2023-08-10 08:51 UTC

README

WordPress 可扩展的主题和插件框架。

组件

  • iguana 是一个库,允许主题和插件设置自动加载和依赖注入,而不需要太多的样板代码
  • iguana-theme 基于 iguana,允许主题注册辅助函数和使用模板布局

使用 Iguana 的主题模板

安装

将 iguana 库添加到您的主题或插件中

$ composer require dxw/iguana

将这些两行添加到 templates/functions.php 中(如果 functions.php 不在子目录中,请相应修改)

$registrar = require __DIR__.'/../app/load.php';
$registrar->register();

添加一个名为 app/load.php 的新文件

<?php

require __DIR__.'/../vendor.phar';

return \Dxw\Iguana\Init::init(__DIR__, 'MyTheme');

(将 MyTheme 替换为您主题/插件的命名空间。)

添加一个名为 app/di.php 的新文件

它最初可以是空的

<?php

但最终它将包含构建您代码依赖图的必要代码,即

$registrar->addInstance(new \MyTheme\MyClass());
$registrar->addInstance(new \MyTheme\MyOtherClass(
    $registrar->getInstance(\MyTheme\MyClass::class)
));

Iguana 提供的内容

对于您的依赖注入类结构

您的类可以指示它们有需要运行的代码(这将在 functions.php 中的 $registrar->register() 调用时运行)

<?php

namespace MyTheme;

class MyClass implements \Dxw\Iguana\Registerable
{
    public function register()
    {
        add_filter(...);
    }
}

任何添加到注册器的实现 \Dxw\Iguana\Registerable 的实例都将调用其 register() 方法。

这意味着您不需要在将它们添加到 app/di.php 之后记住调用 register() 方法。

并且将调用 add_filter(),'register_xyz()’,等操作移出构造函数可以使单元测试更容易。

对于您的后台进程和计划任务

如果您在 WordPress 外运行后台进程或计划任务,可以使用 $registrar = require('path/to/load.php'); 来加载您主题/插件中的所有代码。如果您需要注册它,您可以分步骤进行,或者可以调用 $registrar->register(); 来一次性注册它。

许可

MIT