awuxtron / options-object
为PHP实现选项对象模式。
0.0.1-RC1
2022-05-20 16:07 UTC
Requires
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- pestphp/pest: ^1.21
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.6
- phpstan/phpstan-deprecation-rules: ^1.0
- roave/security-advisories: dev-latest
- spaze/phpstan-disallowed-calls: ^2.3
- symfony/var-dumper: ^6.0
- thecodingmachine/phpstan-strict-rules: ^1.0
- voku/phpstan-rules: ^1.6
This package is auto-updated.
Last update: 2024-09-21 02:10:04 UTC
README
为属性提供getter。 (转换) setter, getter,如果对象在另一个对象内部调用,将父对象传递给属性
方法中的选项必须以get开头,并使用点表示法指定选项(可以在构造函数中设置默认选项)属性别名
重命名替换方法。
属性顺序,当获取默认值时将按照顺序转换。
构造函数中的选项是默认值。只读必需
设置不区分大小写
如果没有类型或没有默认值,则进行处理。
用法
use Awuxtron\OptionsObject\Attributes\AsOptionsObject; use Awuxtron\OptionsObject\OptionsObject; #[AsOptionsObject('a', AnotherOptionsObject::class)] class Options extends OptionsObject { public int $require_option; public int $optional_option = 0; public ?int $optional_option_2 = null; public mixed $another; protected function advanced_option(Example|array $value) { return $value instanceof Example ? $value : new Example($value); } protected function nested_option() { return new class extends OptionsObject { // Some options. } } protected function __symlink(): array { return ['a' => ['b', 'default']]; } }
$options = new Options();
echo $options->foo; echo $options->foo->bar; echo $options['foo']; echo $options['foo']['bar'];
$options->foo = 'bar'; $options['foo'] = 'bar'; $options['foo']['bar'] = 'John Doe';
$options->merge($newConfig);