calderawp/caldera-containers

0.2.0 2018-05-05 22:43 UTC

This package is auto-updated.

Last update: 2024-09-09 13:40:09 UTC


README

Caldera(或您的)开发中一系列有用的容器集合。

安装

composer require calderawp/caldera-containers

需要PHP 5.6+

容器

  • calderawp\CalderaContainers\Container 基础PSR-11兼容容器装饰Pimple。

    • 是抽象的。
    • 转换为数组。 calderawp\CalderaContainers\Interfaces\Arrayable
    • 转换为JSON。 JsonSerializable
  • calderawp\CalderaContainers\ControlledContainer 扩展基础容器但仅允许指定的属性。

    • 是抽象的。
  • calderawp\CalderaContainers\Service\Container 一个基本的容器,具有提供者绑定、延迟加载对象和单例。

用法

calderawp\CalderaContainers\Container

@todo

calderawp\CalderaContainers\ControlledContainer

@todo

calderawp\CalderaContainers\Service\Container

绑定为工厂

添加一个返回相同类的新对象的绑定,使用别名 std

$container = new \calderawp\CalderaContainers\Service\Container();
$container->bind( 'std', function (){
     $obj = new \stdClass();
     $obj->foo = rand();
     return $obj;
});

//$obj1->foo !== $obj2->foo
$obj1 = $container->make('std');
$obj2 = $container->make('std');

绑定单例

添加一个返回相同类的相同对象的绑定,使用别名 std。您必须在绑定之前实例化类。

$container = new \calderawp\CalderaContainers\Service\Container();
$obj = new \stdClass();
$obj->foo = rand();
$container->singleton( 'std', $obj );

//$obj1->foo === $obj2->foo
$obj1 = $container->make('std');
$obj2 = $container->make('std');

绑定延迟加载的单例

添加一个返回相同类的相同对象的绑定,使用别名 std。类实例化1次,但仅在需要时才实例化,如果需要的话。

$container = new \calderawp\CalderaContainers\Service\Container();
$container->singleton( 'std', function (){
     $obj = new \stdClass();
     $obj->foo = rand();
     return $obj;
});

//$obj1->foo === $obj2->foo
$obj1 = $container->make('std');
$obj2 = $container->make('std');

## Stuff.
Copyright 2018 CalderaWP LLC. License: GPL v2 or later.