awuxtron/options-object

为PHP实现选项对象模式。

0.0.1-RC1 2022-05-20 16:07 UTC

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);