a-blog cms PHP API Reference

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
bool

extend()

デコレーション(既存実装をラップ)。

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|null

forgetInstance()

既に 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
bool

isParentUnit()

ユニットが親ユニットになれるか

public isParentUnit(string $alias) : bool
Parameters
$alias : string
Return values
bool

make()

get service

public make(string $alias) : mixed
Parameters
$alias : string
Tags
throws
RuntimeException

newInstance()

create instance

public newInstance(mixed $class[, array<string|int, mixed> $arguments = [] ]) : mixed
Parameters
$class : mixed
$arguments : array<string|int, mixed> = []
Tags
inheritDoc

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
string

singleton()

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
object

isDebugMode()

DEBUG_MODE 定数はプロセス内で不変(PHP の define() は再定義不可)のため、 テストからデバッグ/本番の両分岐を切り替えられるようテスト用 seam として protected 化する。 サブクラスで override すれば固定値を返せる。

protected isDebugMode() : bool
Return values
bool

        
On this page

Search results