Fr3nch13/CakePHP Utilities

ComponentRegistry extends ObjectRegistry
in package
implements EventDispatcherInterface uses EventDispatcherTrait

ComponentRegistry is a registry for loaded components

Handles loading, constructing and binding events for component class objects.

Tags
extends

\Cake\Core\ObjectRegistry<\Cake\Controller\Component>

Table of Contents

Interfaces

EventDispatcherInterface
Objects implementing this interface can emit events.

Properties

$_Controller  : Controller|null
The controller that this collection was initialized with.
$_eventClass  : string
Default class name for new event objects.
$_eventManager  : EventManagerInterface|null
Instance of the Cake\Event\EventManager this object is using to dispatch inner events.
$_loaded  : array<string|int, object>
Map of loaded objects.

Methods

__construct()  : mixed
Constructor.
__debugInfo()  : array<string, mixed>
Debug friendly object properties.
__get()  : object|null
Provide public read access to the loaded objects
__isset()  : bool
Provide isset access to _loaded
__set()  : void
Sets an object.
__unset()  : void
Unsets an object.
count()  : int
Returns the number of loaded objects.
dispatchEvent()  : EventInterface
Wrapper for creating and dispatching events.
get()  : object
Get loaded object instance.
getController()  : Controller
Get the controller associated with the collection.
getEventManager()  : EventManagerInterface
Returns the Cake\Event\EventManager manager instance for this object.
getIterator()  : Traversable
Returns an array iterator.
has()  : bool
Check whether a given object is loaded.
load()  : mixed
Loads/constructs an object instance.
loaded()  : array<string|int, string>
Get the list of loaded objects.
normalizeArray()  : array<string, array<string|int, mixed>>
Normalizes an object array, creates an array that makes lazy loading easier
reset()  : $this
Clear loaded instances in the registry.
set()  : $this
Set an object directly into the registry by name.
setController()  : $this
Set the controller associated with the collection.
setEventManager()  : $this
Returns the Cake\Event\EventManagerInterface instance for this object.
unload()  : $this
Remove an object from the registry.
_checkDuplicate()  : void
Check for duplicate object loading.
_create()  : Component
Create the component instance.
_resolveClassName()  : string|null
Resolve a component classname.
_throwMissingClassError()  : void
Throws an exception when a component is missing.

Properties

$_eventClass

Default class name for new event objects.

protected string $_eventClass = \Cake\Event\Event::class

$_loaded

Map of loaded objects.

protected array<string|int, object> $_loaded = []
Tags
psalm-var

array<array-key, TObject>

Methods

__debugInfo()

Debug friendly object properties.

public __debugInfo() : array<string, mixed>
Return values
array<string, mixed>

__get()

Provide public read access to the loaded objects

public __get(string $name) : object|null
Parameters
$name : string

Name of property to read

Tags
psalm-return

TObject|null

Return values
object|null

__isset()

Provide isset access to _loaded

public __isset(string $name) : bool
Parameters
$name : string

Name of object being checked.

Return values
bool

__set()

Sets an object.

public __set(string $name, object $object) : void
Parameters
$name : string

Name of a property to set.

$object : object

Object to set.

Tags
psalm-param

TObject $object

__unset()

Unsets an object.

public __unset(string $name) : void
Parameters
$name : string

Name of a property to unset.

count()

Returns the number of loaded objects.

public count() : int
Return values
int

dispatchEvent()

Wrapper for creating and dispatching events.

public dispatchEvent(string $name[, array<string|int, mixed>|null $data = null ][, object|null $subject = null ]) : EventInterface

Returns a dispatched event.

Parameters
$name : string

Name of the event.

$data : array<string|int, mixed>|null = null

Any value you wish to be transported with this event to it can be read by listeners.

$subject : object|null = null

The object that this event applies to ($this by default).

Return values
EventInterface

get()

Get loaded object instance.

public get(string $name) : object
Parameters
$name : string

Name of object.

Tags
throws
RuntimeException

If not loaded or found.

psalm-return

TObject

Return values
object

Object instance.

getEventManager()

Returns the Cake\Event\EventManager manager instance for this object.

public getEventManager() : EventManagerInterface

You can use this instance to register any new listeners or callbacks to the object events, or create your own events and trigger them at will.

Return values
EventManagerInterface

getIterator()

Returns an array iterator.

public getIterator() : Traversable
Tags
psalm-return

\Traversable<string, TObject>

Return values
Traversable

has()

Check whether a given object is loaded.

public has(string $name) : bool
Parameters
$name : string

The object name to check for.

Return values
bool

True is object is loaded else false.

load()

Loads/constructs an object instance.

public load(string $name[, array<string, mixed> $config = [] ]) : mixed

Will return the instance in the registry if it already exists. If a subclass provides event support, you can use $config['enabled'] = false to exclude constructed objects from being registered for events.

Using as an example. You can alias an object by setting the 'className' key, i.e.,

protected $components = [
  'Email' => [
    'className' => 'App\Controller\Component\AliasedEmailComponent'
  ];
];

All calls to the Email component would use AliasedEmail instead.

Parameters
$name : string

The name/class of the object to load.

$config : array<string, mixed> = []

Additional settings to use when loading the object.

Tags
psalm-return

TObject

throws
Exception

If the class cannot be found.

loaded()

Get the list of loaded objects.

public loaded() : array<string|int, string>
Return values
array<string|int, string>

List of object names.

normalizeArray()

Normalizes an object array, creates an array that makes lazy loading easier

public normalizeArray(array<string|int, mixed> $objects) : array<string, array<string|int, mixed>>
Parameters
$objects : array<string|int, mixed>

Array of child objects to normalize.

Return values
array<string, array<string|int, mixed>>

Array of normalized objects.

reset()

Clear loaded instances in the registry.

public reset() : $this

If the registry subclass has an event manager, the objects will be detached from events as well.

Return values
$this

set()

Set an object directly into the registry by name.

public set(string $name, object $object) : $this

If this collection implements events, the passed object will be attached into the event manager

Parameters
$name : string

The name of the object to set in the registry.

$object : object

instance to store in the registry

Tags
psalm-param

TObject $object

psalm-suppress

MoreSpecificReturnType

Return values
$this

setController()

Set the controller associated with the collection.

public setController(Controller $controller) : $this
Parameters
$controller : Controller

Controller instance.

Return values
$this

setEventManager()

Returns the Cake\Event\EventManagerInterface instance for this object.

public setEventManager(EventManagerInterface $eventManager) : $this

You can use this instance to register any new listeners or callbacks to the object events, or create your own events and trigger them at will.

Parameters
$eventManager : EventManagerInterface

the eventManager to set

Return values
$this

unload()

Remove an object from the registry.

public unload(string $name) : $this

If this registry has an event manager, the object will be detached from any events as well.

Parameters
$name : string

The name of the object to remove from the registry.

Tags
psalm-suppress

MoreSpecificReturnType

Return values
$this

_checkDuplicate()

Check for duplicate object loading.

protected _checkDuplicate(string $name, array<string, mixed> $config) : void

If a duplicate is being loaded and has different configuration, that is bad and an exception will be raised.

An exception is raised, as replacing the object will not update any references other objects may have. Additionally, simply updating the runtime configuration is not a good option as we may be missing important constructor logic dependent on the configuration.

Parameters
$name : string

The name of the alias in the registry.

$config : array<string, mixed>

The config data for the new instance.

Tags
throws
RuntimeException

When a duplicate is found.

_create()

Create the component instance.

protected _create(string $class, string $alias, array<string, mixed> $config) : Component

Part of the template method for Enabled components will be registered with the event manager.

Parameters
$class : string

The classname to create.

$alias : string

The alias of the component.

$config : array<string, mixed>

An array of config to use for the component.

Tags
psalm-suppress

MoreSpecificImplementedParamType

psalm-param

class-string $class

Return values
Component

The constructed component class.

_resolveClassName()

Resolve a component classname.

protected _resolveClassName(string $class) : string|null

Part of the template method for .

Parameters
$class : string

Partial classname to resolve.

Tags
psalm-return

class-string|null

Return values
string|null

Either the correct class name or null.

_throwMissingClassError()

Throws an exception when a component is missing.

protected _throwMissingClassError(string $class, string|null $plugin) : void

Part of the template method for and

Parameters
$class : string

The classname that is missing.

$plugin : string|null

The plugin the component is missing in.

Tags
throws
MissingComponentException

        
On this page

Search results