承接 nick-lai/lazy-object 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

nick-lai/lazy-object

最新稳定版本:1.0.3

Composer 安装命令:

composer require nick-lai/lazy-object

包简介

A lightweight lazy object library for PHP 8.4+ project.

README 文档

README

Lazy Object

PSR-12 Static Analysis Tests Coverage Status PHP Version Require Latest Stable Version Total Downloads

LazyObject

A lightweight lazy object library for PHP 8.4+ project.

Table of Contents

Requirements

LazyObject requires PHP >= 8.4.0.

Installation

composer require nick-lai/lazy-object

Usage

LazyObjectTrait

use NickLai\LazyObject\LazyObjectTrait;

class NormalClass
{
    use LazyObjectTrait;

    public function __construct(
        public string $name,
    ) {
        echo 'Initialized.' . PHP_EOL;
    }
}

// Output: Initialized.
$normalClass = new NormalClass('Tom');
// Output: Hi, Tom!
echo "Hi, {$normalClass->name}!" . PHP_EOL;

$lazyObject = NormalClass::createLazyObject('Jerry');
// Outputs:
// Initialized.
// Hi, Jerry!
echo "Hi, {$lazyObject->name}!" . PHP_EOL;

$lazyObject = NormalClass::createLazyObjectByArgumentsGetter(fn () => [
    'name' => 'Spike',
]);
// Outputs:
// Initialized.
// Hi, Spike!
echo "Hi, {$lazyObject->name}!" . PHP_EOL;

$lazyObject = NormalClass::createLazyObjectByInitializer(fn ($object) => $object->__construct(
    name: 'Tyke',
));
// Outputs:
// Initialized.
// Hi, Tyke!
echo "Hi, {$lazyObject->name}!" . PHP_EOL;

LazyObjectFactory

use NickLai\LazyObject\LazyObjectFactory;

class NormalClass
{
    public function __construct(
        public string $name,
    ) {
        echo 'Initialized.' . PHP_EOL;
    }
}

$factory = LazyObjectFactory::create(NormalClass::class);

$lazyObject = $factory->createLazyObject('Jerry');
// Outputs:
// Initialized.
// Hi, Jerry!
echo "Hi, {$lazyObject->name}!" . PHP_EOL;

$lazyObject = $factory->createLazyObjectByArgumentsGetter(fn () => [
    'name' => 'Spike',
]);
// Outputs:
// Initialized.
// Hi, Spike!
echo "Hi, {$lazyObject->name}!" . PHP_EOL;

$lazyObject = $factory->createLazyObjectByInitializer(fn ($object) => $object->__construct(
    name: 'Tyke',
));
// Outputs:
// Initialized.
// Hi, Tyke!
echo "Hi, {$lazyObject->name}!" . PHP_EOL;

LazyObjectHelper

use NickLai\LazyObject\LazyObjectHelper;

class NormalClass
{
    public function __construct(
        public string $name,
    ) {
        echo 'Initialized.' . PHP_EOL;
    }
}

$lazyObject = LazyObjectHelper::createLazyObject(
    className: NormalClass::class,
    name: 'Jerry',
);
// Outputs:
// Initialized.
// Hi, Jerry!
echo "Hi, {$lazyObject->name}!" . PHP_EOL;

$lazyObject = LazyObjectHelper::createLazyObjectByArgumentsGetter(
    className: NormalClass::class,
    argumentsGetter: fn () => [
        'name' => 'Spike',
    ],
);
// Outputs:
// Initialized.
// Hi, Spike!
echo "Hi, {$lazyObject->name}!" . PHP_EOL;

$lazyObject = LazyObjectHelper::createLazyObjectByInitializer(
    className: NormalClass::class,
    initializer: fn ($object) => $object->__construct(
        name: 'Tyke',
    ),
);
// Outputs:
// Initialized.
// Hi, Tyke!
echo "Hi, {$lazyObject->name}!" . PHP_EOL;

License

LazyObject is released under the MIT License. See the bundled LICENSE file for details.

统计信息

  • 总下载量: 4
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-12-15