mindspun / wordpress-plugin-framework
用于创建专业级 WordPress 插件的框架。
Requires
- php: >=7.4
Requires (Dev)
- mockery/mockery: ^1.5
- phpcompatibility/phpcompatibility-wp: ^2.1
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.7
- wp-coding-standards/wpcs: ^3.0
README
WordPress 插件框架利用注册和外观设计模式来创建专业级的插件,这些插件
- 具有干净、易于理解的对象导向实现。
- 实现 100% 单元测试覆盖率。
请参阅 examples
目录中的示例。
安装
代码足够简单 - 且已正确授权 - 可以直接复制到您的产品中,然而,最佳方法是使用 Composer 和 Strauss。
请参阅 examples
目录以获取使用此方法的完整插件。
自动加载
此包还包含一个简单的自动加载类,支持 WordPress 和 PSR-4 风格的类。使用它来自动加载您的应用程序代码。
require_once( __DIR__ . '/vendor-prefixed/autoload.php' );
Autoloader::autoload( 'Examples\Logging', __DIR__ . '/includes' );
第一行引入 Strauss 自动加载器,它加载框架 - 包括我们的自动加载器类。第二行加载我们的插件代码。
自动加载方法注册一个命名空间并将包含文件的目录关联起来。
autoload( string $namespace, string $dir, string $type = 'psr4' )
参数 $type
还接受 wordpress
或 wp
,在这种情况下使用 WordPress 文件命名方案 - 即带有 'class-' 文件名等。
使用方法
外观/提供者组合在您的插件中充当微型库。外观是应用程序其余部分与提供者提供的功能交互的唯一方式。
在插件文件中,您会调用
MyComponentProvider::provide();
然后在应用程序的其余部分使用外观
MyComponent::my_method();
全局外观/提供者
框架包含一个内置的外观/提供者组合:"全局",因为每个插件都将需要它。
在您的插件中,用此外观替换对全局函数的任何调用 - 要么是 PHP 原生,要么是 WordPress 定义 - 例如,将 die()
替换为 Globals::die()
,将 wp_redirect(...)
替换为 Globals::wp_redirect(...)
等。
通常,您会在自己的命名空间中创建一个扩展 Mindspun\Framework\Facades\Globals
的 "全局" 类,并且有一个空体。此类的目的是添加您使用的全局函数的 PHP doc @method
注释,以帮助您的编辑器。请参阅 "examples" 目录中的 "全局" 类以获取示例。
动机
至少有六个其他 GitHub 项目名称为 'wordpress-plugin-framework',为什么还需要一个?
- 要为任何复杂性的插件实现 100% 代码覆盖率是非常困难的,我们认为这是发布的最小要求。这种方法解决了这个问题。
- 只需查看 wordpress.org/plugins/ 上的任何旧插件,您就会看到,随着插件的增长,防止插件变成乱麻代码是非常困难的。这种方法阻止了这种情况(大多数情况下,仍需小心)。
开发
设置
composer update make