Класс ObjectRegistry
Выступает в роли реестра/фабрики для объектов.
Предоставляет функциональность реестра и фабрики для типов объектов. Используется в качестве суперкласса для различных функций повторного использования на основе композиции в CakePHP.
Каждый подкласс должен реализовать различные абстрактные методы для завершения метода шаблона load().
ObjectRegistry поддерживает EventManager, но каждый расширяющий класс должен использовать \Cake\Event\EventDispatcherTrait для добавления и отсоединения при установке и связывании
Прямые подклассы
- Cake\Cache\CacheRegistry
- Cake\Console\HelperRegistry
- Cake\Console\TaskRegistry
- Cake\Controller\ComponentRegistry
- Cake\Datasource\ConnectionRegistry
- Cake\Log\LogEngineRegistry
- Cake\ORM\BehaviorRegistry
- Cake\View\HelperRegistry
Пространство имён: Cake\Core
См.:
Cake\Controller\ComponentRegistryСм.:
Cake\View\HelperRegistryСм.:
Cake\Console\TaskRegistryРасположение: Core/ObjectRegistry.php
Краткое описание свойств
-
$_loadedprotectedКарта загруженных объектов.array
Краткое описание методов
- __debugInfo() publicОтладочная информация об объекте.
- __get() publicПредоставляет доступ для чтения к загруженным объектам
- __isset() publicПредоставляет доступ isset к _loaded
- _checkDuplicate() protectedПроверка на дублирование загрузки объектов.
- Создание экземпляра заданного класса.
- Должен разрешать имя класса для заданного типа объекта.
- Выбрасывает исключение, когда запрошенное имя объекта отсутствует.
- get() publicПолучить экземпляр загруженного объекта.
- has() publicПроверить, загружен ли заданный объект.
- load() publicЗагрузка/создание экземпляра объекта.
- loaded() publicПолучить список загруженных объектов.
- normalizeArray() public
Нормализует массив объектов, создаёт массив, который упрощает ленивую загрузку
- reset() publicОчистить загруженные экземпляры в реестре.
- set() publicУстановить объект напрямую в реестре по имени.
- unload() publicУдалить объект из реестра.
Подробное описание методов
__get()source public
__get( string $name )
Предоставляет доступ для чтения к загруженным объектам
Параметры
- string
$name - Имя свойства для чтения
Возвращает
mixed__isset()source public
__isset( string $name )
Предоставляет доступ isset к _loaded
Параметры
- string
$name - Имя проверяемого объекта.
Возвращает
boolean_checkDuplicate()source protected
_checkDuplicate( string $name , array $config )
Проверка на дублирование загрузки объектов.
Если загружается дубликат с другим конфигурацией, это плохо и будет выброшено исключение.
Выбрасывается исключение, так как замена объекта не обновит ссылки, которые другие объекты могут иметь. Кроме того, простое обновление конфигурации во время выполнения не является хорошим вариантом, так как мы можем пропустить важную логику конструктора, зависящую от конфигурации.
Параметры
- string
$name - Имя псевдонима в реестре.
- array
$config - Данные конфигурации для нового экземпляра.
Исключения
RuntimeExceptionПри обнаружении дубликата.
_create()source abstract protected
_create( string $class , string $alias , array $config )
Создание экземпляра заданного класса.
Этот метод должен создавать и выполнять любую другую необходимую логику инициализации.
Параметры
- string
$class - Класс для создания.
- string
$alias - Псевдоним объекта.
- array
$config - Параметры конфигурации для создания
Возвращает
mixed_resolveClassName()source abstract protected
_resolveClassName( string $class )
Должен разрешать имя класса для заданного типа объекта.
Параметры
- string
$class - Класс для разрешения.
Возвращает
string|falseРазрешенное имя или false при ошибке.
_throwMissingClassError()source abstract protected
_throwMissingClassError( string $class , string $plugin )
Выбрасывает исключение, когда запрошенное имя объекта отсутствует.
Параметры
- string
$class - Отсутствующий класс.
- string
$plugin - Плагин, в котором отсутствует класс $class.
Исключения
Exceptionget()source public
get( string $name )
Получить экземпляр загруженного объекта.
Параметры
- string
$name - Имя объекта.
Возвращает
object|nullЭкземпляр объекта, если он загружен, иначе null.
has()source public
has( string $name )
Проверить, загружен ли заданный объект.
Параметры
- string
$name - Имя объекта для проверки.
Возвращает
booleantrue, если объект загружен, иначе false.
load()source public
load( string $objectName , array $config [] )
Загрузка/создание экземпляра объекта.
Вернёт экземпляр из реестра, если он уже существует. Если подкласс предоставляет поддержку событий, вы можете использовать $config['enabled'] = false для исключения созданных объектов из регистрации событий.
Пример использования Cake\Controller\Controller::$components. Можно задать псевдоним объекта, установив ключ 'className', например:
public $components = [
'Email' => [
'className' => '\App\Controller\Component\AliasedEmailComponent'
];
]; Все вызовы компонента Email будут использовать AliasedEmail вместо него.
Параметры
- string
$objectName - Имя/класс объекта для загрузки.
- array
$configoptional [] - Дополнительные параметры для использования при загрузке объекта.
Возвращает
mixedloaded()source public
loaded( )
Получить список загруженных объектов.
Возвращает
arrayСписок имён объектов.
normalizeArray()source public
normalizeArray( array $objects )
Нормализует массив объектов, создаёт массив, упрощающий ленивую загрузку
Параметры
- массив
$objects - Массив дочерних объектов для нормализации.
Возвращает
массивМассив нормализованных объектов.
reset()source public
reset( )
Очистить загруженные экземпляры в реестре.
Если подкласс реестра имеет менеджер событий, объекты также будут отделены от событий.
set()source public
set( string $objectName , object $object )
Установить объект непосредственно в реестр по имени.
Если эта коллекция реализует события, переданный объект будет прикреплён к менеджеру событий
Параметры
- строка
$objectName - Имя объекта для установки в реестре.
- объект
$object - экземпляр для хранения в реестре
unload()source public
unload( string $objectName )
Удалить объект из реестра.
Если у этого реестра есть менеджер событий, объект также будет отделён от любых событий.
Параметры
- строка
$objectName - Имя объекта для удаления из реестра.
Подробное описание свойств
© 2005–2017 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.3/class-Cake.Core.ObjectRegistry.html