ФорумПрограммированиеPHP для идиотов → Fabien's php-cs-fixer

Fabien's php-cs-fixer

  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 31 января 2013 г. 14:42

    Некто Фабьен Потенцыер продавил в массы т.н. рекомендации PSR и написал свой Fixer. Хоть это безумие и не обязательно к исполнению, всё-таки плевать против ветра не хочется. Поэтому возникает вопрос: как конфетку съесть и при этом достоинство не потерять?

    Например: есть у меня автозагрузчик классов, вполне PSR-compliant, но кроме прочего он в каждой папке-неймспейсе ищет файл __init.php и подключает его раньше любого другого из этой папки.
    В __init собраны в кучку необходимые этому неймспейсу мелочи, как то: свои классы исключений. Например:
    /vendors/R2/__init.php

    namespace R2;
    class ParamException extends \Exception {}
    class ConfigException extends \Exception {}
    class DbException extends \Exception {}

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

    Всё работает как швейцарские часы! Пока мы не попытаемся проверить свой Coding Standard с помощью Фабьена. Эта штука находит первый класс в файле __init ( здесь это ParamException ) и переименовывает его буквально в class __init.
    Я в ахуе! Так надругаться над хорошей техникой надо суметь.

    Пока выкручиваюсь с помощью фиктивного класса заглушки с именем __init, но это мерзость какая-то. Кто-нибудь может придумать более элегантный способ?
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 31 января 2013 г. 14:48, спустя 6 минут 27 секунд

    не использовать фиксер?
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 31 января 2013 г. 15:01, спустя 13 минут 11 секунд

    Если бы он был вообще ни на что не годен, эта тема бы не появилась. Я ЗА стандарты. fixer кое-что делает полезное, но вот такой косяк огорчает.
    ιιlllιlllι унц-унц
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 31 января 2013 г. 18:10, спустя 3 часа 8 минут 41 секунду

    Я бы не парился насчёт количество файлов, да ещё бы отдельно неймспейс наворочал R2\Exceptions
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 31 января 2013 г. 18:57, спустя 46 минут 55 секунд

    Ну это да, может быть…
    Ладно, я сегодня уже наступил в говно, так что терять нечего. Я еще от функций отказаться не решаюсь ))) Допустим у меня есть такое:

    namespace R2\View;

    function e($str)
    {
    return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
    }


    потому что мне очень нравится во вьюхе писАть просто e($str)
    для функций нет автолоадера, мы можем или явно фигачить require, а это моветон. или цеплять как я описал - при первом упоминании любого класса области имен R2\View, а т.к. функция только в этом неймспейсе используется, то всё ништяк.
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 31 января 2013 г. 19:20, спустя 22 минуты 42 секунды

    ну ты хуевничаешь там я смотрю! а еще какие то кодинг стандардс! гавнокодинг :D
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 31 января 2013 г. 19:58, спустя 38 минут 35 секунд

    я понял - я говно
    ιιlllιlllι унц-унц
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 31 января 2013 г. 22:55, спустя 2 часа 56 минут 17 секунд


    Я бы не парился насчёт количество файлов, да ещё бы отдельно неймспейс наворочал R2\Exceptions

    +1
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 31 января 2013 г. 23:08, спустя 13 минут 51 секунду

    в сф2 есть возможность паковать потом частоиспользуемые классы в один класс, который автогенерируется по мере надобности
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 1 февраля 2013 г. 7:10, спустя 8 часов 1 минуту 32 секунды

    Абырвалг, как это? в класс, не в файл - ты не оговорился?
    короче давай коротко опиши о чем ты
    ιιlllιlllι унц-унц
  • Flare

    Сообщения: 284 Репутация: N Группа: Кто попало

    Spritz 1 февраля 2013 г. 11:51, спустя 4 часа 41 минуту 3 секунды

    я так понял он о том чтобы запихнуть в один файл все нужные классы, чтобы потом их по отдельности не подключать через автолоад
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 1 февраля 2013 г. 13:00, спустя 1 час 8 минут 59 секунд

    оговорился, в файл конечно). Для ускорения загрузки, как Flare описал
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 1 февраля 2013 г. 13:18, спустя 17 минут 57 секунд

    Мучачос, так это напрямую связано с моей проблемой. fixer считает, что первый попавшийся в файле класс обязан иметь имя как у файла. А если это склеенный файл, то херня получается.

    Адепты Симфони2 не запускают фабьеновский фиксер? Или может быть есть какие-нибудь скрытые ключи?
    ιιlllιlllι унц-унц
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 1 февраля 2013 г. 13:41, спустя 23 минуты 22 секунды

    это связано с твоей проблемой так: разнеси это по разным файлам да и все
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 1 февраля 2013 г. 14:40, спустя 58 минут 19 секунд

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

    Получается либо конфетка, либо контроль стандартов :)
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!