Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3declare(strict_types=1);
4
5namespace PeServer\Core\DI;
6
7use PeServer\Core\DI\DiItem;
8use PeServer\Core\DI\IDiContainer;
9use PeServer\Core\Text;
10
11/**
12 * 登録可能DIコンテナ。
13 */
14interface IDiRegisterContainer extends IDiContainer
15{
16    #region function
17
18    /**
19     * 登録処理。
20     *
21     * @param class-string|non-empty-string $id
22     * @param DiItem $item
23     */
24    public function add(string $id, DiItem $item): void;
25
26    /**
27     * 登録アイテムの解除。
28     *
29     * @param class-string|non-empty-string $id
30     * @return DiItem|null 解除したアイテム。終了処理は呼び出し側で担保すること。存在しない場合は `null`。
31     */
32    public function remove(string $id): ?DiItem;
33
34    /**
35     * 簡易登録(クラス名指定)。
36     *
37     * 既に登録されている場合に既存アイテムは削除される。
38     *
39     * @param class-string $className
40     * @param DiItem::LIFECYCLE_* $lifecycle
41     */
42    public function registerClass(string $className, int $lifecycle = DiItem::LIFECYCLE_TRANSIENT): void;
43
44    /**
45     * 簡易登録(ID:クラス指定)。
46     *
47     * 既に登録されている場合に既存アイテムは削除される。
48     *
49     * @param class-string|non-empty-string $id
50     * @param class-string $className
51     * @param DiItem::LIFECYCLE_* $lifecycle
52     */
53    public function registerMapping(string $id, string $className, int $lifecycle = DiItem::LIFECYCLE_TRANSIENT): void;
54
55    /**
56     * 簡易登録(値指定)。
57     *
58     * 既に登録されている場合に既存アイテムは削除される。
59     *
60     * @param object|null $value
61     * @param string $id $valueの登録ID。未指定(空)の場合は $value の型名が使用される。
62     */
63    public function registerValue(?object $value, string $id = Text::EMPTY): void;
64
65    #endregion
66}