wpfulcrum/config

Fulcrum 配置模块 - 一个轻量级的配置组件。

3.0.4 2017-12-12 02:28 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:29:23 UTC


README

Build Status Latest Stable Version License

Fulcrum 配置模块为您的 WordPress 项目提供运行时配置组件。它简洁且轻量。

通过 ConfigContract 接口使用依赖注入,您可以为每个对象注入特定实现的配置。忘记硬编码参数,因为这些参数需要您为每个实现或项目更改它们。相反,将它们抽象成配置数组,然后将该文件加载到 Config 中,使您的代码更易于阅读、重用、测试和维护。

特性

此模块提供了一种干净、可重用的方法来

  1. 抽象出所有特定实现的配置参数,并将它们组织在一个文件中。
  2. 将实现的数组转换为 Config 对象。
  3. 当您想要一组常用默认值(如短代码、文章类型、分类法、小工具等)时,传递默认值。模块会自动将这些默认值与每个实现深度合并。
  4. 您可以使用标准对象表示法或在 get() 方法中使用单点或“点”表示法来获取一个或多个参数,如下所示
    • 例如 $this->config->numOfPosts
    • 使用单点或“点”表示法。
  5. 将额外参数推送到单个配置。
  6. 等等。

安装

通过 Composer 使用此组件是最好的方式

composer require wpfulcrum/config

"点"表示法

像所有 Fulcrum 模块一样,我们从 Laravel 的“点”表示法中借用以访问深层嵌套的数组元素。什么是“点”表示法?好问题。

点表示法是一种使用由点分隔的键字符串来访问深层嵌套数组的高明机制。

这里让我给你演示一下。假设你有一个深层嵌套的数组,如下所示

$config = new Config([
	'autoload'  => true,
	'classname' => 'YourBrand\YourProject\Shortcode\QA',
	'config'    => [
		'shortcode' => 'qa',
		'view'      => YOURPLUGIN_PATH . 'src/Shortcode/views/qa.php',
		'defaults'  => [
			'id'         => '',
			'class'      => '',
			'question'   => '',
			'type'       => '',
			'color'      => '',
			'open_icon'  => 'fa fa-chevron-down',
			'close_icon' => 'fa fa-chevron-up',
		],
	],
]);

要获取短代码的默认打开图标,你会这样做 $config->get('default.open_icon')。注意,使用点表示法,你能够深入到数组中并选择打开图标的值。

如何?它使用的是 Fulcrum Extender 的 DotArray 模块。真的,Array 模块是一个很棒的 PHP 扩展器,使您在处理深层嵌套数组时的工作变得更加容易。

常见的基本用法和功能

创建配置文件

通常,您会创建一个存储在我们主题或插件 config/ 文件夹中的 PHP 文件。在该文件中,您将构建并返回一个包含所有特定实现配置参数的数组。

让我们使用上面的配置示例,这是一个 QA 短代码的配置

<?php

return [
	'autoload'  => true,
	'classname' => 'YourBrand\YourProject\Shortcode\QA',
	'config'    => [
		'shortcode' => 'qa',
		'view'      => YOURPLUGIN_PATH . 'src/Shortcode/views/qa.php',
		'defaults'  => [
			'id'         => '',
			'class'      => '',
			'question'   => '',
			'type'       => '',
			'color'      => '',
			'open_icon'  => 'fa fa-chevron-down',
			'close_icon' => 'fa fa-chevron-up',
		],
	],
];

创建可配置对象

使用上面的配置文件,以下是您可能将其注入到 Shortcode 类中的方法

<?php

namespace YourBrand\YourProject\Shortcode;

use Fulcrum\Config\ConfigContract;
use Fulcrum\Custom\Shortcode\Shortcode;

class QA extends Shortcode
{
    /**
     * Runtime configuration parameters.
     * 
     * @var ConfigContract
     */
    protected $config;

    /**
     * QA constructor.
     *
     * @param ConfigContract $config Instance of the runtime configuration parameters for this QA shortcode.
     */
    public function __construct(ConfigContract $config)
    {
        $this->config = $config;
    }
    
    /**
     * Build the Shortcode HTML and then return it.
     *
     * @since 1.0.0
     *
     * @return string Shortcode HTML
     */
    protected function render() {
        $content = do_shortcode( $this->content );

        ob_start();
        include $this->config->view;

        return ob_get_clean();
    }
    
    // left of the code left out for brevity.
}

注意,我们通过 ConfigContract 接口定义了依赖注入,这样您可以轻松地将实现替换为不同的 Config 存储库。

同时注意,我们在 render() 方法中加载了视图文件:include $this->config->view; 您传递的参数可以作为对象属性或通过使用 $this->config->get('view') 方法获得。

创建配置并注入它

要创建配置参数的实例,最好使用 ConfigFactory。您可以传递

  1. 配置参数可以通过配置文件路径或数组来设置。
  2. 默认参数可以通过默认文件路径或数组来设置。

这里,我将通过上面的QA短代码示例来展示一些用法。

示例 - 通过配置文件路径

$qaShortcode = new QA(
    ConfigFactory::create(YOURPLUGIN_PATH . '/config/shortcode/qa.php')  
);

示例 - 包含常见默认值

$qaShortcode = new QA(
    ConfigFactory::create(
        YOURPLUGIN_PATH . '/config/shortcode/qa.php',
        YOURPLUGIN_PATH . '/config/shortcode/defaults.php
    )  
);

与配置文件一起工作

您有几种方法可以在对象内部与配置一起工作。

  • all() - 获取所有运行时配置参数
  • get($dotNotationKeys, $default = null) - 通过 $dotNotationKeys 获取指定的配置值。键可以是“点”表示法。
  • has($dotNotationKeys) - 判断指定的配置值是否存在。键可以是“点”表示法。
  • isArray($dotNotationKeys, $validWhenEmpty = null) - 检查给定的“点”表示法键是否是有效的数组。
  • merge(array $arrayToMerge) - 将新数组合并到配置中。
  • push($parameterKey, $value) - 将值推入配置。
  • remove($dotNotationKeys) - 从配置中移除一个项目。
  • set($dotNotationKeys, $value) - 设置配置中给定项目的新的值。

贡献

欢迎所有反馈、错误报告和拉取请求。

致谢

“点”表示法和 Config 类的基本结构是Laravel中的Illuminate Config组件的定制实现。