ZExt PHP Framework

в 14:37, , рубрики: php

Данным постом хочу представить IT-сообществу свой давний проект: PHP фреймворк «ZExt».

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

Фреймворк представляеться «как есть» и его автор не несёт ответственности за его использование.
Репозиторий на GitHub.

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

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

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

ZExtLoaderAutoloader::registerDefaults();

Так же можно добавить фреймворк через Composer:

{
	"require": {
		"zext/zext": "dev-master"
	},
	"repositories": [
		{
			"type": "git",
			"url": "https://github.com/mikemirten/ZExt"
		}
	]
}

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

Debug

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

Подключение отладочной панели с параметрами по умолчанию:

$debug = ZExtDebugDebugBar::initDefaults();

Вывод информации производится в нужном месте (на пример в скрипте вида (view)) через приведение объекта отладчика к строке:

echo $debug;

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

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

throw new Exception('Looks like an error occurred...', 100);

При этом отладчик, перехватив его, вернёт отладочную информацию в качестве ответа на запрос:
ZExt PHP Framework
Слева появился элемент «Exception» с информацией о брошенном исключении.

Совершим не фатальные ошибки:

echo $undefinedVar;

trigger_error('something wrong');

ZExt PHP Framework

Profiler

Компонент отвечает за профилирование различных действий приложения и представляет информацию о времени и результате выполнения этих действий.

Сымитируем обращение к некому сервису приложения и добавим профилировщик в панель отладки:

$profiler = new ZExtProfilerProfiler();

$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);

Теперь посмотрим результаты:
ZExt PHP Framework

Html

Компонент призван облегчить создание различных HTML-конструкций.

Возмём тег с большим количеством атрибутов:

$tag = new ZExtHtmlTag('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 ZExtHtmlListUnordered();

$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.

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

Автор: mike66

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js