metarush / getter
从 yaml 或 env 文件生成具有 getter 方法的类
Requires
- php: >=7.1
- m1/env: ^2.1
- symfony/yaml: ^4.3
Requires (Dev)
- phpunit/phpunit: ^8
README
从 yaml
或 env
文件生成具有 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
。