...

суббота, 12 июля 2014 г.

[Из песочницы] 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": "http://ift.tt/1y8aHk0"
}
]
}


Теперь немного о его компонентах:


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.

Если сообществу будет интересен представленный проект, я буду продолжать публиковать гайды по работе с компонентами фреймворка и архитектурными решениями в которых фреймворк участвовал.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий