Средства для отложенной инициализации объектов (Хендлы). Класс lmbHandle

Иногда объекты инициализировать слишком дорого, особенно если может возникнуть ситуация, что выполнение программы никогда до них не дойдет. Для таких случаев в Limb3 есть так называемые хендлы, которые реализованы в виде класса lmbHandle

lmbHandle - используется для отложенной инициализации объектов. lmbHandle наследуется от lmbProxy. По сути хендл - это прокси-объект, которые ведет себя как объект, который он замещает, и который загружает (инициализирует) проксируемый объект при первой реальной необходимости.

Конструктор lmbHandle принимает 2 параметра: путь до файла с классом и массив параметров, которые будут переданы в конструктор проксируемого объекта при его инициализации, когда это станет необходимым.

При использовании lmbHandle рекомендуется соблюдать соглашение, что для каждого класса создается отдельный файл. Так как в Limb3 каждый класс находится в отдельном файле названном по имени класса, то при создании хендла можно указать только путь до файла без расширения .class.php:

$filter = new lmbHandle('src/filter/lmbMyFilter', array($params));

Если у нас нарушается схема 1 класс - 1 файл с суффиксом .class.php, то можно использовать другой вызов, где имя класса указывается третьим параметром:

$filter = new lmbHandle('/src/filter/MyClasses.inc.php', array($params), 'lmbMyFilter');

lmbHandle является полноценным lmbProxy-объектом, поэтому при его использовании совсем не обязательно вызывать метод lmbHandle :: resolve() - это делается автоматически при первом обращении к любому методу или атрибуту lmbProxy-класса.