getpop/hooks

此包已被弃用且不再维护。未建议替代包。

实现 PoP 的钩子(过滤器和动作)的合约

0.8.9 2021-11-30 07:11 UTC

README

实现 PoP 钩子的合约。钩子的概念与 WordPress 中的相同:一个“动作”允许执行额外功能,一个“过滤器”允许修改值。

安装

通过 Composer

composer require getpop/hooks

开发

源代码托管在 PoP monorepo,位于 Engine/packages/hooks

使用

初始化组件

\PoP\Root\App::stockAndInitializeComponentClasses([([
    \PoP\Hooks\Component::class,
]);

使用它

use PoP\Hooks\Facades\HooksAPIFacade;

// Get an instance of the service
$hooksapi = HooksAPI::getInstance();

// Add a hook for an Action
$hooksapi->addAction($actionName, $functionName, $priority, $argNum);

// Add a hook for a Filter
$hooksapi->addFilter($filterName, $functionName, $priority, $argNum);

// Execute an Action
$hooksapi->doAction($actionName, $param1, $param2, ...);

// Execute a Filter
$filterValue = $hooksapi->applyFilters($filterName, $filterValue, $param1, $param2, ...);

// Remove an Action
$hooksapi->removeAction($actionName, $functionName, $priority, $argNum);

// Remove a Filter
$hooksapi->removeFilter($filterName, $functionName, $priority, $argNum);

架构设计与实现

钩子

PoP 在所有地方使用钩子(如 WordPress 首创),通过 doActionapplyFilters 函数以及通过 HooksAPI 接口定义的,允许任何代码块被第三方覆盖或注入额外功能。对于 WordPress,实现此接口是微不足道的。其他系统可以依赖包来实现此功能(例如:这个这个)。

PHP 版本

要求

  • 开发需要 PHP 8.0+
  • 生产需要 PHP 7.1+

支持的 PHP 功能

查看 leoloso/PoP 中支持的 PHP 功能列表

预览降级到 PHP 7.1

通过 Rector(dry-run 模式)

composer preview-code-downgrade

标准

PSR-1PSR-4PSR-12

要检查编码标准,请通过 PHP CodeSniffer 运行

composer check-style

要自动修复问题,请运行

composer fix-style

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

测试

要执行 PHPUnit,请运行

composer test

静态分析

要执行 PHPStan,请运行

composer analyse

报告问题

要报告错误或请求新功能,请在 PoP monorepo issue tracker 上进行。

贡献

我们欢迎您为此软件包在 PoP monorepo(此软件包的源代码托管地)上做出贡献。

请参阅 CONTRIBUTINGCODE_OF_CONDUCT 获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 leo@getpop.org 来报告,而不是使用问题跟踪器。

鸣谢

许可

GNU通用公共许可证第2版(或更新版)。请参阅 许可文件 了解更多信息。