devuri / wp-option
WordPress 选项管理的一个简单综合界面,提供面向对象的获取、添加、更新和删除操作。
Requires
- php: ^7.2 || ^7.4 || ^8.0
Requires (Dev)
- 10up/phpcs-composer: dev-master
- phpstan/phpstan: ^1.8
- phpstan/phpstan-strict-rules: ^1.3
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.24 || ^5.0
This package is auto-updated.
Last update: 2024-09-29 18:12:16 UTC
README
WP Option
被设计为提供面向对象的接口,用于管理 WordPress 选项,简化在 WordPress 中获取、添加、更新和删除选项的过程。它充当 WordPress 选项 API 的 桥梁
,增强代码的可读性和可维护性。
功能
- 面向对象方法:将 WordPress 选项管理封装在一个单一的、统一的类中。
- 依赖注入:通过允许自定义获取选项的函数,便于测试和灵活性。
- 综合选项管理:支持对 WordPress 选项进行获取、添加、更新和删除操作。
- 错误日志:基本错误日志,用于输入验证,有助于调试和问题解决。
要求
- PHP 7.2 或更高版本
- WordPress 4.7 或更高版本
安装
通过 Composer 安装此包
composer require devuri/wp-option
使用
初始化
首先,导入 WPOptionBridge
类并实例化它
use Urisoft\WPOptionBridge; $optionBridge = new WPOptionBridge();
获取选项
使用 get_option
方法检索选项值
$siteName = $optionBridge->get_option('blogname', 'Default Site Name');
添加选项
使用 add_option
方法添加新选项
$optionBridge->add_option('my_custom_option', 'My Custom Value');
更新选项
使用 update_option
方法更新现有选项
$optionBridge->update_option('my_custom_option', 'Updated Custom Value');
删除选项
使用 delete_option
方法删除选项
$optionBridge->delete_option('my_custom_option');
高级使用
自定义选项检索
WPOptionBridge
类的设计考虑到灵活性,允许开发者注入自定义函数来检索选项值。这对于单元测试特别有用,在单元测试中,你可能想要将类与 WordPress 数据库隔离开来,或者与自定义缓存层或选项存储机制集成。
使用自定义可调用函数
WPOptionBridge
的 set_option_getter 接受一个 callable
参数,该参数替换默认的 WordPress get_option
函数。在 PHP 中,callable
是可以像函数一样调用的东西。这包括实际函数、静态类方法和对象方法等。
以下是利用此功能的方法
use Urisoft\WPOptionBridge; // Define a custom function for getting options. // This is a simple example that mimics the get_option behavior. $customOptionGetter = function($option_name, $default = false) { // Custom logic to retrieve an option value // For example, you might want to check a local cache first $value = /* your custom retrieval logic */; return $value !== null ? $value : $default; }; $optionBridge = new Urisoft\WPOptionBridge(); // Set a custom option getter $optionBridge->set_option_getter($customOptionGetter);
在这个例子中,$customOptionGetter
是一个自定义函数,用于检索选项值。当创建 WPOptionBridge
的新实例时,将此函数作为参数传递。当调用 get_option
时,该类将使用此函数而不是默认的 WordPress get_option
函数。
自定义可调用函数的使用场景
- 单元测试:通过注入返回预定义值的自定义函数,可以在不依赖 WordPress 环境或数据库的情况下测试使用
WPOptionBridge
的代码的行为。 - 缓存:如果你的应用程序有自定义的选项缓存层,可以注入一个函数,该函数首先检查缓存,然后再回退到数据库。
- 自定义存储:对于将选项存储在 WordPress 数据库之外的应用程序(如不同的数据库或文件),可以使用此功能将
WPOptionBridge
集成到你的存储机制中。
最佳实践
- 确保你的自定义可调用函数符合预期的签名:它应该接受一个选项名称和一个可选的默认值,如果找到选项,则返回选项值,如果没有找到,则返回默认值。
- 在用于缓存时,确保适当地处理缓存失效,以避免数据过时问题。
自定义选项管理
本类提供了在管理WordPress选项方面的完全灵活性,允许您为选项操作定义自定义函数。这对于单元测试、与缓存系统集成或使用自定义存储机制进行WordPress选项非常有用。
设置自定义函数
您可以使用以下方法为每个操作设置自定义函数:
set_option_getter(callable $function)
:自定义选项检索的方式。set_option_adder(callable $function)
:自定义选项添加的方式。set_option_updater(callable $function)
:自定义选项更新的方式。set_option_deleter(callable $function)
:自定义选项删除的方式。
每个方法都接受一个callable
参数,它应该是一个与相应的WordPress函数预期签名匹配的函数。
示例
use Urisoft\WPOptionBridge; $optionBridge = new WPOptionBridge(); // Custom function for retrieving options $optionBridge->set_option_getter(function($name, $default = false) { // Custom logic to retrieve an option }); // Custom function for adding options $optionBridge->set_option_adder(function($name, $value) { // Custom logic to add an option }); // Custom function for updating options $optionBridge->set_option_updater(function($name, $value) { // Custom logic to update an option }); // Custom function for deleting options $optionBridge->set_option_deleter(function($name) { // Custom logic to delete an option });
使用场景
- 单元测试:模拟选项函数,以在不与数据库交互的情况下测试您的应用程序逻辑。
- 缓存:实现与缓存层协同工作的自定义获取器和设置器,以减少数据库负载。
- 自定义存储:集成自定义存储系统,例如外部数据库或基于文件的存储系统。
利用这些自定义功能,
WPOptionBridge
成为了一个适应性强的工具,可以适应各种架构和测试环境,增强WordPress项目的模块化和可测试性。
贡献
欢迎贡献!请阅读我们的贡献指南,了解我们的行为准则和提交拉取请求的过程。
许可
WP Option Bridge
是开源软件,根据MIT许可授权。