Как стать автором
Обновить

Комментарии 26

так как временно я использую нестабильную версию нужной мне зависимости

Форкнуть зависимость, в своем репозитории тегнуть релиз, в composer.json в разделе "repositories" указать свой репозиторий "type": "vcs"

Если бы зависимость была заброшенной — то я бы так и сделал. А так я связался с контрибьютором — он говорит всё доделаем, правда не знаю точно когда. Ну я и решил что смысл эти костыли с форками городить.

А PHP точно ваш основной язык программирования? Потому что так вывернуть логику с ног на голову это еще надо постараться. Особенно передача $this как $self, зачем, куда, почему, попробуй разберись.
Интересно, с Симфони консоль работать будет, у них АПИ достаточно схожи.

Точно. Насчёт this — там не обычные замыкания, контекст this в них теряется, поэтому и добавлен «костыль» в виде self. Да и API библиотеки не очень позволяет писать «линейно». Это раз. Во-вторых, это скорее рабочий прототип, чем окончательная архитектура. Если людям библиотека зайдёт — обязательно придётся рефакторить. Ну а пока что так. В любом случае, буду рад посмотреть на более изящное решение.
Не спорю. Но если посмотреть историю коммитов, видно что это своего рода прототип, сделанный за день. Если «взлетит» — будет рефакториться. По этой же причине и тестов нет. Ну в конце то концов, вы же не думаете что у меня хватает навыков разобраться во внутренней структуре ларавеля, но не хватает ума на зависимости, и избегания лапши?) Вот только за ...$args согласен, редко приходится его использовать, упустил из виду
Вы знаете, посмотрел сегодня на код свежим взглядом — действительно, легко обойтись без $self. Спасибо.

В целом стало конечно лучше, и понятней. Единственное что я сходу заметил это то что функция getItemsGroupClosure скорее всего не используется, buildItem до сих пор вызывает сомнения, использование Fluent interface и в некоторых местах отсутствие phpdoc, особенно так где используются массивы.
А так, в целом, верной дорогой идете )

С getItemsGroupClosure и buildItem согласен — даже поправил уже) А вот по Fluent interface и phpdoc — есть вопросы. Какая проблема в текучести конкретно в данном случае? А phpdoc — так там нигде нет phpdoc, там тайпхинтинги..) А где именно не хватает?)

Нет тайпхинта:
https://github.com/VladReshet/ArtisanUI/blob/master/src/Artisanui.php#L85
https://github.com/VladReshet/ArtisanUI/blob/master/src/Artisanui.php#L102
Нет пхпдок для массива, с информацией о том что в нем находится:
https://github.com/VladReshet/ArtisanUI/blob/master/src/Artisanui.php#L215


Текучий интерфейс можно использовать для билдеров, которые наполняют ДТО, и выдают на выходе уже готовый класс, но не для действий которые должны выполняться друг за другом.
Об этом уже много статей написано, не вижу смысла их повторять.
Ну и я не думаю что тут стоит хранить состояния объекта, в нем самом, и поля типа title можно не использовать, или получать их через DI, а не через config()

Хмм, резонно. Поправлю. Спасибо за халявный код-ревью)

Да без проблемм, всегда рад помочь.

В своё время начал писать что-то похожее, но вовремя наткнулся на баш-автокомплит для компонента symfony/console
Artisan им тоже поддерживается. Так что, когда забываю команду, tab мне в помощь

Название не подскажете?

А ещё это в шторме из коробки идёт без всяких плагинов ;)

Я на серверах шторм не держу

Я правильно понимаю, что для асинхронного ввода-вывода в консоль используется расширение POSIX и на винде работать не будет? Если да, то наверное стоит об этом упомянуть в readme
На винде PHP не держу, надо пробовать.

винда в пролете, так как vladreshet/cli-menu использует ext-posix, который:

Note: This extension is not available on Windows platforms.
Окей, тогда добавлю в readme
А вот за это спасибо, не знал
Не видел этот проект, хотя искал. Были мысли что не мог до этого кто-то уже не дойти. Так оно и получилось.

Но, прошу не называть мой проект копией. Во-первых код абсолютно разный, я не видел тот проект до сегодняшнего дня. А во-вторых, мой проект более функционален, потому как DivineOmega/artisan-menu не поддерживает опциональные параметры.

artisan down
Мой пакет предлагает выбрать опции, ivineOmega/artisan-menu просто выполняет artisan down

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