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; 

Результатом работы отладчика будет вот такая панель:

Попробуем бросить исключение:

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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *