Все потоки
Поиск
Написать публикацию
Обновить
0

Yii *

Фреймворк, реализующий парадигму MVC

Сначала показывать
Порог рейтинга
Уровень сложности

Как я писал web app angular + material и REST на Yii2 + webserver nginx

Время на прочтение9 мин
Количество просмотров21K
Начну с предыстории самого проекта. Мысль пришла в голову совершенно случайно — мне явно не хватало для работы над своими проектами какой-то дополнительной ответственности. Вот и решил создать портал, где я смог бы стимулировать собственную мотивацию, публично рискуя репутацией и деньгами.

Ну, а теперь перейду к делу. Тема обширная, но я надеюсь, что на выходе у меня получится донести картину целиком и вспомнить все подводные камни, которые всплыли до момента создания проекта. Я буду указывать все первоисточники, которые я использовал, чтобы помочь тем, кто хочет написать своё приложение на angular. Да, собственно, все желающие смогут найти ответы на большинство интересующих их вопросов по данной теме в одном цикле статей.
Читать дальше →

Как через composer удобно подменить системный пакет его альтернативной версией

Время на прочтение2 мин
Количество просмотров8.6K
В любом большом проекте, где используется composer, рано или поздно возникает одна проблема. Во фреймворке, или в каком-то его отдельном пакете исправляют ошибку или добавляют функциональность, а разработчик не спешит принимать pull request. При этом хочется временно использовать обновленный пакет, а потом, когда pull request все-таки примут, вернуться к официальной версии. Ситуация также осложняется тем, что пакет может быть указан в зависимостях других пакетов.
Узнать, как...

Yii2 bad behaviors

Время на прочтение2 мин
Количество просмотров9K
Минимальная версия PHP для Yii2 — 5.4. Минимальная версия PHP для Traits — 5.4. Совпадение? Не думаю!



Yii2 уже давно пора избавиться от этих плохих поведений. И вот почему.
Читать дальше →

Собственный поиск по раздачам rutracker.org – реализация на Yii2

Время на прочтение9 мин
Количество просмотров23K
Навеяно этой публикацией.

Здесь описано, как реализовать поиск по раздачам rutracker.org на собственном хостинге / локалхосте.



Предварительное соглашение:
  • все операции проводятся в unix-подобной среде. Нюансы для windows мне, к сожалению, неизвестны;
  • предполагается наличие у вас базовых знаний Unix shell, Yii2, git
  • лично я вижу довольно мало сценариев использования этого (локального поиска по раздачам) решения;
  • реализация на yii2 advanced template в данном случае избыточна, но я к нему привык;
  • я впервые в жизни вижу spinx, поэтому там в конфиге могут быть странности;
  • в некоторых местах решения довольно спорные (буду благодарен за подсказки «как правильно»).


Читать дальше →

Разработка приложений на Yii2 без опыта — прямой путь в АД

Время на прочтение7 мин
Количество просмотров76K


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

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

Читать дальше →

Анонсированы даты окончания поддержки Yii 1.1

Время на прочтение1 мин
Количество просмотров6.5K
Изначально закончить поддержку Yii 1.1 планировалось 31 декабря 2015. На сайте также была указана пометка «может быть продлена, если нужно». В марте команда Yii провела опрос на эту тему и, так как зима близко, время анонсировать решение.
Читать дальше →

Расти большой: простые советы для создателей новых бизнес-приложений

Время на прочтение6 мин
Количество просмотров8.5K
Когда в голову приходит очередная бизнес-идея, часто даже самое неглубокое погружение в поиск Яндекса или Google не оставляет от неё камня на камне — как известно, всё придумано до нас.

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

Путь нашей команды был непростым и очевидно, он далеко не весь пройден. Сегодня мы хотим поделиться своими рецептами разработки портала, который нацелен на решение проблем и бизнеса, и частных клиентов.
Читать дальше →

Портирование блога из yii1.1.* в yii2

Время на прочтение10 мин
Количество просмотров3.1K
Когда я изучал yii, мне, конечно же, помог в освоении нового фреймворка стандартный учебник по созданию блога. Немного освоившись стал переходить на более современную версию — Yii2, и в этом случае уже не нашел такого замечательного пособия. Разобравшись с основами, подумал, как бы было хорошо для начинающих, или мигрирующих с первой версии yii, существование точно такого же блога, но реализованного с помощью инструмента yii2. Конечно, в сети уже реализовано большое количество блогов на yii2, есть готовые расширения для создания поддержки тегов, комментариев и др. Но от этого вход в yii2 не становиться легче. В связи, с чем задумал реализовать порт блога с yii на yii2 (бета:https://github.com/tilhom/myblog_yii2).
Рабочий пример можно посмотреть здесь

Основные моменты реализации:

По стандартным рецептам, которых уже много в сети, устанавливаем Advanced template в папку доступную из сети. В результате у нас будет каркас готового веб-приложения с frontend и backend частями. Далее, можно по учебнику yii1.1.* создания блога разворачивать приложение подобное блоку первой версии yii.

Создаем таблицы для нашего блока из готовой модели yii 1.1.*(находится здесь: yii/demos/blog/protected/data). Перед тем, как запустить sql, необходимо сделать поправки:
— для упрощения убрать префикс tbl_,
— исключить таблицу tbl_user, так как в шаблоне advanced уже есть из коробки модель User
— сделать соответственные поправки в создании внешних ключей в таблицах post и comments:
Читать дальше →

Программирование с YII2: приступаем к работе

Время на прочтение7 мин
Количество просмотров96K
image
От переводчика.
Жизнь такая штука, как-то я начинал цикл статей по Java Spring и сообщество сообщило, что выбор пал не на самую свежую информацию. Сейчас жизнь забросила меня в хардкорное программирование на С++, а душа все равно нуждается в вебе, поэтому в свободное время решил изучить вместе с вами технологии, которые может скушать любой хостинг и в то же время сложность разрабатываемых приложений и ООП не сильно пострадает от PHP.
Исходный текст статьи на английском вы найдете по адресу http://code.tutsplus.com/tutorials/programming-with-yii2-getting-started--cms-22440
Перевод не претендует на дословность, но о грубых ошибках, если такие имеются – прошу сообщать в комментариях.

Если вы спрашиваете «что такое YII?», прочтите более ранний урок «Введение в фреймворк YII», который описывает преимущества YII, а также затрагивает вопрос новшеств второй версии фреймворка от 12 октября 2014.
Этот урок посвящен установке YII2, настройке вашего окружения, написанию классического приложения «Привет, мир!», настройке удаленного окружения для хостинга и деплоя с GitHub.
Читать дальше →

Производительное юнит-тестирование веб-приложений на примере yii2 и codeception

Время на прочтение13 мин
Количество просмотров22K
Задача данной статьи — показать самый производительный путь написания тестов в контексте разработки веб-приложений.
Здесь и дальше под термином тесты будут подразумеваться юнит-тесты.

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

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

Наша цель будет разобраться, каким образом необходимо писать тесты и код для обеспечения максимальной скорости выполнения тестов.
Читать дальше →

Jii: Полноценное приложение с архитектурой Yii2 в браузере

Время на прочтение4 мин
Количество просмотров19K
Привет всем хабровчанам, любителям Yii и Node.js. Продолжаю серию статей про Jii, на сей раз настала очередь рассказать о том, что Jii можно использовать в браузере.


Представьте, уже сейчас все структуры фреймворка, такие как приложения, компоненты, контроллеры, модули, модели, представления доступны в браузере!
Читать дальше →

Почему я выбрал Yii2

Время на прочтение6 мин
Количество просмотров57K
Перевод некоторых глав из книги Bill Keck. Yii 2 For Beginners.

Предисловие


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

Yii2 поставляется в двух вариантах, basic и advanced, и может показаться неестественно, использовать для начинающих шаблон advanced(продвинутый), но этот шаблон, по иронии судьбы, облегчает работу с приложением, если оно использует модели, которые хранятся в базе данных. Современные веб-приложения нуждаются в этой функциональности и шаблон advanced имеет в своём распоряжении для этого готовые решения.

Другое большое преимущество у шаблона advanced, это то, что приложение делится на frontend(пользовательская часть) и backend(модуль управления), который дает исчерпывающий ответ на постоянно возникающий вопрос: «куда же поместить модуль управления?»
Я бы хотел не только ввести вас в удивительный мир php фреймворка, но и так, же дать вам точку опоры, включающую все, в чем нуждается надежное веб-приложение управляемое базой данных. Хотя advanced шаблон содержит чрезвычайно полезные возможности, в нем, конечно же, отсутствуют важные части, которые мы будем пополнять с помощью этой книги.

Цель — предоставить вам модель шаблона, которую вы сможете использовать для всех ваших будущих проектов.

Возможности


С инсталляцией advanced шаблона вы получите некоторые возможности веб-приложения, включающие в себя:

  • предопределённую схему таблицы пользователей
  • форму входа и регистрации пользователей
  • функциональность восстановления забытого пароля
  • разделённые области пользователей (frontend) и администраторов(backend)
  • автоматическую генерацию кода для моделей, контроллеров и представлений
  • встроенную интеграцию с Twitter Bootstrap и приоритетную верстку для мобильных устройств
  • надежные виджеты и помощники для представления данных

Читать дальше →

Расширение Yii 1.1 oci8Pdo и бинд параметров CLOB/BLOB

Время на прочтение3 мин
Количество просмотров9.4K
В моей компании есть проект, который построен на Yii 1.1 и использует базу данных Oracle 9g. Для работы с базой используется расширение oci8Pdo.

Недавно появилась задача загрузки сканов в базу в поле BLOB. Т.к. автор расширения пишет:
The goal of this PDO class is to simulate 99% of the PDO functions that you use in an application.
то причин сомневаться в реализации данного функционала было мало.

Пробуем загрузить скан:

<?php
    $doc_scan = file_get_contents($file);
    $db = Yii::app()->dbOracle;
    $stmt = $db->createCommand("update scan_document set DOCUM_SCAN=:doc_xml, DOC_SCAN=:doc_scan where DOCUM_ID=:docum_id");
    $stmt->bindParam(':doc_xml', $doc_xml, PDO::PARAM_LOB);
    $stmt->bindParam(':doc_scan', $doc_scan, PDO::PARAM_LOB);
    $stmt->bindValue(':docum_id', $add->DOCUM_ID);
    $stmt->query();
?>

Но не тут-то было: ORA-01465: invalid hex number.
Читать дальше →

Ближайшие события

Jii: конфигурация и масштабирование

Время на прочтение4 мин
Количество просмотров9.2K
Привет всем хабровчанам, любителям Yii и Node.js. Давно небыло статей про Jii, но работа не стояла на месте и мне есть что рассказать!
В этой статье мы рассмотрим способы конфигурирования приложения и запуск приложений как несколько процессов.

Читать дальше →

Набор Yii2 Behavior для хранения деревьев в БД и их совместного использования

Время на прочтение7 мин
Количество просмотров25K

Привет, Хабр!

В одном своём проекте на Yii2 мне захотелось совместить Adjacency List и Nested Sets. Причём так, чтобы в случае отключения поведения Nested Sets, функционал оставался полностью работоспособен. Затем я понял, что Nested Sets мне не нужен, т. к. в базе всё равно приходилось хранить полный путь, поэтому на замену я решил применить Materialized Path. Имеющийся на GitHub Behavior (matperez/yii2-materialized-path) был недостаточно функционален, поэтому пришлось написать свой, а так как я недавно уже писал свои поведения для Adjacency List и Nested Intervals, я решил, почему бы не сделать набор таких поведений с единым API, и возможностью произвольно подключать их к модели одновременно, используя преимущество каждого.

Читать дальше →

Мой взгляд на файлы настроек yii 2

Время на прочтение3 мин
Количество просмотров19K
Решил поделиться отлаженной и удобной для меня схемой подключения файлов настроек (папка /config), которую я использую во всех своих проектах на yii 2 basic.
Читать дальше →

Отлов и обработка исключений в Yii2

Время на прочтение3 мин
Количество просмотров35K
В Yii2 по-умолчанию все Exception обрабатываются, за это отвечает специальный обработчик. Если при обработке запроса возникает нехорошая ситуация (например, пришли некорректные данные от клиента), то можно выбросить исключение. Обработчик сформирует человекообразный ответ.

Интересно, что в таком случае ошибка “Warning: Uncaught exception” в лог ошибок не выводится. Может создаться впечатление, что все исключения перехватываются средствами фреймворка. Но это не так. На наш проект некоторое время назад натравили средство мониторинга (в нашем случае New Relic), которое информацию обо всех выброшенных исключениях отображает в ошибках (именно как “Warning: Uncaught exception”), считает эти исключения необработанными. С этим надо было что-то делать.

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

Yii environment. Наследования и переопределение конфигов

Время на прочтение4 мин
Количество просмотров8.7K
Хочу рассказать вам про интересный опыт, с которым я столкнулся на своей последней работе. Нужна была гибкая система Environment-ов. После некоторого времени экспериментов я таки добился идеального варианта. Перейдем сразу к делу.

В protected я создал environment.php c такими вот 2я классами:
Читать дальше →

Форматирование сообщений для Yii::t()

Время на прочтение16 мин
Количество просмотров29K
В данной статье рассмотрены особенности форматирования сообщений для системы интернационализации фреймворка Yii 2. В основном, это сведения из документации фреймворка и библиотеки ICU, с дополнительными пояснениями и примерами. Большая часть информации подойдет для любого фреймворка, который использует библиотеку ICU для интернационализации сообщений. В примерах подразумевается перевод сообщений с английского на русский ('en-US' => 'ru-RU'). Настройка системы интернационализации в статье не рассматривается.
Читать дальше →

Правильное использование Exception’ов в PHP

Время на прочтение16 мин
Количество просмотров127K
Я рад бы написать что “эта статья предназначена для новичков”, но это не так. Большинство php-разработчиков, имея опыт 3, 5 и даже 7 лет, абсолютно не понимают как правильно использовать эксепшены. Нет, они прекрасно знают о их существовании, о том что их можно создавать, обрабатывать, и т.п., но они не осознают их удобность, логичность, и не воспринимают их как абсолютно нормальный элемент разработки.

В этой статье не будет мануала по эксепшенам — это все отлично описано в документации php. Здесь я я расскажу о преимуществах использования эксепшенов, и о том, где их, собственно говоря, надо использовать. Все примеры будут для Yii, но это не особо важно.
Читать дальше →

Вклад авторов