承接 edykim/laravel-container-helper 相关项目开发

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

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

edykim/laravel-container-helper

最新稳定版本:v0.0.2

Composer 安装命令:

composer require edykim/laravel-container-helper

包简介

A simple helper for Laravel service container

README 文档

README

Latest Stable Version License PHP Version Require

This package provides a simple helper for Laravel Container. It allows you to generate an inline utility class that implements a given interface, making your application's logic more configurable.

Getting Started

Installation

$ composer require edykim/laravel-container-helper

Lazy

This function offers a lazy-loaded proxy instance of a given concrete implementation for lazy instantiation.

use function Edykim\LaravelContainerHelper\Support\instance;

// ...
$app->bind(
  CalculatorInterface::class,
  instance(CalculatorInterface::class)
    ->lazy(HeavilyLoadedCalculator::class)
);

Sequence

use function Edykim\LaravelContainerHelper\Support\instance;

// ...
$app->bind(
  CalculatorInterface::class,
  instance(CalculatorInterface::class)
    ->sequence(
      SimpleProductCalculator::class,
      DigitalProductCalculator::class,
      ShippingChargeCalculator::class,
    )
);

Conditional

class HasDigitalProducts {
  public function check(Cart $cart): bool {
    // ...
  }
}
use function Edykim\LaravelContainerHelper\Support\instance;

// ...
$app->bind(
  CalculatorInterface::class,
  instance(CalculatorInterface::class)
    ->when(
      HasDigitalProduct::class,
      DigitalProductCalculator::class,
      SimpleProductCalculator::class,
    )
);

Nested

use function Edykim\LaravelContainerHelper\Support\instance;
use Edykim\LaravelContainerHelper\Support\Instance;

// ...
$app->bind(
  CalculatorInterface::class,
  instance(CalculatorInterface::class)
    ->with(fn (Instance $instance) => 
      $instance->sequence(
        $instance->lazy(
          $instance->when(
            HasCouponWithThirdPartyCompany::class,
            ThirdPartyCouponCalculator::class,
            NothingCalculator::class,
          ),
        ),
        SimpleProductCalculator::class,
        DigitalProductCalculator::class,
        $instance->when(
          [IsPlusLevelCustomer::class, 'validate'],
          PlusLevelCustomerDiscountCalculator::class,
          $instance->when(
            [IsMedicalProvider::class, 'validate'],
            MedicalProviderDiscountCalculator::class,
            NothingCalculator::class,
          ),
        ),
      ),
    );
);

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-07-23