metarush / getter
Generate a class with getter methods from a yaml or env file
Installs: 130
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/metarush/getter
Requires
- php: >=7.1
- m1/env: ^2.1
- symfony/yaml: ^4.3
Requires (Dev)
- phpunit/phpunit: ^8
README
Generate a class with getter methods from a yaml or env file.
This is useful if you want to access variables in yaml/env files as PHP getter methods.
Install
Install via composer as metarush/getter
Sample usage
The following will generate a class named MyNewClass from contents of foo/sample.yaml using yaml adapter.
The generated class will be saved in foo/ folder.
via CLI
vendor/metarush/getter/bin/generate -a yaml -c MyNewClass -s tests/unit/samples/sample.yaml -l foo/
via PHP script
(new \MetaRush\Getter\Generator) ->setAdapter('yaml') ->setClassName('MyNewClass') ->setSourceFile('foo/sample.yaml') ->setLocation('foo/') ->generate();
Sample yaml content
E.g., located in foo/sample.yaml
stringVar: 'foo'
intVar: 9
floatVar: 2.1
boolVar: true
arrayVar:
- foo
- 1.3
Sample generated class
E.g., located in 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; } }
Supported types
- string
- int
- float
- bool
- array (only available in
yamladapter)
Adapters
- yaml
- env
Advanced usage
Include namespace
Include a namespace, use ->setNamespace('MyNamespace') or via CLI --namespace MyNamespace
Extend class
Extend a class, use ->setExtendedClass('MyBaseClass') or via CLI --extendClass MyBaseClass
Dummify field values
Dummify field values, use the ->setDummifyValues(true) config method or via CLI --dummify
Why dummify?
It's useful for hiding sensitive data such as credentials. Credentials should not be in the source code. The field values of the generated classes with dummy data can later be repopulated (by your custom scripts) on runtime with actual values (see data replacer below). The generated class retains the data types even if the original values have been dummified.
If dummified, the generated field values are as follows:
[
'x', // string
1, // int
1.2, // float
true, // true
[0 => 'x'] // array
];
Data replacer for dummified values
Dynamically change the values of the dummified data on runtime, use ->setConstructorType(\MetaRush\Getter\Config::CONSTRUCTOR_DATA_REPLACER); or via CLI --dataReplacer
You can then call the generated class and inject an array of replacement values on runtime:
// $replacementValues should contain key value pair that matches the dummified data $newClass = new MyNewClass($replacementValues);
Call parent
Call a parent class, use ->setConstructorType(\MetaRush\Getter\Config::CONSTRUCTOR_CALL_PARENT) or via CLI --callParent
Call parent and use data replacer
Call a parent class and also use data replacer, use ->setConstructorType(\MetaRush\Getter\Config::CONSTRUCTOR_BOTH) or via CLI --callParent --dataReplacer
Note: You should only call ->setConstructorType() once
Generate constants
Generate the key/value pairs as constants, use ->setGenerateAsConstants(true) or via CLI --constants.
Generate constants with key as both constant name and value
Use ->setGenerateAsConstants(true) and ->setConstantNameAsValue(true) or via CLI --constants --constantNameAsValue.
Don't generate getter methods
Use ->setNoMethods(true) or via CLI --noMethods. Usually used when you only want to generate constants.