В результате многолетней работы в различных проектах у меня накопилась библиотека, так сказать, всяческих полезностей, облегчающих повседневный труд программиста. Некоторые компоненты данного фреймворка являються частями корпоративного фреймворка компании 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;
Результатом работы отладчика будет вот такая панель:
Попробуем бросить исключение:
throw new Exception('Looks like an error occurred...', 100);
При этом отладчик, перехватив его, вернёт отладочную информацию в качестве ответа на запрос:
Слева появился элемент «Exception» с информацией о брошенном исключении.
Совершим не фатальные ошибки:
echo $undefinedVar; trigger_error('something wrong');
Profiler
Компонент отвечает за профилирование различных действий приложения и представляет информацию о времени и результате выполнения этих действий.
Сымитируем обращение к некому сервису приложения и добавим профилировщик в панель отладки:
$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);
Теперь посмотрим результаты:
Html
Компонент призван облегчить создание различных 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;
<iframe width="640" height="480" frameborder="0" scrolling="no" src="page.php" id="frame"></iframe>
Список:
$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;
<ul id="list" title="My list"> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> <li>Item 4</li> </ul>
Планы развития
В планах в первую очередь стоят написание документации и дальнейшее покрытие тестами, создание сайта проекта.
Изначально фреймворк являлся лишь только библиотекой добавляющей недостающие возможности к некоторым известным фреймворкам с которыми я работал в различных проектах. Дальнейшее развитие планируется именно в этом ключе. Планируется аггрегация с некоторыми фреймворками, в частности с Phalcon.
Если сообществу будет интересен представленный проект, я буду продолжать публиковать гайды по работе с компонентами фреймворка и архитектурными решениями в которых фреймворк участвовал.
ссылка на оригинал статьи http://habrahabr.ru/post/229579/
Добавить комментарий