[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-first-experience-yii":3,"expertises:{\"sort\":\"order\",\"perPage\":100,\"is_main\":1}":18,"blog:{\"perPage\":4}":58},{"id":4,"order":5,"title":6,"slug":7,"publishedAt":8,"shortDescription":9,"previewImageUrl":10,"tags":11,"fullDescription":16,"ogImageUrl":10,"metaTitle":6,"metaDescription":6,"createdAt":17,"updatedAt":17},176,500,"Первый опыт на Yii","first-experience-yii","2014-07-28","Раньше мы, как и многие другие агентства, разрабатывали интернет-проекты, используя самописную CMS. Наверно, все веб-студии прошли через этот мучительный процесс и почти все осознали, что поддерживать и развивать свою собственную CMS сложно, дорого и невыгодно. Так случилось и с нами.",null,[12],{"id":13,"name":14,"slug":15},26,"Процесс","process","Раньше мы, как и многие другие агентства, разрабатывали интернет-проекты, используя самописную CMS. Наверно, все веб-студии прошли через этот мучительный процесс и почти все осознали, что поддерживать и развивать свою собственную CMS сложно, дорого и невыгодно. Так случилось и с нами.\u003C!--more-->\n\nМы решили выбрать одну из существующих платформ и попробовать поработать с ней. На тот момент лучшим вариантом казалась CMS Битрикс. Однако через некоторое время нам стало не хватать заложенного в Битрикс функционала, а разработка собственных уникальных компонентов под каждый проект оказалась невыгодной и трудозатратной. Поэтому нужна была альтернатива, и мы вернулись к поиску.\n\n\u003Cfigure>\u003Cimg src=\"https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Ffiles\u002F70c9478205baded6eb9349ffec5a339a02fb663a.jpg\" alt=\"\" \u002F>\u003C\u002Ffigure>К необходимому нам инструменту мы предъявляли несколько важных требований:\n\u003Cul>\n\t\u003Cli>с помощью него мы должны иметь возможность создавать качественные решения,\u003C\u002Fli>\n\t\u003Cli>он не устареет через 2 года,\u003C\u002Fli>\n\t\u003Cli>с ним сможет работать любой веб-программист.\u003C\u002Fli>\n\u003C\u002Ful>\nСложность заключается в том, что какое-то одно решение не может сочетать в себе все полезные свойства. Мы поняли, что не получится остановиться только на каком-то одном фреймворке или одной CMS, поэтому пока выбрали два варианта: CMS Drupal и Yii Framework. Конечно, это временная остановка. Мы продолжаем следить за развитием продуктов и смотреть, что нам ещё может подойти.\n\nПро Drupal, пожалуй, написано немало, поэтому сегодня речь пойдет об Yii и нашем первом опыте разработки на нем.\n\u003Ch2>Фреймворк или CMS. Отступление\u003C\u002Fh2>\nСтоит, наверное, пояснить, в чем разница между фреймворком и CMS.\n\nЕсли пытаться найти плюсы и минусы при их сравнении, то скоро станет ясно, что это всё равно, что сравнивать тёплое и мягкое. Это разные инструменты и предназначены они для разных задач.\n\nCMS задаёт архитектуру, в рамках которой нужно работать. Если нет какого-то модуля, его необходимо будет реализовать, а написание модуля для CMS — это всегда не самая лёгкая работа. Часто приходится писать не новый функционал, а отключать лишний. Ведь разработчики CMS стараются создавать максимально универсальные модули, снабжают их множеством функций и настроек. Но даже при таком разнообразии всегда чего-то не хватает, а какой-то функционал, наоборот, создаёт проблемы.\n\nС фреймворками дело обстоит совсем иначе. Единственное, что они все предписывают, это использование так называемого MVC-паттерна (model-view-controller). Проще говоря, в них используется схема разделения всего кода на три компоненты: данные (модель), интерфейс (представление), взаимодействие (контроллер), это позволяет при изменении одной компоненты минимально затрагивать остальные. Далее фреймворк уже используется как ящик с инструментами, с помощью которых можно сделать всё, что угодно. Но делать приходится довольно много, особенно, если проект только начался. Ведь по умолчанию нет ни административной панели, ни удобного модуля управления пользователями и их ролями... почти ничего, только ящик с инструментами, позволяющими создать всё это.\n\u003Ch2>Почему Yii?\u003C\u002Fh2>\nКак выбрать определенное решение среди множества подобных? Очевидно, придется определиться с критериями выбора.\n\u003Col>\n\t\u003Cli>Для нас это должен быть современный и динамично развивающийся фреймворк.\u003C\u002Fli>\n\t\u003Cli>Он должен быть популярен, чтобы не было проблем с поиском расширений, модулей и помощи в сети.\u003C\u002Fli>\n\t\u003Cli>Он не должен быть слишком сложным, так как у нас работают не только senior-developers, но есть и постоянный приток junior’ов, которые должны максимально быстро вливаться в рабочий процесс.\u003C\u002Fli>\n\t\u003Cli>Вряд ли кто-то будет спорить, что современный фреймворк должен быть производительным и позволять создавать безопасные проекты. Производитель должен его поддерживать, документация должна быть полная и понятная.\u003C\u002Fli>\n\u003C\u002Fol>\nНами рассматривались Kohana, Zend, Symfony и Yii. При выборе фреймворка были сразу отброшены слабо поддерживаемые и малоизвестные фреймворки.\n\nKohana нам не подошла из-за несовместимости со стандартами кодирования. Фреймворк довольно простой, и в одном из наших проектов используется. Но в Kohana принят синтаксис under_score, а мы оформляем код в соответствии со \u003Ca href=\"http:\u002F\u002Fwww.php-fig.org\u002F\" target=\"_blank\">стандартами PSR\u003C\u002Fa>, то есть camelCase.\n\nZend и Symfony — очень сильные фреймворки, так как предоставляют множество возможностей, но при этом довольно сложны в изучении. Это так называемый enterprise-уровень. Плюс этих фреймворков в том, что можно использовать их отдельные компоненты в своих проектах. Мы, например, использовали некоторые компоненты Zend в наших проектах на CMS Битрикс.\n\nYii подошёл нам лучше всего. У него довольно низкий порог входа, то есть он прост в изучении, у программиста не займёт много времени начать на нём работать. Кроме того, если какого-то функционала не хватает, всегда можно использовать сторонние модули или даже компоненты от Zend и Symfony.\n\u003Ch2>Преимущества и недостатки разработки на Yii\u003C\u002Fh2>\nУ всех решений есть свои минусы.\n\nПервое, с чем мы столкнулись, это необходимость полностью менять подход к разработке. Нельзя просто сделать какую-то часть проекта, реализовать просто отдельно стоящий модуль. Сначала необходимо создать структуру БД, создать административную панель с базовым функционалом и реализовать некоторые другие базовые вещи, которые есть почти в любой CMS по умолчанию. На эти задачи потребуется время.\n\nВо-вторых, несмотря на огромное количество сторонних расширений, активно поддерживаемых и полезных не так много. Приходится очень аккуратно выбирать и всегда убеждаться на практике в том, что это расширение поможет решить задачу, а не добавит новых проблем.\n\nНо у Yii гораздо больше плюсов.\n\nНапример, для Yii написано множество расширений, позволяющих использовать Yii вместе с CSS-фреймворком Bootstrap. Самые крутые — это \u003Ca href=\"http:\u002F\u002Fwww.getyiistrap.com\u002F\" target=\"_blank\">Yiistrap\u003C\u002Fa> и набор дополнительных виджетов \u003Ca href=\"http:\u002F\u002Fyiiwheels.2amigos.us\u002F\" target=\"_blank\">Yii Wheels\u003C\u002Fa>. Если взять шаблон для админки, написанный с использованием Bootstrap, то программисты без помощи дизайнеров и верстальщиков смогут сразу создать отличный интерфейс для управления системой. Все элементы уже созданы, нужно просто брать их и собирать админку, как дом из кирпичиков.\n\nВ итоге мы получили мощный, производительный инструмент, с которым могут работать все программисты. Кстати, по тестам на производительность Yii занимает лидирующую позицию среди наиболее популярных фреймворков. Посмотреть результаты тестов и почитать о том, как они выполнялись можно \u003Ca href=\"http:\u002F\u002Fwww.yiiframework.com\u002Fperformance\u002F\" target=\"_blank\">здесь\u003C\u002Fa>.\n\u003Ch2>Первый опыт\u003C\u002Fh2>\nУ нас есть клиент Кворус (российский поставщик школьной мебели), для которого необходимо было создать удобную \u003Ca href=\"\u002Fportfolio\u002Fkvorus2013\u002F\">онлайн-систему для заказа мебели\u003C\u002Fa>. Казалось бы, всё просто! Делаем интернет-магазин, берём Битрикс, правим шаблоны и всё готово. Но Битрикс тут не подошёл из-за одного маленького нюанса.\n\nВсе товары системы имеют множество зависимых друг от друга свойств, которые можно представить в виде вложенных друг в друга справочников, покупатель буквально создает свою собственную конфигурацию товара, которая в реальности может быть произведена. Например, выбираем стул, от материала обивки зависит набор её цветов, а от цветов обивки в свою очередь зависит цвет металлокаркаса и т.д.\n\nВ итоге система была реализована на основе Yii, решение оказалось простым и удобным.\n\n\u003Cfigure class=\"img-shadow\">\u003Cimg src=\"https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Ffiles\u002Fa87fc24f89859f92fe873c84e6b1e26263c96c34.png\" alt=\"\" \u002F>\u003C\u002Ffigure>Есть проекты, которые нет смысла даже пытаться делать на готовой CMS.\n\nНапример, в одном из наших последних проектов, сайте зрительского клуба Цирковой и театральной компании «Аквамарин», требовалось реализовать несколько эксклюзивных модулей (накопление и операции с баллами, клубными картами, генерация различных сертификатов и поручений), а также выполнить интеграцию сразу с несколькими сторонними системами (билетный сервис компании, сервис email-рассылок, sms-рассылок, база КЛАДР).\n\nВыбор Yii в качестве платформы помог нам написать качественный код и избавил от необходимости долго и нудно «допиливать напильником» уже готовое, но не подходящее под наши нужды решение.\n\nКстати Yii подходит не только для нестандартных проектов.\n\nДопустим, необходимо создать лэндинг. Как правило, лэндинг состоит только из HTML и Javascript. Но иногда нужно вставить туда форму с последующей обработкой на сервере. Реализация форм на Yii настолько проста, что даже при решении таких элементарных задач видна ощутимая польза от использования этого фреймворка.\n\u003Ch2>Заключение\u003C\u002Fh2>\nКонечно, мы не отказываемся от использования и поддержки других платформ. Есть проекты, которые просто обязаны быть написаны на CMS. Например, типовой интернет-магазин с 1С-интеграцией проще сделать на CMS Битрикс, а блог — на Drupal. Но мы чаще всего работаем с нетривиальными и очень амбициозными задачами, связанными с решением конкретных проблем бизнеса наших клиентов и построением новых процессов, нередко требующими уникального и качественного подхода, поэтому Yii для нас стал незаменимым помощником.","2026-05-15 07:37:57",{"currentPage":19,"lastPage":19,"perPage":20,"from":19,"to":21,"total":21,"nextPageUrl":10,"previousPageUrl":10,"items":22},1,20,5,[23,30,37,44,51],{"id":24,"title":25,"shortDescription":26,"imageUrl":27,"url":28,"slug":29},43,"Заказная разработка","\u003Cdiv class=\"service-content\">\r\n\u003Cul>\r\n\u003Cli style=\"font-size: 12pt;\">\u003Cspan style=\"font-size: 12pt;\">• Разработка веб-приложений\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli style=\"font-size: 12pt;\">\u003Cspan style=\"font-size: 12pt;\">• Разработка мобильных приложений\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli style=\"font-size: 12pt;\">\u003Cspan style=\"font-size: 12pt;\">• Разработка продуктов и стартапов (MVP)\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003C\u002Ful>\r\n\u003C\u002Fdiv>","https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Fexpertises\u002F43\u002Fmain\u002F9b536e910e22b0c053432f4058d5594ca6f79874.jpg","\u002Fservices\u002Fcustom-development\u002F","custom-development",{"id":31,"title":32,"shortDescription":33,"imageUrl":34,"url":35,"slug":36},52,"ИИ-разработка","\u003Cp dir=\"ltr\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">Внедрение ИИ в работу компаний и предприятий\u003C\u002Fspan>\u003C\u002Fp>\r\n\u003Cul>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Автоматизация рутинных процессов\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• LLM и RAG-системы (корпоративный GPT, чат-боты)\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• ML (обучаемые модели)\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Компьютерное зрение\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Генеративные интерфейсы\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003C\u002Ful>\r\n\u003Cp>&nbsp;\u003C\u002Fp>","https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Fexpertises\u002F52\u002Fmain\u002Fb245231d8506ae3ea4c77015c36c3b25499952f1.png","\u002Fservices\u002Fai\u002F","ai",{"id":38,"title":39,"shortDescription":40,"imageUrl":41,"url":42,"slug":43},41,"Интеграция и автоматизация","\u003Cdiv class=\"service-content\">\r\n\u003Cp>\u003Cspan style=\"font-size: 12pt;\">Кастомная разработка\u003C\u002Fspan>\u003C\u002Fp>\r\n\u003Cul>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Автоматизированных систем управления\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Личных кабинетов\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Учетных систем\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• CRM\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• ERP\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003C\u002Ful>\r\n\u003Cp>&nbsp;\u003C\u002Fp>\r\n\u003Cp>\u003Cspan style=\"font-size: 12pt;\">Внедрение PIM-систем\u003C\u002Fspan>\u003C\u002Fp>\r\n\u003Cul>\r\n\u003Cli>\u003Cspan style=\"font-size: 12pt;\">• На базе PIMcore\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003C\u002Ful>\r\n\u003Cp dir=\"ltr\" role=\"presentation\">&nbsp;\u003C\u002Fp>\r\n\u003Cp dir=\"ltr\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">Автоматизация бизнеса\u003C\u002Fspan>\u003C\u002Fp>\r\n\u003Cul>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• На базе заказной разработки\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Заказная разработка + точечное внедрение ИИ\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003C\u002Ful>\r\n\u003Cp>&nbsp;\u003C\u002Fp>\r\n\u003C\u002Fdiv>","https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Fexpertises\u002F41\u002Fmain\u002F7f0f8a036ec2c365f2099d796f774c2a0053a63d.png","\u002Fservices\u002Fintegration-automation\u002F","integration-automation",{"id":45,"title":46,"shortDescription":47,"imageUrl":48,"url":49,"slug":50},53,"Аренда выделенных команд","\u003Cul>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Поддержка и развитие веб-сервисов\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Создание веб-сервисов “с нуля”\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003C\u002Ful>\r\n\u003Cp>&nbsp;\u003C\u002Fp>","https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Fexpertises\u002F53\u002Fmain\u002F3c00e6bbc3263141bc54ea51b816e383fcc49506.png","\u002Fservices\u002Fit-outsourcing\u002F","it-outsourcing",{"id":52,"title":53,"shortDescription":54,"imageUrl":55,"url":56,"slug":57},44,"ИТ-консалтинг","\u003Cul>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Аудит и оптимизация инхаус-команд\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• Продуктовый консалтинг\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003Cli dir=\"ltr\" style=\"font-size: 12pt;\" role=\"presentation\">\u003Cspan style=\"font-size: 12pt;\">• HR в сфере диджитал\u003C\u002Fspan>\u003C\u002Fli>\r\n\u003C\u002Ful>\r\n\u003Cp>&nbsp;\u003C\u002Fp>","https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Fexpertises\u002F44\u002Fmain\u002F53c7eb07fb9f9d3b8f2184b6026cd9fcae15a875.png","\u002Fservices\u002Fit-consulting\u002F","it-consulting",{"currentPage":19,"lastPage":59,"perPage":60,"from":19,"to":60,"total":61,"nextPageUrl":62,"previousPageUrl":10,"items":63},32,4,128,"https:\u002F\u002Fapi.internet-design.ru\u002Fapi\u002Fblog?perPage=4&page=2",[64,72,80,88],{"id":65,"order":19,"title":66,"slug":67,"publishedAt":68,"shortDescription":69,"previewImageUrl":70,"tags":71},258,"Вайбкодинг против заказной разработки: возможности, риски, последствия","vibecoding-vs-custom-dev","2026-06-25","\u003Cp>Когда можно использовать вайбкодинг, а для каких задач лучше подойдет заказная разработка или гибрид\u003C\u002Fp>","https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Fblogs\u002F258\u002Fpreview\u002F62bf907de9541bfd6576c7e2230783fb8ceda6e6.jpg",[],{"id":73,"order":19,"title":74,"slug":75,"publishedAt":76,"shortDescription":77,"previewImageUrl":78,"tags":79},256,"IT в кризис: резать нельзя использовать","it-crisis-optimization","2026-06-18","\u003Cp>Как и почему IT-департамент имеет все шансы стать тем самым антикризисным инструментом, который поможет компании сохранять позиции в трудное время\u003C\u002Fp>","https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Fblogs\u002F256\u002Fpreview\u002Fc9f8081fbffc4993193f6514223abc7da4289417.jpg",[],{"id":81,"order":19,"title":82,"slug":83,"publishedAt":84,"shortDescription":85,"previewImageUrl":86,"tags":87},250,"ИИ в рекрутинге: почему HR'ы остаются риском для системы","hr-ai-recruiter-risks","2026-06-11","\u003Cp>Где HR-команды чаще всего ошибаются при работе с корпоративным ИИ, почему из-за этого даже сильное решение начинает работать против компании и как выстроить процесс так, чтобы ИИ усиливал рекрутера\u003C\u002Fp>","https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Fblogs\u002F250\u002Fpreview\u002F6d0df821c17246e568682f625a2bf0bec711e543.jpg",[],{"id":89,"order":19,"title":90,"slug":91,"publishedAt":92,"shortDescription":93,"previewImageUrl":94,"tags":95},247,"Штрафы за авторизацию через Google и Apple ID: кому грозят и что делать","google-apple-auth-fines","2026-06-10","\u003Ch2>&nbsp;\u003C\u002Fh2>","https:\u002F\u002Fa2a7be71-be8a-4951-a3b2-e244e2e9ee45.selstorage.ru\u002Fblogs\u002F247\u002Fpreview\u002Feb4d7ec37a740ed468a633cbdcd24c4cc27e2ad7.png",[]]