mindspun/wordpress-plugin-framework

用于创建专业级 WordPress 插件的框架。

v1.4.0 2024-08-24 15:09 UTC

This package is auto-updated.

Last update: 2024-09-24 15:22:24 UTC


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 还接受 wordpresswp,在这种情况下使用 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