osmianski/super-objects
最新稳定版本:v0.2.0
Composer 安装命令:
composer require osmianski/super-objects
包简介
A library providing a base class for creating super objects in PHP, the ones with lazy properties, elegant dependency injection, and more.
README 文档
README
Introduction
osmianski/super-objects package provides a base class for creating super objects in PHP. How a super object is different from its "traditional" counterpart:
- Its "lazy" properties are computed only once and only when they are accessed. Lazy properties, among other things, make dependency injection blazing fast and elegant.
- :) more features to come :)
Installation
In the project directory, run:
composer require osmianski/super-objects
Usage
Basic syntax
As in the following example, extend the SuperObject class, define a property in the class comment, and getter that computes it:
use Osmianski\SuperObjects\SuperObject; ... /** * @property string $message */ class Foo extends SuperObject { protected function get_message(): string { return 'Hello, world!'; } }
The first time you access the property, it's created and assigned the value returned by the getter. On subsequent property access, the getter is not executed - the already stored value is returned:
$foo = new Foo(); // executing the getter echo $foo->message; // using the stored value echo $foo->message;
Alternatively, pass property value in the constructor:
$foo = new Foo(['message' => 'custom message']); // prints the custom message echo $foo->message;
If you expect the value to be passed in the constructor, throw the Required exception:
use Osmianski\SuperObjects\Exceptions\Required; ... /** * @property string $message */ class Foo extends SuperObject { protected function get_message(): string { throw new Required(__METHOD__); } }
License
osmianski/super-objects package is open-sourced software licensed under the MIT license.
统计信息
- 总下载量: 12
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-01-28