osmianski/super-objects

一个提供PHP中创建超级对象的基础类库,这些对象具有延迟属性、优雅的依赖注入等功能。

v0.2.0 2023-01-28 13:40 UTC

This package is auto-updated.

Last update: 2024-09-28 17:17:53 UTC


README

介绍

osmianski/super-objects 包提供PHP中创建超级对象的基础类。超级对象与其“传统”对应物有何不同

  1. 它的“延迟”属性只在访问时计算一次。延迟属性(以及其他特性)使依赖注入既快速又优雅。
  2. :) 更多特性即将到来 :)

安装

在项目目录中,运行

composer require osmianski/super-objects

用法

基本语法

例如,在下面的示例中,扩展 SuperObject 类,在类注释中定义一个属性,并定义一个计算它的getter

use Osmianski\SuperObjects\SuperObject;
...
/**
 * @property string $message
 */
class Foo extends SuperObject
{
    protected function get_message(): string {
        return 'Hello, world!';
    }
}

第一次访问属性时,将创建并分配由getter返回的值。在后续的属性访问中,不会执行getter - 返回已存储的值

$foo = new Foo();

// executing the getter
echo $foo->message;

// using the stored value
echo $foo->message;

或者,在构造函数中传递属性值

$foo = new Foo(['message' => 'custom message']);

// prints the custom message
echo $foo->message;

如果你预期将值传递到构造函数中,则抛出 Required 异常

use Osmianski\SuperObjects\Exceptions\Required;
...
/**
 * @property string $message
 */
class Foo extends SuperObject
{
    protected function get_message(): string {
        throw new Required(__METHOD__);
    }
}

许可证

osmianski/super-objects 包是开源软件,许可协议为MIT许可证