Отложенная (ленивая) инициализация (англ. Lazy initialization). Приём в программировании, когда некотораяресурсоёмкая операция (создание объекта, вычисление значения) выполняется непосредственно перед тем, какбудет использован её результат. Таким образом, инициализация выполняется «по требованию», а незаблаговременно. Аналогичная идея находит применение в самых разных областях: например, компиляция «на лету»и логистическая концепция «Точно в срок».
Частный случай ленивой инициализации — создание объекта в момент обращения к нему — является одним изпорождающих шаблонов проектирования. Как правило, он используется в сочетании с такими шаблонами какФабричный метод, Одиночка и Заместитель.
Плюсы
- Инициализация выполняется только в тех случаях, когда она действительно необходима;
- ускоряется начальная инициализация.
Минусы
- Невозможно явным образом задать порядок инициализации объектов;
- возникает задержка при первом обращении к объекту.
1: <?php
2:
3: class LazyURL
4: {
5: protected $_stringUrl;
6: protected $_domain;
7:
8: public function __construct($stringUrl)
9: {
10: $this->_stringUrl = $stringUrl;
11: }
12:
13: public function getDomain()
14: {
15: if (empty($this->_domain)) {
16: $this->_domain = parse_url(
17: $this->_stringUrl,
18: 1
19: );
20: }
21: return $this->_domain;
22: }
23: }
24:
25: $url = new LazyURL('https://google.com');
26: echo $url->getDomain();//google.com