定制 osmianski/super-objects 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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:

  1. 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.
  2. :) 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

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-01-28

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固