Блог хеллоуворлдщика

Еще один MVC пример для PHP

Начнем, пожалуй, с того, что MVC как такового в PHP нет в виду невозможности реализации. Правда, эта информация может лишь понадобится на собеседовании или общении между разработчиками, чем для реальной жизни. В повседневности для вас будет стоять задача не смешивать бизнес-логику и представление. А каким именно шаблоном вы будете пользоваться не так важно.

Надеюсь, вы уже ознакомились с какой-либо информацией касательно MVC или какой-то информацией для отделения бизнес-логики от представления и т.п. Возможно, прочитали, что все приложения состоят из этих трех частей. Хотя на самом деле это не совсем так. MVC необходим только для взаимодействия с пользовательским интерфейсом (UI), чтобы бизнес-логика не проникала в представление, а представление в бизнес-логику, и больше ни для чего. Помимо шаблона MVC в приложениях, как правило, используется еще множество других шаблонов проектирования, а вся бизнес-логика находится не в модели. Модель лишь транспортирует данные и служит связующим звеном с представлением.

Самое главное, по моему мнению, в изучении парадигм вида MVC, MVP, MVVP/etc и любых других шаблонов.: не пытаться ограничивать себя в реализации. Самого правильного варианта не существует, есть лишь общая модель, идея. А как это называется не особо важно. Не стоит сжимать себя до терминов и определений.

Читать далее

Linux на eMachines 350

Все началось с идеи иметь ноутбук в дорогу, а не брать свой основной, чтобы можно было заезжать в отель и с ноги его закидывать в номер не боясь, что он там поломается или еще чего-то. Да и чтобы уборщицы при всем желании утопить его в воде и ведре не могли этого сделать. В общем, чтобы было не жалко его.

Максимальный бюджет я себе определил "чем дешевле, тем лучше". Плюс, не стояло цели купить рабочий, т.к. во времена тяжелой инфляции в стране люди готовы продавать все под видом нового.

Изначально хотелось найти Samsung N100 или что-то вроде этого, ибо имел уже с ним дело, знал "че па чем". Город у меня не большой, а точнее вообще маленький, что-то дельное в нем найти проблематично, а на Авито вообще единственное объявление было с eMachines 350. Я прикинул, что там может быть рабочим и что не рабочим вообще, посчитал затраты, договорился с продавцом и купил эту "дуру". Купил, я конечно, шлак, а продавец от такого поворота событий на радостях мне даже скидку сделал в 300р "на такси".

Читать далее

Внешний + первичный ключ в Doctrine ORM

Иногда встает необходимость использовать первичный ключ таблицы как связь к другой таблице. От некоторых людей я слышал, что в Doctrine ORM такое сделать невозможно и приходиться иметь обязательно инкрементный первичный ключ. На самом деле, это необязательно и возможность совмещать первичный ключ с внешним у Doctrine ORM имеется из коробки с версии 2.1. Для этого нам нужен атрибут association-key (для XML; или associationKey для YAML).

К сожалению, это не совсем очевидная возможность и люди испытывают трудности с поиском информации по данному вопросу. Поэтому, я решил опубликовать короткую заметку об этом.

Читать далее

Почему хейтят Yii?

Почему хейтят Yii?

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

Давайте вернемся к истокам, а точне на то, как позиционирует себя фреймворк Yii. В первую очередь, это набор инструментов, чтобы реализовать задумку быстро и просто срезая углы, где это возможно. Это очень выгодный фреймворк для заказчика и разработчика, т.к. с одной стороны он экономит средства, а с другой время. Но и здесь есть его потолок: не CRUD (Create, Read, Update, Delete) приложения могут не дать прироста в скорости. Хорошо, что большая же часть веб-приложений как раз построена на CRUD.

У фреймворка есть классные вещи, которые очень ускоряют разработку, это:

  • ListView и GridList;
  • валидаторы;
  • простой ActiveRecord;
  • генераторы моделей, форм, контроллеров и т.п.;
  • глобальный сервис-локатор (Yii::app()/Yii::$app);
  • RBAC из коробки;
  • своя политика разработки;
  • огромное комьюнити;
  • низкий порог вхождения;
  • и многое другое.

И пожалуй, из всего о чем стоит поговорить, это о политике разработки.

Читать далее

Plural или множественное число в JS

Очень полезная и важная функция при разработке какого-либо приложения, это - наличие возможности использовать множественные формы по склонениям в зависимости от какого-либо параметра. Можно использовать i18next, но не всегда это нужно. Выход очень простой: написать хелпер для нужного языка по уже известным формам склонения слова ссылка 1 и ссылка 2.

Читать далее

Переехал на DigitalOcean. Кто хочет $50?

Вчера переехал на DigitalOcean с FastVPS, потому что FastVPS хочет ~$5 за 5Gb пространства, тогда как DigitalOcean за те же деньги дает 20Gb. Выгодно? Выгодно.

И у них есть приятный бонус: если вы воспользуетесь моей реферальной ссылкой, то получите $50! Круто, да? Я, правда, получу $25. =( Знал бы я раньше, то зарегался бы по чье-нибудь ссылке, а не в холостую. Эх... Но хоть вы не упустите возможность!

Реферальная ссылка: https://m.do.co/c/65800f5e0c56

Читать далее

Библиотека для работы с Nested Set в Doctrine ORM

Опубликовал библиотеку, которая помогает работать с Nested Set Tree. Пока что не реализован весь функционал, но можно уже пользоваться тем, что есть. Постепенно буду его добавлять и улучшать.

Ссылка на репозиторий: https://github.com/bupy7/doctrine-nested-set

Читать далее

Многоязычность или мультиязычность в PHP

Многие сталкиваются с такой проблемой, как поиск подходящего решения в решение вопроса с мультиязычностью и переводами в целом. Мало кто знает, но в PHP есть такое расширение Intl, которое из коробки поддерживает различные фичи связанные с переводами, форматированием и прочими плюхами полезными не только для мультиязычных проектов, но и одноязычных тоже. Все это называется - интернационализация. И сегодня я хочу осветить такой вовсе не странный и весьма простой вопрос с переводами. Дак, как же все-таки сделать это просто, быстро и безболезненно? Читайте дальше! =)

Читать далее

Новая версия модуля для работы с часовым поясом

Вышло обновление для zf-time-zone. Теперь модуль также работает и на Zend Expressive! Для тех, кто использовал модуль только для Zend Framework 3 - обратная совместимость сохранена.

Ссылка на расширение: https://github.com/bupy7/zf-time-zone

Читать далее

Пакетные миграции в Yii2

Недавно мне написал человек, который захотел работать с миграциями пакетно, т.е. не запускать каждую миграцию построчно через консоль, а реализовать некую команду, в которой будет весь список нужных миграций и два метода: up и down. Что-ж, ничего сложного в этом нет, достаточно всего лишь...

Читать далее