Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Библиотека Bootstrap.php Нужна или нет?


Автор: chak 22.6.2013, 11:15
Идея

Работая над админкой своего проекта (админка делается на 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. Разумеется не должно быть привязано к какому-то конкретному фреймворку

Примеры
Код

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


На примере тяжело увидеть все прелести такого подхода. Как я писал выше главное удобство это кодкомплит в IDE (у меня PHPStorm, но проверю чтобы все работало и в других IDE). Кроме того что кодкомплит по названию методов подсказывает вам какие возможности у вас есть, так еще каждый метод снабжен phpdoc'ом где не только описано его предназначение, но и предназначение каждого атрибута и его тип. Кроме банальных string и bool, есть типы вроде использовано нами выше DropdownMenu, что однозначно вам скажет, что методу кнопки addDropdownMenu() нужно скормить именно объект выпадающего списка.

Проблемы

1. Главная! У меня плохо с английский, поэтому все будет на русском и phpdocs и документация. Конечно же в идеале должно быть еще на английском, но так будет только если кто-то возьмется и переведет, либо может быть жену придется привлечь.

2. Возможно на все запланированное просто не хватит времени, у меня строго ограниченное время на этот проект и если не уложусь придется бросить на неопределенный срок.

Вопросы

Хотелось бы узнать в первую очередь не делаю ли я очередной велосипед? Напишите пожалуйста если вы знаете аналоги.
Нужно ли вам это, будете ли использовать?
И какие пожелания или несогласия с моими подходами у вас есть?

Автор: Sanchezzz 22.6.2013, 13:05
Лучше всего нативный html+js для этих целей, больше гибкости и наглядно, и главное быстрей работает, в местах даже меньше кода)
Если и нужно вывести список пунктов меню то достаточно в слой, сделать вывод  массива через цикл
Цитата

1. Главное! Кодкомплит должен избавить от необходимости каждый раз смотреть в документацию Bootstap.  Как это, будет видно из примеров.

Зато придется смотреть вашу документацию. Icon::TRASH итд мне не запомнить придется смотреть вашу документацию
Какие методы можно использовать, какие параметры передавать можно, на IDE не смотрим.
Прелестей в общем не вижу не все используют большие тяжелые IDE, я вот в np++ использую
Цитата

Нужно ли вам это, будете ли использовать?

Нет, жизни радости это мне не придаст.  У меня уже давным давно в папочке для себя лежит сохраненный сайт bootstrap в качестве документации и с примерами. 

Цитата

И какие пожелания или несогласия с моими подходами у вас есть? 

В DropMenu можно сделать автоматически определять URL сайта и пункта меню и добавлять класс active
Вы главное делайте а желающих использовать или не использовать, найдутся.

Автор: chak 22.6.2013, 15:09
Sanchezzz, Если np++ то коненчо плюсов нет одни минусы. 
Делать сделаю так как самому нужно. Как будет не стыдно людям показать выложу на гитхаб

Автор: SergV 28.6.2013, 08:20
chak, возможно будет правильным выложить на гитхабе сразу, так как если идея кому понравится, возможно к ней присоединятся, и помогут с разработкой.

Я лично сейчас тоже работаю над админкой с bootstrap, правдо на базе yii, и сказать чесно, не отказался бы от такого. Хотя я пока не проверял как работает аналог(тот что по ссылке), и работает ли в NetBeans, так как по привычке пока пользую np++. Надо будет глянуть...

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51c55dc06ccc193c30000002#findElement_E7045_51cd1d0f6ccc19361d0095ff_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)