ChAk
Новичок
Идея
Работая над админкой своего проекта (админка делается на Bootstrap) обнаружил, что мне очень не хватает возможности прямо из php формировать содержание элементов Bootstap. Например:
1. Наполнять содержания выпадающих списков меня в зависимости от прав пользователя.
2. Наполнять навигационный бар элементами в зависимости от многих факторов, он у меня используется для профайлинга.
3. Количество и разнообразие кнопок очень велико, поэтому для них хотелось бы иметь так же простой способ создания.
... и множество других вещей, так же хотелось формировать прямо в php коде, а не в шаблоне.
Осознав это я начал создавать фактически отдельную библиотеку, которую условно назвал Bootsrap.php. Когда были созданы кнопка, выпадающее меня, хлебные крошки, pager, появилась идея выложить наработки на гитхаб.
Аналоги
Поиски аналогов навели только на http://www.cniska.net/yii-bootstrap/, но эта библиотека мне не понравилась, во-первых привязка к yii, который я не использую, во-вторых конфигурирование элементов с помощью массива, что я не приемлю и о чем напишу ниже.
Как я вижу должна выглядеть подобная библиотека?
1. Главное! Кодкомплит должен избавить от необходимости каждый раз смотреть в документацию Bootstap. Как это, будет видно из примеров.
2. Для создания элементов должна использовать цепочка вызовов аля jQuery, а не массивы. Это напрямую связано с предыдущим пунктом.
3. Библиотека должна быть максимально просто в использовании, в идеале что бы не нужно было читать документации и смотреть примеров использования, должно быть достаточно базовых знаний, что может Bootstrap. Опять же все благодаря кодкомплиту и phpdocs.
4. Не смотря на перечисленное у библиотеки должна быть и хорошая документация и примеры.
5. Разумеется не должно быть привязано к какому-то конкретному фреймворку
Примеры
На примере тяжело увидеть все прелести такого подхода. Как я писал выше главное удобство это кодкомплит в IDE (у меня PHPStorm, но проверю чтобы все работало и в других IDE). Кроме того что кодкомплит по названию методов подсказывает вам какие возможности у вас есть, так еще каждый метод снабжен phpdoc'ом где не только описано его предназначение, но и предназначение каждого атрибута и его тип. Кроме банальных string и bool, есть типы вроде использовано нами выше DropdownMenu, что однозначно вам скажет, что методу кнопки addDropdownMenu() нужно скормить именно объект выпадающего списка.
Проблемы
1. Главная! У меня плохо с английский, поэтому все будет на русском и phpdocs и документация. Конечно же в идеале должно быть еще на английском, но так будет только если кто-то возьмется и переведет, либо может быть жену придется привлечь.
2. Возможно на все запланированное просто не хватит времени, у меня строго ограниченное время на этот проект и если не уложусь придется бросить на неопределенный срок.
Вопросы
Хотелось бы узнать в первую очередь не делаю ли я очередной велосипед? Напишите пожалуйста если вы знаете аналоги.
Нужно ли вам это, будете ли использовать?
И какие пожелания или несогласия с моими подходами у вас есть?
Работая над админкой своего проекта (админка делается на Bootstrap) обнаружил, что мне очень не хватает возможности прямо из php формировать содержание элементов Bootstap. Например:
1. Наполнять содержания выпадающих списков меня в зависимости от прав пользователя.
2. Наполнять навигационный бар элементами в зависимости от многих факторов, он у меня используется для профайлинга.
3. Количество и разнообразие кнопок очень велико, поэтому для них хотелось бы иметь так же простой способ создания.
... и множество других вещей, так же хотелось формировать прямо в php коде, а не в шаблоне.
Осознав это я начал создавать фактически отдельную библиотеку, которую условно назвал Bootsrap.php. Когда были созданы кнопка, выпадающее меня, хлебные крошки, pager, появилась идея выложить наработки на гитхаб.
Аналоги
Поиски аналогов навели только на http://www.cniska.net/yii-bootstrap/, но эта библиотека мне не понравилась, во-первых привязка к yii, который я не использую, во-вторых конфигурирование элементов с помощью массива, что я не приемлю и о чем напишу ниже.
Как я вижу должна выглядеть подобная библиотека?
1. Главное! Кодкомплит должен избавить от необходимости каждый раз смотреть в документацию Bootstap. Как это, будет видно из примеров.
2. Для создания элементов должна использовать цепочка вызовов аля jQuery, а не массивы. Это напрямую связано с предыдущим пунктом.
3. Библиотека должна быть максимально просто в использовании, в идеале что бы не нужно было читать документации и смотреть примеров использования, должно быть достаточно базовых знаний, что может Bootstrap. Опять же все благодаря кодкомплиту и phpdocs.
4. Не смотря на перечисленное у библиотеки должна быть и хорошая документация и примеры.
5. Разумеется не должно быть привязано к какому-то конкретному фреймворку
Примеры
PHP:
use \BootstrapPhp\Button;
use \BootstrapPhp\Icon;
use \BootstrapPhp\DropdownMenu;
// Простое создание кнопки
$button = new Button('Удалить все', $url);
// Добавляем разные свойства (все не обязатено)
$button
->setIcon(Icon::TRASH)
->setType(Button::TYPE_SUCCESS)
->setTag(Button::TAG_BUTTON)
->makeToggle()
->setLoadingText('Loading ...');
// Добавляем кнопку выпадающий список
$dropdown_menu = new DropdownMenu();
$dropdown_menu
->... // заполняем меню
$button->addDropdownMenu($dropdown_menu);
// Добавление html атрибутов не связанных с Bootstrap, если нужно
$button
->setId('myButton')
->setClass('delete_all')
->addDataAttribute('data_name_1', 'data_value_1')
->addDataAttribute('data_name_n', 'data_value_n');
Проблемы
1. Главная! У меня плохо с английский, поэтому все будет на русском и phpdocs и документация. Конечно же в идеале должно быть еще на английском, но так будет только если кто-то возьмется и переведет, либо может быть жену придется привлечь.
2. Возможно на все запланированное просто не хватит времени, у меня строго ограниченное время на этот проект и если не уложусь придется бросить на неопределенный срок.
Вопросы
Хотелось бы узнать в первую очередь не делаю ли я очередной велосипед? Напишите пожалуйста если вы знаете аналоги.
Нужно ли вам это, будете ли использовать?
И какие пожелания или несогласия с моими подходами у вас есть?