dxw / iguana
WordPress 的依赖注入框架
v1.3.2
2023-08-10 08:51 UTC
Requires
- php: ^7.4|^8.1
- aura/autoload: ^2.0
Requires (Dev)
- 10up/wp_mock: ^0.3.0
- dxw/php-cs-fixer-config: ^2.0
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^9.6
This package is auto-updated.
Last update: 2024-08-28 10:37:46 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();
来一次性注册它。