getpop / hooks
此包已被弃用且不再维护。未建议替代包。
实现 PoP 的钩子(过滤器和动作)的合约
0.8.9
2021-11-30 07:11 UTC
Requires
- php: ^8.0
- getpop/translation: ^0.8.9
Requires (Dev)
- phpstan/phpstan: ^1.0
- phpunit/phpunit: >=9.3
- rector/rector: ^0.12
- squizlabs/php_codesniffer: ^3.0
Conflicts
- getpop/access-control: <0.8.9
- getpop/api: <0.8.9
- getpop/api-clients: <0.8.9
- getpop/api-endpoints: <0.8.9
- getpop/api-endpoints-for-wp: <0.8.9
- getpop/api-graphql: <0.8.9
- getpop/api-mirrorquery: <0.8.9
- getpop/api-rest: <0.8.9
- getpop/application: <0.8.9
- getpop/application-wp: <0.8.9
- getpop/cache-control: <0.8.9
- getpop/component-model: <0.8.9
- getpop/component-model-configuration: <0.8.9
- getpop/definitionpersistence: <0.8.9
- getpop/definitions: <0.8.9
- getpop/definitions-base36: <0.8.9
- getpop/definitions-emoji: <0.8.9
- getpop/engine: <0.8.9
- getpop/engine-wp: <0.8.9
- getpop/engine-wp-bootloader: <0.8.9
- getpop/field-query: <0.8.9
- getpop/filestore: <0.8.9
- getpop/function-fields: <0.8.9
- getpop/guzzle-helpers: <0.8.9
- getpop/hooks-wp: <0.8.9
- getpop/loosecontracts: <0.8.9
- getpop/mandatory-directives-by-configuration: <0.8.9
- getpop/modulerouting: <0.8.9
- getpop/multisite: <0.8.9
- getpop/query-parsing: <0.8.9
- getpop/resourceloader: <0.8.9
- getpop/resources: <0.8.9
- getpop/root: <0.8.9
- getpop/routing: <0.8.9
- getpop/routing-wp: <0.8.9
- getpop/site: <0.8.9
- getpop/site-builder-api: <0.8.9
- getpop/site-wp: <0.8.9
- getpop/spa: <0.8.9
- getpop/static-site-generator: <0.8.9
- getpop/translation-wp: <0.8.9
- graphql-api/extension-demo: <0.8.9
- graphql-api/external-dependency-wrappers: <0.8.9
- graphql-api/graphql-api-for-wp: <0.8.9
- graphql-api/markdown-convertor: <0.8.9
- graphql-by-pop/graphiql: <0.8.9
- graphql-by-pop/graphql-clients-for-wp: <0.8.9
- graphql-by-pop/graphql-endpoint-for-wp: <0.8.9
- graphql-by-pop/graphql-parser: <0.8.9
- graphql-by-pop/graphql-query: <0.8.9
- graphql-by-pop/graphql-request: <0.8.9
- graphql-by-pop/graphql-server: <0.8.9
- graphql-by-pop/graphql-voyager: <0.8.9
- pop-schema/block-metadata-for-wp: <0.8.9
- pop-schema/categories: <0.8.9
- pop-schema/categories-wp: <0.8.9
- pop-schema/comment-mutations: <0.8.9
- pop-schema/comment-mutations-wp: <0.8.9
- pop-schema/commentmeta: <0.8.9
- pop-schema/commentmeta-wp: <0.8.9
- pop-schema/comments: <0.8.9
- pop-schema/comments-wp: <0.8.9
- pop-schema/custompost-categories-wp: <0.8.9
- pop-schema/custompost-category-mutations: <0.8.9
- pop-schema/custompost-mutations: <0.8.9
- pop-schema/custompost-mutations-wp: <0.8.9
- pop-schema/custompost-tag-mutations: <0.8.9
- pop-schema/custompost-tags-wp: <0.8.9
- pop-schema/custompostmedia: <0.8.9
- pop-schema/custompostmedia-mutations: <0.8.9
- pop-schema/custompostmedia-mutations-wp: <0.8.9
- pop-schema/custompostmedia-wp: <0.8.9
- pop-schema/custompostmeta: <0.8.9
- pop-schema/custompostmeta-wp: <0.8.9
- pop-schema/customposts: <0.8.9
- pop-schema/customposts-wp: <0.8.9
- pop-schema/generic-customposts: <0.8.9
- pop-schema/media: <0.8.9
- pop-schema/media-wp: <0.8.9
- pop-schema/menus: <0.8.9
- pop-schema/menus-wp: <0.8.9
- pop-schema/meta: <0.8.9
- pop-schema/metaquery-wp: <0.8.9
- pop-schema/pages: <0.8.9
- pop-schema/pages-wp: <0.8.9
- pop-schema/post-categories: <0.8.9
- pop-schema/post-categories-wp: <0.8.9
- pop-schema/post-category-mutations: <0.8.9
- pop-schema/post-category-mutations-wp: <0.8.9
- pop-schema/post-mutations: <0.8.9
- pop-schema/post-tag-mutations: <0.8.9
- pop-schema/post-tag-mutations-wp: <0.8.9
- pop-schema/post-tags: <0.8.9
- pop-schema/post-tags-wp: <0.8.9
- pop-schema/postmedia-mutations: <0.8.9
- pop-schema/posts: <0.8.9
- pop-schema/posts-wp: <0.8.9
- pop-schema/queriedobject: <0.8.9
- pop-schema/queriedobject-wp: <0.8.9
- pop-schema/schema-commons: <0.8.9
- pop-schema/settings: <0.8.9
- pop-schema/settings-wp: <0.8.9
- pop-schema/tags: <0.8.9
- pop-schema/tags-wp: <0.8.9
- pop-schema/taxonomies: <0.8.9
- pop-schema/taxonomies-wp: <0.8.9
- pop-schema/taxonomymeta: <0.8.9
- pop-schema/taxonomymeta-wp: <0.8.9
- pop-schema/taxonomyquery: <0.8.9
- pop-schema/taxonomyquery-wp: <0.8.9
- pop-schema/user-avatars: <0.8.9
- pop-schema/user-avatars-wp: <0.8.9
- pop-schema/user-roles: <0.8.9
- pop-schema/user-roles-access-control: <0.8.9
- pop-schema/user-roles-acl: <0.8.9
- pop-schema/user-roles-wp: <0.8.9
- pop-schema/user-state: <0.8.9
- pop-schema/user-state-access-control: <0.8.9
- pop-schema/user-state-mutations: <0.8.9
- pop-schema/user-state-mutations-wp: <0.8.9
- pop-schema/user-state-wp: <0.8.9
- pop-schema/usermeta: <0.8.9
- pop-schema/usermeta-wp: <0.8.9
- pop-schema/users: <0.8.9
- pop-schema/users-wp: <0.8.9
- pop-sites-wassup/comment-mutations: <0.8.9
- pop-sites-wassup/contactus-mutations: <0.8.9
- pop-sites-wassup/contactuser-mutations: <0.8.9
- pop-sites-wassup/custompost-mutations: <0.8.9
- pop-sites-wassup/custompostlink-mutations: <0.8.9
- pop-sites-wassup/flag-mutations: <0.8.9
- pop-sites-wassup/form-mutations: <0.8.9
- pop-sites-wassup/gravityforms-mutations: <0.8.9
- pop-sites-wassup/highlight-mutations: <0.8.9
- pop-sites-wassup/newsletter-mutations: <0.8.9
- pop-sites-wassup/notification-mutations: <0.8.9
- pop-sites-wassup/post-mutations: <0.8.9
- pop-sites-wassup/postlink-mutations: <0.8.9
- pop-sites-wassup/share-mutations: <0.8.9
- pop-sites-wassup/socialnetwork-mutations: <0.8.9
- pop-sites-wassup/stance-mutations: <0.8.9
- pop-sites-wassup/system-mutations: <0.8.9
- pop-sites-wassup/user-state-mutations: <0.8.9
- pop-sites-wassup/volunteer-mutations: <0.8.9
- pop-wp-schema/comments: <0.8.9
- pop-wp-schema/customposts: <0.8.9
- pop-wp-schema/media: <0.8.9
- pop-wp-schema/menus: <0.8.9
- pop-wp-schema/pages: <0.8.9
- pop-wp-schema/posts: <0.8.9
- pop-wp-schema/schema-commons: <0.8.9
- pop-wp-schema/users: <0.8.9
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 首创),通过 doAction
和 applyFilters
函数以及通过 HooksAPI
接口定义的,允许任何代码块被第三方覆盖或注入额外功能。对于 WordPress,实现此接口是微不足道的。其他系统可以依赖包来实现此功能(例如:这个 或 这个)。
PHP 版本
要求
- 开发需要 PHP 8.0+
- 生产需要 PHP 7.1+
支持的 PHP 功能
预览降级到 PHP 7.1
通过 Rector(dry-run 模式)
composer preview-code-downgrade
标准
要检查编码标准,请通过 PHP CodeSniffer 运行
composer check-style
要自动修复问题,请运行
composer fix-style
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
测试
要执行 PHPUnit,请运行
composer test
静态分析
要执行 PHPStan,请运行
composer analyse
报告问题
要报告错误或请求新功能,请在 PoP monorepo issue tracker 上进行。
贡献
我们欢迎您为此软件包在 PoP monorepo(此软件包的源代码托管地)上做出贡献。
请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT 获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 leo@getpop.org 来报告,而不是使用问题跟踪器。
鸣谢
许可
GNU通用公共许可证第2版(或更新版)。请参阅 许可文件 了解更多信息。