Comments 18
позже сделаю это.
почти всегда можно читать как «никогда». Сам это проходил)
Ну и да — прежде чем писать свой велосипед, неплохо бы сделать хотя бы наколеночный обзор существующих решений (неужели в мире никому не нужно было работать с ini на php, учитывая, кхм, то, что php.ini — это INI файл?)
del
var $ini = new Ini('app.ini');
$ini->addSection('hello');
$ini->addSection('Hello'); // опа
$ini->addSection('hello]there'); // поломалось
$ini->addValues('hello', ['an=y'=>'va\nlue;']); // приветик
В догонку: в ini-файле могут быть записи без секции.
Кстати, по поводу репозитория и пакета для композера: если вы сделаете репозиторий, то могут найтись люди, которые напишут тесты и пофиксят проблемы. Если вы сделаете пакет для композера, людям будет проще начать пользоваться этим классом. Это, в свою очередь, может повысить популярность класса и привлечь людей, которые могут фиксить проблемы, писать тесты да и вообще просто сообщать об ошибках.
Единственное, что мне в вашем коде нравится — это то, что вы открывающие фигурные скобки на той же строке пишете. А сама статья… я вам практически гарантирую, что впечатления от фидбэка у вас будут негативные, потому что формат статьи такой. Она практически из одного кода состоит. Его будут критиковать и тыкать вас в ошибки, причём если вы учтёте все замечания и обновите статью, критиковать вас продолжат, потому что обновление никто читать не будет — достаточно того, что в комментариях цитируется ваш старый, который вы уже поправили, код. Люди будут смотреть на эти старые цитаты и будут критиковать именно их.
Единственное, что мне в вашем коде нравится — это то, что вы открывающие фигурные скобки на той же строке пишете
Что, если правильно помню, противоречит PSR-2, к сожалению.
Лучше место ini использовать yaml.
Оформить пакет композера не сложно. Я делал это год назад и как то справился. Кажется надо просто в репозитории иметь composer.json где будут прописаны пути к классам.
Как пример https://packagist.org/packages/sbwerewolf/language-specific. И потом в жизни самому так удобней использовать. Ни какого копипаста. Подключил зависимостьти оно само работает. И само обновиться когда что то в исходниках поправишь.
По коду мелкое замечание. Не красиво использовать '\n' красиво это PHP_EOL.
И верное замечание про проверки. Если хочешь что бы таоим кодом пользовались, то сделвй его удобным.
Можно сделать фабрику что бы пользоаатель библиотеки мог подсунуть свою реализацию, но в своей реализации сделать проверки. Кому будет мало сможет твой класс пепеписать и подставить.
В порядке друкжеской критики.
Спасибо что поделился кодом.
PHP-класс для работы с INI-файлами