Download the PHP package iiifx-production/lazy-init without Composer
On this page you can find all versions of the php package iiifx-production/lazy-init. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download iiifx-production/lazy-init
More information about iiifx-production/lazy-init
Files in iiifx-production/lazy-init
Package lazy-init
Short Description LazyInit - lazy initialization helper
License MIT
Homepage https://github.com/iiifx-production/lazy-init
Informations about the package lazy-init
LazyInit
LazyInit - хелпер для быстрого создания методов ленивой(отложенной) инициализации.
Отложенная (ленивая) инициализация (Lazy initialization) - приём в программировании, когда некоторая ресурсоёмкая операция (создание объекта, вычисление значения) выполняется непосредственно перед тем, как будет использован её результат. Таким образом, инициализация выполняется «по требованию», а не заблаговременно.
Классический пример использования:
Аналогичный пример с использованием LazyInit:
Установка
Используя Composer:
Использование
LazyInitTrait содержит метод lazyInit() и свойство $lazyInitData, в котором буферизирует результаты вычислений. Предназначен для использования в объектах в динамическом контексте.
- $container - Closure-контейнер, содержащий в себе вычисления, должен вернуть результат.
- $dependency - Строка, массив зависимостей или null - для сохранения результата вычисления. Если не указывать ключ, то он будет сгенерирован автоматически.
- $params - Дополнительные данные, которые будут переданы в Closure-контейнер при его запуске.
LazyInitStaticTrait содержит метод lazyInitStatic() и свойство $lazyInitStaticData, в котором буферизирует результаты вычислений. Предназначен для использования в статических классах в статическом контексте.
Параметры метода аналогичны.
Методы способны автоматически генерировать ключ для буферизации данных основываясь на точке вызова в коде. Это реализуется с использованием функции debug_backtrace().
Примеры
Простой геттер:
Простой геттер с автоматическим созданием ключа:
Геттеры с зависимостью от входящих значений:
Использование в статических методах:
Использование хелпера за пределами классов:
Использование при создании одиночки(Singleton):
Использование при создании пула одиночек(Multiton):