Registry
extends Container
in package
DI Container
Class Acms\Services\Container
Table of Contents
Properties
- $bootstrap : array<string, array<string|int, callable>>
Methods
- __construct() : mixed
- Container constructor.
- aliasList() : array<string|int, mixed>
- DIコンテナに登録されている一覧を取得
- bind() : void
- register service
- bindMake() : mixed
- create service
- bootstrap() : mixed
- register service bootstrap function
- exists() : bool
- DIコンテナに登録されているか判定
- extend() : void
- デコレーション(既存実装をラップ)。
- findClassByAlias() : class-string|null
- エイリアスからクラスを取得
- forgetInstance() : void
- 既に make 済みの singleton インスタンスをキャッシュから破棄する。
- getOptions() : array<string|int, array{value: string, label: string}>
- ユニット設定用のオプションを取得する
- getSizableTypes() : array<string|int, string>
- ユニットがサイズオプションを持つか
- instance() : object
- 既存のオブジェクトをそのまま singleton として登録する。
- isInplaceSupported() : bool
- ユニットがinplace編集(ダイレクト編集)でサポートされているか
- isParentUnit() : bool
- ユニットが親ユニットになれるか
- make() : mixed
- get service
- newInstance() : mixed
- create instance
- onBindingChanged() : void
- bind 変更(bind / singleton / instance / override / extend / forgetInstance)の通知リスナーを登録する。
- override() : void
- サービス丸ごと差し替え(再 bind の正式 API)。
- resolveLabel() : string
- コンフィグに保存された表示ラベルを解決する。 ラベルが未設定(空文字)の場合、ユニット種別から Model::getUnitLabel() のデフォルト値へフォールバックする。
- singleton() : void
- register service as singleton
- singletonMake() : mixed
- create service as singleton
- createInstance() : object
- インスタンスの生成
- isDebugMode() : bool
- DEBUG_MODE 定数はプロセス内で不変(PHP の define() は再定義不可)のため、 テストからデバッグ/本番の両分岐を切り替えられるようテスト用 seam として protected 化する。 サブクラスで override すれば固定値を返せる。
Properties
$bootstrap
protected
array<string, array<string|int, callable>>
$bootstrap
Methods
__construct()
Container constructor.
public
__construct() : mixed
aliasList()
DIコンテナに登録されている一覧を取得
public
aliasList() : array<string|int, mixed>
Return values
array<string|int, mixed>bind()
register service
public
bind(string $alias, string|callable $class[, array<string|int, mixed> $arguments = [] ]) : void
Laravel の Container::bind() と同様、再登録のたびに解決済みインスタンスのキャッシュ (resolvedInstance)を確実に破棄する。これにより次回の make() は必ず新しい定義から 生成される(Laravel の dropStaleInstances() 相当)。
Parameters
- $alias : string
- $class : string|callable
- $arguments : array<string|int, mixed> = []
bindMake()
create service
public
bindMake(string $alias) : mixed
Parameters
- $alias : string
bootstrap()
register service bootstrap function
public
bootstrap(string $alias, callable $callback) : mixed
Parameters
- $alias : string
- $callback : callable
exists()
DIコンテナに登録されているか判定
public
exists(string $alias) : bool
Parameters
- $alias : string
Return values
boolextend()
デコレーション(既存実装をラップ)。
public
extend(string $alias, callable(object $inner, Container $container): object $decorator, array{owner: string, priority?: int} $options) : void
積み重ね可能。適用順は priority 降順に内側(元実装に近い側)から。同 priority は 登録順(先に登録した方が内側)。
Parameters
- $alias : string
-
対象の登録済みエイリアス
- $decorator : callable(object $inner, Container $container): object
- $options : array{owner: string, priority?: int}
findClassByAlias()
エイリアスからクラスを取得
public
findClassByAlias(string $alias) : class-string|null
Parameters
- $alias : string
Return values
class-string|nullforgetInstance()
既に make 済みの singleton インスタンスをキャッシュから破棄する。
public
forgetInstance(string $alias) : void
テストで singleton() で stub クロージャに上書きした後、次回 make 時に
新しい closure が確実に呼ばれるようにキャッシュをクリアするのに使う。
通常の本番フローでは使わない。
Parameters
- $alias : string
getOptions()
ユニット設定用のオプションを取得する
public
getOptions() : array<string|int, array{value: string, label: string}>
Return values
array<string|int, array{value: string, label: string}>getSizableTypes()
ユニットがサイズオプションを持つか
public
getSizableTypes() : array<string|int, string>
Return values
array<string|int, string>instance()
既存のオブジェクトをそのまま singleton として登録する。
public
instance(string $alias, object $instance) : object
主な用途はテスト時のサービス差し替え。Laravel の Container::instance() 相当で、
内部では singleton() で alias を上書きするだけ。singleton() 自体が再登録のたびに
resolvedInstance キャッシュを破棄するため、次回の make($alias) は登録した
オブジェクトを必ず返す。
Why not extend() / override() の登録を保持する: singleton() を経由するため、
既存の extend() / override() 登録は他の再登録と同様に破棄される
(instance() は「丸ごとこのオブジェクトに差し替える」ためのテスト用ヘルパーであり、
Laravel の instance() も事前の extend() をその後の解決に適用しない点で結果的に同じ)。
使用例:
$stub = new MyServiceStub(); $container->instance('my.service', $stub); $resolved = $container->make('my.service'); // === $stub
Parameters
- $alias : string
-
上書きする DI コンテナエイリアス
- $instance : object
-
登録するオブジェクト
Return values
object —登録したオブジェクトをそのまま返す (流暢な書き方を許容するため)
isInplaceSupported()
ユニットがinplace編集(ダイレクト編集)でサポートされているか
public
isInplaceSupported(string $alias) : bool
Parameters
- $alias : string
Return values
boolisParentUnit()
ユニットが親ユニットになれるか
public
isParentUnit(string $alias) : bool
Parameters
- $alias : string
Return values
boolmake()
get service
public
make(string $alias) : mixed
Parameters
- $alias : string
Tags
newInstance()
create instance
public
newInstance(mixed $class[, array<string|int, mixed> $arguments = [] ]) : mixed
Parameters
- $class : mixed
- $arguments : array<string|int, mixed> = []
Tags
onBindingChanged()
bind 変更(bind / singleton / instance / override / extend / forgetInstance)の通知リスナーを登録する。
public
onBindingChanged(callable(string $alias): void $listener) : void
Facade 基底はこれを使い、コンテナの再 bind と同時に自身が保持する解決済みインスタンス キャッシュ(isCache() が true のファサードの static $instance)を自動破棄する。
Parameters
- $listener : callable(string $alias): void
override()
サービス丸ごと差し替え(再 bind の正式 API)。
public
override(string $alias, string|Closure $class, array{owner: string, priority?: int} $options) : void
override() / extend() は登録済みエイリアスのみ受け付ける。未登録エイリアスへの適用は タイポとみなしエラーとする。同一エイリアスへの override は priority が最大のものが 1 つ だけ勝ち、同 priority が複数登録された場合は競合として扱う。
Parameters
- $alias : string
-
差し替え対象の登録済みエイリアス
- $class : string|Closure
-
差し替え後のクラス名 or ファクトリクロージャ
- $options : array{owner: string, priority?: int}
-
owner は必須(プラグイン名等)
resolveLabel()
コンフィグに保存された表示ラベルを解決する。 ラベルが未設定(空文字)の場合、ユニット種別から Model::getUnitLabel() のデフォルト値へフォールバックする。
public
resolveLabel(string $type, string $label) : string
Parameters
- $type : string
-
ユニット種別(拡張指定子付きの可能性がある。例: text_extend)
- $label : string
-
コンフィグに保存された表示ラベル(未設定時は空文字)
Return values
stringsingleton()
register service as singleton
public
singleton(string $alias, string|callable $class[, array<string|int, mixed> $arguments = [] ]) : void
Laravel の Container::singleton() と同様、再登録のたびに解決済みインスタンスの キャッシュ(resolvedInstance)を確実に破棄する(Laravel の dropStaleInstances() 相当)。
Parameters
- $alias : string
- $class : string|callable
- $arguments : array<string|int, mixed> = []
singletonMake()
create service as singleton
public
singletonMake(string $alias) : mixed
Parameters
- $alias : string
createInstance()
インスタンスの生成
protected
createInstance(string $class[, array<string|int, mixed> $arguments = [] ]) : object
Parameters
- $class : string
- $arguments : array<string|int, mixed> = []
Return values
objectisDebugMode()
DEBUG_MODE 定数はプロセス内で不変(PHP の define() は再定義不可)のため、 テストからデバッグ/本番の両分岐を切り替えられるようテスト用 seam として protected 化する。 サブクラスで override すれば固定値を返せる。
protected
isDebugMode() : bool