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

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

Главный вопрос, почему не оформили в виде composer пакета? Как предлагается этим пользоваться?
Вы можете скачать код этот и внедрить к себе в проект. Как минимум — это ознакомительная часть, может кому понадобиться для реализации своих идей. Можно было оформить в качестве пакета, но позже сделаю это.
Это так не работает. Никто не будет «качать и внедрять». Чтобы пользоваться, нужен composer пакет. Нужны тесты. Это прям минимум.

позже сделаю это.


почти всегда можно читать как «никогда». Сам это проходил)
Откуда скачать-то, даже если желающий найдется? Ссылок на гитхаб не наблюдаю.

Ну и да — прежде чем писать свой велосипед, неплохо бы сделать хотя бы наколеночный обзор существующих решений (неужели в мире никому не нужно было работать с ini на php, учитывая, кхм, то, что php.ini — это INI файл?)

но php же не на php написан

Что имеете ввиду?
var $ini = new Ini('app.ini');
$ini->addSection('hello');
$ini->addSection('Hello'); // опа
$ini->addSection('hello]there'); // поломалось
$ini->addValues('hello', ['an=y'=>'va\nlue;']); // приветик
Вы не соблюдаете синтаксис работы с ini файлами. Написать проверку на ключи можно, а на значения нет смысла. В значение может быть и строка и цифра и символы. Этот момент был оставлен на отмашку пользователя класса.
Если бы я хотел заморачиваться с соблюдением синтаксиса ini-файла, мне не нужен для этого класс. Это Вы не проверяете входные данные, хотя бы элементарно. Вы хотите сделать «удобно», но самую рутину «оставляете на отмашку пользователю класса».

В догонку: в ini-файле могут быть записи без секции.
вроде секция все равно будет [DEFAULT]
Мне кажется, хорошие классы-хэлперы должны под капотом решать максимально возможное количество проблем, включая обработку ошибок и вопросы безопасности. Просто когда такие моменты оставлены на отмашку пользователя, это всё равно, что написать оболочку для mysqli, которая очень удобная в использовании, но под капотом заменяет в SQL-запросах знаки вопроса на значения соответстующих переменных — просто вставляя их как есть в запрос. Типа, моменты с экранированием значение переменных оставлены на отмашку пользователям класса.

Кстати, по поводу репозитория и пакета для композера: если вы сделаете репозиторий, то могут найтись люди, которые напишут тесты и пофиксят проблемы. Если вы сделаете пакет для композера, людям будет проще начать пользоваться этим классом. Это, в свою очередь, может повысить популярность класса и привлечь людей, которые могут фиксить проблемы, писать тесты да и вообще просто сообщать об ошибках.

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


Что, если правильно помню, противоречит PSR-2, к сожалению.
И спецификации PSR-12, которая пришла на смену PSR-2, это тоже противоречит, кстати. И повлиять на спецификацию вы никак не сможете, даже если вы в одиночку написали кода на PHP больше, чем было в тех исходниках, которые они брали на анализ для составления стандартов.

Лучше место ini использовать yaml.

Почему и чем?

Оформить пакет композера не сложно. Я делал это год назад и как то справился. Кажется надо просто в репозитории иметь composer.json где будут прописаны пути к классам.
Как пример https://packagist.org/packages/sbwerewolf/language-specific. И потом в жизни самому так удобней использовать. Ни какого копипаста. Подключил зависимостьти оно само работает. И само обновиться когда что то в исходниках поправишь.
По коду мелкое замечание. Не красиво использовать '\n' красиво это PHP_EOL.
И верное замечание про проверки. Если хочешь что бы таоим кодом пользовались, то сделвй его удобным.
Можно сделать фабрику что бы пользоаатель библиотеки мог подсунуть свою реализацию, но в своей реализации сделать проверки. Кому будет мало сможет твой класс пепеписать и подставить.
В порядке друкжеской критики.
Спасибо что поделился кодом.

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