micropackage / dochooks
DocHooks - 注解 WordPress 钩子
1.1.4
2023-06-23 08:52 UTC
Requires
- php: >=5.6
- micropackage/singleton: ^1.1
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-23 11:19:34 UTC
README
🧬 关于 DocHooks
Laravel 或 Symfony 项目使用方法注解来实现各种功能。这有助于在不编写太多代码的情况下对项目进行组织。WordPress 没有实现此类概念,此包是补救措施。
DocHooks 包允许您做以下操作
class Example extends HookAnnotations { /** * @action test */ public function test_action() {} /** * @filter test 5 */ public function test_filter( $val, $arg ) { return $val; } /** * @shortcode test */ public function test_shortcode( $atts, $content ) { return 'This is test'; } } $example = new Example(); $example->add_hooks();
而不是旧的
$example = new Example(); add_action( 'test', [ $example, 'test_action' ] ); add_filter( 'test', [ $example, 'test_filter' ], 5, 2 ); add_shortcode( 'test', [ $example, 'test_shortcode' ] );
💾 安装
composer require micropackage/dochooks
🕹 使用
注解
@action <hook_name*> <priority>
@filter <hook_name*> <priority>
@shortcode <shortcode_name*>
钩子和短代码名称是必需的,而默认优先级为 10
。
您不需要提供参数数量,类会自动计算。只需使用您想要的回调参数。
测试 DocHooks 是否正常工作
当 OPCache 中禁用了 save_comments
和 load_comments
时,此包将无法工作,因为评论已被删除。 查看回退解决方案。
use Micropackage\DocHooks\Helper; (bool) Helper::is_enabled();
在类中使用
您可以扩展 HookAnnotations 类
use Micropackage\DocHooks\HookAnnotations; class Example extends HookAnnotations { /** * @action test */ public function test_action() {} } $example = new Example(); $example->add_hooks();
或使用 Trait
use Micropackage\DocHooks\HookTrait; class Example { use HookTrait; /** * @action test */ public function test_action() {} } $example = new Example(); $example->add_hooks();
作为独立对象使用
use Micropackage\DocHooks\Helper; class Example { /** * @action test */ public function test_action() {} } $example = Helper::hook( new Example() );
回退
由于 HookAnnotations 对象将调用的钩子存储在 _called_doc_hooks
属性中,您可以从中提取并解析为旧 add_action
、add_filter
和 add_shortcode
函数的列表。
为此,您需要一个包含所有具有钩子的对象的“仓库”,即运行时类。 在通知插件中查看此方法的示例,它使用 WP CLI 将所有钩子输出到单独的文件。
📦 关于 Micropackage 项目
如名称所示,Micropackages 是包含少量可重用代码的微型包,尤其有助于 WordPress 开发。
目标是拥有多个包,可以通过定义结构来组合它们以创建更大的东西。
Micropackages 由 BracketSpace 维护。
📖 更新日志
📃 许可证
此软件根据 MIT 许可证发布。有关更多信息,请参阅 LICENSE 文件。