PHP
Разработка веб-сайтов
Комментарии 25
+1
А почему функция называется ident?

Ещё, с гита

> * При вызове с одним параметром устанавливает значение отступа в это значение.
* При вызове с двумя параметрами и вторым параметром true значение изменяется на значение первого параметра

Чем отличается один параметр и два, где второй true? С одним параметром 'устанавливает значение отступа', с двумя — 'значение изменяется на значение первого параметра'
0
А почему функция называется ident?

Моя ошибка. Хотел назвать indent, но написал с пропущенной буквой и потом так все и пошло. В планах изменить это.

С одним параметром изменение относительное. Если второй параметр указать = true, то изменение значения абсолютное.
К примеру отсуп = 5
отступ = 5 ident(1) — отступ 6
отступ = 5 ident(-1) — отступ 4
отступ = 5 ident(1,true) — отступ 1
0
Наверное потому, что оно тянет за собой целый фреймворк?
Да и упомянули его. Буквально в третьей ветке комментов.
+2
Наверное потому, что оно тянет за собой целый фреймворк?


Ну если только фреймворк для работы с терминалом. С другой стороны — а не пофигу ли? Зато надёжно. Автокомплит по командам поддерживается всякими IDE, вроде шторма, подсветка работает даже под виндой (с ограничениями, правда), а из коробки идут куча полезных хелперов, вроде таблиц, прогрессбаров и проч. Да и как бы тот же Composer использует именно Symfony. Ну т.е. не вижу проблем использовать то, что используют и так подавляющее большинство фреймворков и библиотек для работы с консолью.

Да и упомянули его. Буквально в третьей ветке комментов.


Ну я слепой. Увидел что у меня ссылочка эта сиреневая, а навести и увидеть куда именно ведёт адрес — не подумал. Бывает =)
0
Ну т.е. не вижу проблем использовать то, что используют и так подавляющее большинство фреймворков и библиотек для работы с консолью.

Это старый спор про то, что лучше — подключить библиотеку ради 1% её функциональности или писать свой велосипед, зато быстрый и заточенный под задачу ;)
+1

Ой, ну прям ради 1%? Кажется, что для описанной топикастером задачи (для команды деплоя) она будет использоваться почти что полностью.

0
Для деплоя я написал свой велосипед :)
От класса вывода на консоль мне нужен был только вывод на консоль
+3
Ну вот теперь давайте тогда сравним:
1) Код игнорирует все мыслимые стандарты PHP, кроме PSR-4. В 2018ом году (19ый уже на носу) — это не нормально.
2) Комментарии на русском — нормально только для локальных проектов, но не для пакетов.
3) Отсутствие тестов, непродуманная архитектура, отсутствие контрактов на PSR (ну например зачем изобретать велосипед, если можно было просто зафоллбечиться на psr/log для логгирования) и прочее — говорит о том, что в продакшене использовать такое не вариант.

В результате:
1) Показать читателям механизм, с помощью которого выводятся символы на экран не получилось.
2) Показать читателям нормальный код — тоже не получилось.
3) Показать уникальное и интересное решение — тоже не получилось. Даже я сам писал такое лет 5 назад.

Ну т.е. как бы так сказать… Я вообще не представляю зачем вам понадобился «свой велосипед», который проигрывает существующим решениям вообще во всём. И тем более статью писать о нём на хабре, не раскрыв вообще никакой мысли.

Могу лишь только похвалить за труд и рекомендовать не останавливаться и продолжать, результат получился лучше 90% той дичи, что постят на хабре под эгидой «смотрите что я запилил» =)
0
Задача была — написать библиотеку которую можно легко использовать в своих проектах. Мысль статьи — можете ставить и пользоваться. Простое использование позволяет быстро понять что к чему. Я не смог найти что-то подходящие не потому что этого нет, а потому что этих библиотек слишком много. Когда десяток посморишь и все не то, то становится понятно что проще написать свое (заточенное под свою задачу), чем дальше тратить время на поиски, а затем на освоение чужой библиотеки.

У каждого свой уровень, думаю кому-то эта библиотека и статья будут полезны.
0
который проигрывает существующим решениям вообще во всём.

Про такие параметры, как производительность и объем кода, нынешние IT-бюрократы уже просто не вспоминают)
+1
Ну конечно, лишние 10 килобайт кода ради качественного решения — это надо половину серверов гугла скупить.
0
Справедливости ради — там сейчас весь код 10КБ занимает, включая комменты и пробелы.
Но в целом я с вами полностью согласен.
0
> производительность

на фоне того что вы в консоль синхронно пишите? э не.
0
что оно тянет за собой целый фреймворк?

Вы что-то путаете. symfony/console самодостаточный пакет который по умолчанию не тянет ничего дополнительно.


Ну и опять же — простая логика. Если вам нужно текст раскрасить в CLI приложение, кто скорее всего нужно будет и аргументы распарсить, и в целом почему бы и нет.

0

Спорить не буду, с symfony не работал.
С другой стороны, посмотрел сейчас доку на symfony/console
Знаете, я когда вот так, в ознакомительном режиме, смотрю в сторону какой либо новой для меня технологии/библиотеки/фреймворка/etc, то рассматриваю ее в контексте решения какой-нибудь простой задачи. Читая доку я держал в уме такую — "Сделать простой инсталлер: собрать инфу по окружению, распаковать архив, создать конфиг, все действия логировать в консоль".
В процессе беглого изучения я понял, что ни на шаг не приблизился к пониманию, как с помощью этой библиотеки решить мою простую задачу и возможно ли это в принципе.


Скорее всего, потратив некоторое время на курение мануалов и поиск по стековерфлоу решение найдется. Возможно в итоге оно даже будет простым, но… Зачем!? Полученный результат не будет стоить времени, затраченного на изучение этого мета-ЯП. Кроме того, я стану зависим от сторонней библиотеки, со всеми вытекающими.

0
Ну это немного другое. Тянуть огромный компонент, в котором можно создавать полноценные консольные приложения только ради покраски текста — ну такое
+2
В комментарии выше я уже заметил, что симфонёвую консоль и так из коробки используют вообще почти все, начиная с Composer заканчивая Laravel или Drupal, так что не вижу особой разницы притащить популярную библиотеку из десятка классов, вместо менее популярной, более ограниченной, но из пары классов.

По-моему, больше проблем доставляют те компоненты, которые в зависимостях половину пакагиста выкачивают, потому что потом «composer update» превращается в головную боль и растягивается на пол года, пока все зависимости нормально зарезолвятся. И не дай бог одна из них помрёт или кинет какой-нибудь конфликт. А относительно самодостаточный (он там полифилл и пару интерфейсов тянет за собой только) компонент на 300кб — это не страшно.
+1

Как бы это дико не звучало, но далеко не все используют Composer, Drupal или Laravel. Еще не все динозавры, пишущие на голом PHP, вымерли. [/sarcasm]

0
А можно коммент по коду?

— Я бы посоветовать посмотреть на php-cs-fixer и придерживаться какого-то стандарта. Сейчас все в разнобой как-то.

— Не переводите на русский то, что переводить не нужно. Например:
// Типаж для вывода логов
use TraitLog;

Что за типаж?

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