asas-virtuais/asas-virtuais-wp

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

WordPress 插件编码库

6.8.3 2020-12-17 13:42 UTC

README

随着时间的推移,这个框架获得了许多功能,由于大多数插件不需要所有这些,我开始拆分它们。我正在创建一个名为 asas-virtuais-wp-core 的新框架,它将只包含 WP 插件的基礎功能,我还计划将通用 PHP 函数移动到名为 asas-virtuais-php 的库中。

Asas Virtuais WP 框架

Asas Virtuais 的意思是虚拟翅膀。

目标

  • 收集在 WordPress 插件中非常常见的代码。

优势

  • 消除了在不同插件之间复制粘贴相同类和方法的做法。
  • 只保留每个插件中特定于该插件的内容。

需要框架

composer require asas-virtuais/asas-virtuais-wp

加载框架

确保依赖项已正确安装,并且框架位于 vendor 下。

1 - 需要TakeOff.php

$loader = require_once( plugin_dir_path( __FILE__ ) . 'vendor/asas-virtuais/asas-virtuais-wp/TakeOff.php' );

2 - 调用飞行方法,传递 composer 自动加载和插件文件路径。

  • 最好在 plugins_loaded 钩子下执行此操作
$autoload = require_once( plugin_dir_path( __FILE__ ) . 'vendor/autoload.php' );
$framework_instance = $loader->fly( $autoload, __FILE__ );

使用框架

一旦调用飞行方法,您就可以调用在 lib 目录下文件中的任何函数,并且可以通过以下示例获取框架实例

$framework_instnace = asas_virtuais( 'my-plugin-name' );
  • my-plugin-name 是当然主要插件文件的 basename,当然不包括扩展名。

框架还有一个默认实例,可以在某些情况下使用。

$framework_default_instance = asas_virtuais();

使用管理类

注意管理构造函数的参数以及每个管理器的内部工作方式,一些可能需要输入才能实例化,而另一些可能需要首先实例化另一个管理器。

管理器不是自动实例化的,它们将在使用时实例化。

管理器类可以是框架实例的扩展或直接从框架实例中调用。

扩展管理器

class MyAssetsManager extends \AsasVirtuaisWP\Assets\AssetsManager

管理器类可以是框架实例的扩展或直接从框架实例中调用。

$my_assets_manager = asas_virtuais('my-plugin-name')->assets_manager( $args );

最佳实践

  • 仅在 plugins_loaded 钩子下调用 $loader->fly
  • 将您的框架实例保存在类变量中,而不是多次调用 asas_virtuais
  • 将您的管理器实例保存在类变量中,而不是多次依赖 asas_virtuais()->x_manager(); 方法。

幕后发生了什么

1 - 当您需要 TakeOff.php 时

  • 如果尚未实例化,则类 \AsasVirtuais\WP\Framework\TakeOff 将被实例化。此类仅实例化一次,不管有多少插件使用框架。
  • TakeOff 将注册所有需要框架的插件,但只会加载框架的最新版本。

2 - 当调用方法 TakeOff->fly 时

  • 这将触发框架加载,假设所有插件在 plugins_loaded 钩子之前需要 TakeOff.php,并且仅在 plugins_loaded 钩子之后调用 Fly 方法,将加载最新版本。
  • 如果插件在 plugins_loaded 钩子之前调用 fly 方法,将使用该插件的框架版本,而不管其他插件是否有更新版本的框架。

问题和解决方案

  • 我们面临的主要问题是让多个插件都可以使用该框架,但只加载一次。目前这个问题是通过使用 TakeOff 类/文件来加载已注册框架的最新版本来解决的。