metarush/getter

从 yaml 或 env 文件生成具有 getter 方法的类

v3.2.0 2020-01-09 18:58 UTC

This package is auto-updated.

Last update: 2024-09-10 06:17:55 UTC


README

yamlenv 文件生成具有 getter 方法的类。如果您想将 yaml/env 文件中的变量作为 PHP getter 方法访问,这将很有用。

安装

通过 composer 以 metarush/getter 方式安装

示例用法

以下命令将使用 yaml 适配器,从 foo/sample.yaml 的内容生成名为 MyNewClass 的类。生成的类将保存在 foo/ 文件夹中。

通过 CLI

vendor/metarush/getter/bin/generate -a yaml -c MyNewClass -s tests/unit/samples/sample.yaml -l foo/

通过 PHP 脚本

(new \MetaRush\Getter\Generator)
    ->setAdapter('yaml')
    ->setClassName('MyNewClass')
    ->setSourceFile('foo/sample.yaml')
    ->setLocation('foo/')
    ->generate();

示例 yaml 内容

例如,位于 foo/sample.yaml

stringVar: 'foo'
intVar: 9
floatVar: 2.1
boolVar: true
arrayVar:
  - foo
  - 1.3

示例生成的类

例如,位于 foo/MyNewClass.php

<?php

declare(strict_types=1);

namespace MyNamespace;

class MyNewClass
{
    private $stringVar = 'foo';
    private $intVar = 9;
    private $floatVar = 2.1;
    private $boolVar = true;
    private $arrayVar = [0 => 'foo', 1 => 1.3];

    public function getStringVar(): string
    {
        return $this->stringVar;
    }

    public function getIntVar(): int
    {
        return $this->intVar;
    }

    public function getFloatVar(): float
    {
        return $this->floatVar;
    }

    public function getBoolVar(): bool
    {
        return $this->boolVar;
    }

    public function getArrayVar(): array
    {
        return $this->arrayVar;
    }
}

支持类型

  • 字符串
  • 整数
  • 浮点数
  • 布尔值
  • 数组(仅在 yaml 适配器中可用)

适配器

  • yaml
  • env

高级用法

包含命名空间

如果您想包含一个命名空间,请使用 ->setNamespace('MyNamespace') 或通过 CLI --namespace MyNamespace

扩展类

如果您想扩展一个类,请使用 ->setExtendedClass('MyBaseClass') 或通过 CLI --extendClass MyBaseClass

使字段值变为虚拟值

如果您想将字段值变为虚拟值,请使用 ->setDummifyValues(true) 配置方法或通过 CLI --dummify

为什么需要虚拟化?

这对于隐藏敏感数据(如凭据)很有用。凭据不应出现在源代码中。具有虚拟数据的生成类可以在运行时(通过您的自定义脚本)用实际值重新填充(请参阅下面的数据替换器)。生成的类即使在原始值被虚拟化后也保留数据类型。

如果已虚拟化,生成的字段值如下

[
    'x', // string
    1, // int
    1.2, // float
    true, // true
    [0 => 'x'] // array
];

虚拟值的数据替换器

如果您想在运行时动态更改虚拟数据的值,请使用 ->setConstructorType(\MetaRush\Getter\Config::CONSTRUCTOR_DATA_REPLACER); 或通过 CLI --dataReplacer

您可以在运行时调用生成的类,并注入一个包含替换值的数组

// $replacementValues should contain key value pair that matches the dummified data

$newClass = new MyNewClass($replacementValues);

调用父类

如果您想调用父类,请使用 ->setConstructorType(\MetaRush\Getter\Config::CONSTRUCTOR_CALL_PARENT) 或通过 CLI --callParent

调用父类并使用数据替换器

如果您想调用父类并使用数据替换器,请使用 ->setConstructorType(\MetaRush\Getter\Config::CONSTRUCTOR_BOTH) 或通过 CLI --callParent --dataReplacer

注意:您应仅调用一次 ->setConstructorType()

生成常量

如果您想将键值对作为常量生成,请使用 ->setGenerateAsConstants(true) 或通过 CLI --constants