Pull to refresh
  • by relevance
  • by date
  • by rating

В ожидании Yii2 2.0.4

Website development *Perfect code *Yii *
Sandbox
Как вы наверное догадались, хочу рассказать о Yii2 и о том, что ждет новичков в стартапе, который выбрал данный фреймворк. Ни для кого не секрет, что многие фреймворки используют компоненты symfony, дабы не изобретать новый велосипед. Многие, но не Yii, но при этом Yii многое позаимствовал от symfony и впитал в себя лучшее от Ruby on Rails. На github в issues часто можно увидеть предложение по расширению функционала, перенятого у этих фреймворков. В данной статье хотелось бы описать именно те моменты, в которых разработчики Yii не сходятся во мнении с разработчиками других фреймворков.
Читать дальше →
Total votes 8: ↑5 and ↓3 +2
Views 9.7K
Comments 83

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

Website development *IT systems testing *PHP *Yii *Web services testing *
Sandbox
Задача данной статьи — показать самый производительный путь написания тестов в контексте разработки веб-приложений.
Здесь и дальше под термином тесты будут подразумеваться юнит-тесты.

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

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

Наша цель будет разобраться, каким образом необходимо писать тесты и код для обеспечения максимальной скорости выполнения тестов.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views 21K
Comments 3

Разработка на фреймворке Yii2 на платформе IBM Bluemix

IBM Bluemix corporate blog Website development *
Recovery mode
Tutorial
У меня возникли сложности с размещением php-приложений с использованием фреймворка Yii2 на платформе IBM Bluemix. Уверен, я такой не один, поэтому в этом посте содержится короткая инструкция, как этих сложностей можно избежать.

Что нам потребуется сделать:
  1. создать проект в Bluemix
  2. подключить Git
  3. создать проект Yii2 и изменить структуру файлов
  4. настроить облако
  5. включить приложение, залив код

Создаем приложение в Bluemix


Bluemix по своей структуре предназначен для конечного продукта, таким образом разработкой проекта следует заниматься локально или (как я) на отдельном сервере.

После регистрации на bluemix.net заходим на DASHBOARD и создаем среду для приложения на php в Cloud Foundry. Для этого на стартовой странице нажимаем кнопку Create App.


Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Views 4.4K
Comments 2

Доступ к базе данных Firebird из YII2

PHP *Yii *Firebird/Interbase *
Sandbox
Так получилось, что мне понадобилось переносить интерфейс пользователя из связки Delphi + Firebird в WEB. Дабы не останавливать работу комплекса программ, решено было переносить формы постепенно, а для этого необходимо сохранить работу СУБД Firebird и подключаться к ней из web приложения. При разработке web-приложения я решил использовать фреймворк YII2. На этапе разработки мне не нужен полноценный HTTP сервер, вполне сойдет Denwer или XAMMP, или что-то еще. Я выбрал XAMMP т.к. в Денвере давно не обновляется версия PHP, а руками заниматься его обновлением не хочется, идем по пути наименьшего сопротивления. Изначально ни в XAMMP PHP, ни в YII2 нет возможности работать с СУБД Firebird, но при определенных танцах с бубном сделать это вполне реально. Итак, я буду полагать, что у Вас уже установлены: Windows 7 x64, XAMMP и YII2, Firebird 2.5.

Пути установки пакетов у меня (для себя вводите соответствующие корректировки):

  • Firebird 2.5 версия x64 (тип сервера значения не имеет) в C:\Program Files\Firebird\Firebird_2_5\
  • XAMMP установлен в D:\xampp\
  • YII2 установлен в D:\xampp\htdocs\yii\
  • БД расположена в пути D:\WORK\database\TBOT.GDB

Теперь можно начинать.
Читать дальше →
Total votes 10: ↑7 and ↓3 +4
Views 7.8K
Comments 16

Жадная загрузка в Yii2, для тех кто хочет понять что это такое

Website development *SQL *Yii *
Tutorial
Пост рассказывает для чего необходимо использовать «жадную загрузку», вместо «ленивой загрузки», не претендует на идеал. И вряд ли заинтересует профессионалов, больше подходит для начинающих в изучении YII2.

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

bd - mediarise.ru
Читать дальше →
Total votes 16: ↑8 and ↓8 0
Views 26K
Comments 23

Yii2: Делаем модуль для управления модулями

CMS *Website development *PHP *Yii *
Sandbox
Приветствую всех! На текущем проекте мы используем Yii2 и в процессе разработки понадобилась некая сущность как модуль.

В Yii2 уже реализована модульная система, но есть один минус в том что модуль не позволяет выводить один модуль в другом модуле, а использования виджетов тоже не подходит, т.к. это часть вида и не умеет обрабатывать действия, например входящий POST-запрос (хотя одно время мы использовали виджеты так с некими костылями).
Читать дальше →
Total votes 13: ↑9 and ↓4 +5
Views 13K
Comments 12

Yii2-advanced: Делаем интернационализацию с источником в Redis

Website development *Yii *
Sandbox
В Yii2 есть возможность реализовать три варианта интернационализации:

  1. Файл с массивом, вида: ключ=>перевод (гибко)
    Help Link:

    Создадим конфигурационный файл для сборщика


    Выполним консольную команду
    php ./yii message/config @common/config/i18n.php
    //или с комментариями
    php ./yii message/config-template @common/config/i18n.php
    

    p.s. Для windows окружения php yii….Работа с console должна быть настроена т.е. необходимые компоненты должны быть подключены.

    Должен создаться файл /common/config/i18n.php:
    return [
        'sourcePath' => __DIR__. '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR,
        'languages' => ['pt-PT','ru-RU','uk-UA','en-US'], // языки на которые будут использоваться
        'translator' => 'Yii::t',
        'sort' => false,
        'removeUnused' => false,
        'only' => ['*.php'],// расширения файлов в которых искать категории
        'except' => [//исключить эти источники
            '.svn',
            '.git',
            '.gitignore',
            '.gitkeep',
            '.hgignore',
            '.hgkeep',
            '/messages',
            '/vendor',
        ],
        'format' => 'php',// формат хранения переводов
        'messagePath' => __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'messages',
        'overwrite' => true, 
    ];
    


    Создайте папку common/messages для хранения переводов !
Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Views 9.4K
Comments 2

Yii2-advanced: Гибкая настройка Yii2 RBAC (роли, разрешения, правила)

PHP *Yii *
Tutorial

У админа может и не быть доступа к разрешению пользователя и в пределах одной роли пользователи могут иметь разный доступ к разрешениям


Как организовать сущности Role,Permission,Rule


Роли (role): типовые роли supper_admin,admin,customer (сотрудник, менеджер),user (авторизированный пользователь),guest (не авторизированный пользователь). Роль supper_admin наследует от всех ролей разрешения благодаря этому supper_admin имеет доступ ко всем permission не зависимо от их наличия в конкретной роли но требуется пропуск во всех правилах;

Разрешения (permission): роль является прямым родителем разрешения, без наследования (кроме роли supper_admin).Другими словами, одно и тоже разрешение будет назначаться каждой нужной роли.
Правила (Rule): правила для ролей и для разрешений наследуются от BaseRole в котором присутствует проверка общих правил.

От вас потребуется закодировать админку для ролей , разрешений , разрешений пользователя.
Что там должно быть:
Админка для ролей.
Добавление, удаление, обновление разрешений.

Админка для разрешений.
Добавление, удаление.

Админка разрешения пользователя.
Тут должна быть возможность конкретному пользователю по мимо его разрешений и запрещающих разрешений назначить или снять определенное разрешение или запрещающее разрешение.По поводу запрещающих разрешений будет пояснение дальше.
Читать дальше →
Total votes 14: ↑9 and ↓5 +4
Views 31K
Comments 10

Создание резервной копии большой удалённой БД средствами YII2

PHP *jQuery *Algorithms *Yii *Database Administration *
Sandbox

Недавно мне довелось выполнить один маленький и интересный заказ Его суть заключалась в том, чтобы по нажатию кнопки с удалённого сервера БД скопировать БД (её приблизительный размер составляет почти 800Mb) на тестовый сервер и после выполнить ряд изменений в структурах таблиц.


Казалось бы, что нет ничего проще берём выполняем на удалённом сервере запрос вида:

mysqldump -uLogin -pPassword db_name > db_name.sql

и забрать потом файл, но в моём случае это оказался сервер БД без возможности выкачать оттуда файл, поэтому мне пришлось изловчиться и написать свой механизм экспорта из этой удалённой БД средствами YII2, с которым я был на тот момент не так сильно знаком.

Читать дальше →
Total votes 15: ↑5 and ↓10 -5
Views 3.8K
Comments 9

Велосипед длиной в полжизни

PHP *Yii *

Да, именно так: я начинал писать основу PHP движка в 2001-ом году. 

Тогда всё было проще: каталог inc/, в нём header.php, footer.php, common.php.

Но это было скучно и неинтересно, надо было ещё больше фишек, которые я бы мог предложить заказчикам. Так появился раздел admin/. Но примерно в тоже время  появился PHPNuke, это была бомба! Такой уровень кастомизации! Я понял, что ничего подобного я предложить не смогу, но и по требованиям мой движок был куда как проще, хотя позволял организовать каталог товаров, список статей, галерею. Несколько лет я дальше двигался по основной своей работе: администрирование Linux-серверов. 

Читать далее
Total votes 12: ↑7 and ↓5 +2
Views 7.2K
Comments 32