[Из песочницы] ZExt PHP Framework

Данным постом хочу представить IT-сообществу свой давний проект: PHP фреймворк «ZExt».В результате многолетней работы в различных проектах у меня накопилась библиотека, так сказать, всяческих полезностей, облегчающих повседневный труд программиста. Некоторые компоненты данного фреймворка являються частями корпоративного фреймворка компании viboom.ru в которой я проработал продолжительное время создавая эти компоненты. От руководства компании было полученно согласие на публикацию части исходного кода фреймворка. В последнее время я провёл определённую работу по «причёсыванию» фреймворка и теперь готов его представить сообществу в надежде, что вы найдёте чего либо полезное для себя в компонентах фреймворка.Фреймворк представляеться «как есть» и его автор не несёт ответственности за его использование.Репозиторий на GitHub.

Фреймворк требует PHP версии не ниже 5.4.Для работы компонентов требуется добавить пространство имён «ZExt» в автозагрузку классов (PSR-0) по пути: «my_app_library/ZExt».

Можно воспользоватся собственным автозагрузчиком классов фреймворка:

require 'my_app_library/ZExt/Loader/Autoloader.php';

ZExt\Loader\Autoloader: registerDefaults (); Так же можно добавить фреймворк через Composer:

{ «require»: { «zext/zext»: «dev-master» }, «repositories»: [ { «type»: «git», «url»: «https://github.com/mikemirten/ZExt» } ] } Теперь немного о его компонентах:

Debug Компонент представляющий набор средств для отладки PHP-приложений.Может использоваться в любом приложении вне зависимости от используемых в нём фреймворков и прочих технологий.Использует jQuery подключенный в вашем проекте или, при его отсутствии, подключает сам через GoogleApis.Подключение отладочной панели с параметрами по умолчанию:

$debug = ZExt\Debug\DebugBar: initDefaults (); Вывод информации производится в нужном месте (на пример в скрипте вида (view)) через приведение объекта отладчика к строке: echo $debug; Результатом работы отладчика будет вот такая панель: 5769c6d5791113dbd3d84a6b7dded282.pngПопробуем бросить исключение:

throw new Exception ('Looks like an error occurred…', 100); При этом отладчик, перехватив его, вернёт отладочную информацию в качестве ответа на запрос: 90ede2ba3719d74eb77adf62c517fa7c.pngСлева появился элемент «Exception» с информацией о брошенном исключении.Совершим не фатальные ошибки:

echo $undefinedVar;

trigger_error ('something wrong'); 1c94beab2077750cc71a8cfe328602c5.pngProfiler Компонент отвечает за профилирование различных действий приложения и представляет информацию о времени и результате выполнения этих действий.Сымитируем обращение к некому сервису приложения и добавим профилировщик в панель отладки:

$profiler = new ZExt\Profiler\Profiler ();

$profiler→startRead ('Database read'); sleep (1); // Read from some service $profiler→stopSuccess ();

$profiler→startWrite ('Database write'); sleep (1); // Write to some service $profiler→stopError ();

$profiler→setName ('Database') →setIcon ('db');

$debug→addProfiler ($profiler); Теперь посмотрим результаты: a62577fdbfe054d0b66cd39a395212dd.pngHtml Компонент призван облегчить создание различных HTML-конструкций.Возмём тег с большим количеством атрибутов:

$tag = new ZExt\Html\Tag ('iframe');

$tag→width = 640; $tag→height = 480; $tag→frameborder = 0; $tag→scrolling = 'no'; $tag→src = 'page.php'; $tag→id = 'frame';

echo $tag; Список: $list = new ZExt\Html\ListUnordered ();

$list→id = 'list'; $list→title = 'My list';

$list[] = 'Item 1'; $list[] = 'Item 2'; $list[] = 'Item 3'; $list[] = 'Item 4';

echo $list;

  • Item 1
  • Item 2
  • Item 3
  • Item 4
Планы развития В планах в первую очередь стоят написание документации и дальнейшее покрытие тестами, создание сайта проекта.Изначально фреймворк являлся лишь только библиотекой добавляющей недостающие возможности к некоторым известным фреймворкам с которыми я работал в различных проектах. Дальнейшее развитие планируется именно в этом ключе. Планируется аггрегация с некоторыми фреймворками, в частности с Phalcon.Если сообществу будет интересен представленный проект, я буду продолжать публиковать гайды по работе с компонентами фреймворка и архитектурными решениями в которых фреймворк участвовал.

© Habrahabr.ru