Yii PHP framework: создаём игровой сайт. Часть 1. Постановка задачи.

Владимир | | PHP, Web разработка, Yii.

yii game site

Прежде всего, поздравляю всех с наступившим Новым Годом!

И этот год хочу начать с нового цикла статей об использовании PHP фреймворка под названием Yii.

В качестве примера я решил сделать игровой сайт, точнее сайт под партнерскую программу GameBoss. Для тех, кто первый раз слышит о GameBoss — это интернет магазин казуальных игр. Он предоставляет информацию об играх в XML формате, т.е. проблем с контентом у нас не будет 😉

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

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

Главная страница сайта

sketch main yii game site

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

sketch yii game site 2

Естественно, будут страницы архивов и жанров, для них эскизы я не рисовал, т.к. они практически полностью совпадают с главной страницей.

И, конечно, будет панель управления.

Рассмотрим требования к ней.

1) Импорт игр. Данные мы получаем от GameBoss в виде XML фида, т.е. нам необходимо их разобрать и сохранить в базе.

2) Редактирование и удаление игр. Возможность создания игр по-идее не нужна, т.к. все необходимые данные мы получим из XML фида. Кроме того, фид содержит ссылки на игры с партнерским id и создавать их вручную не очень удобно.

Со скриншотами ситуация немного сложнее. Фид содержит ссылки, на скриншоты, размещенные на сервере GameBoss, поэтому редактировать и удалять их мы не можем. В принципе, можно было бы добавить возможность закачивать свои собственные скриншоты, но чтобы не усложнять код я пока решил от неё отказаться. К тому же я совсем не уверен, что в реальной жизни кто-то будет этим заниматься. Изменять описания игр – другое дело.

3) Редактирование, удаление и создание жанров. Тут всё просто. В XML фиде партнерки жанры игр указаны в закодированной форме. Поэтому перед импортом необходимо вручную создать все жанры.

4) Редактирование данных администратора. К этим данным относятся: адрес XML фида (включает партнерский id), логин, пароль.

Возможность создания нескольких пользователей, на мой взгляд, смысла не имеет. Т.к. в этом случае может получиться, что часть игр будет импортирована с одним партнерским id, а часть – с другим, со всеми вытекающими отсюда последствиями 🙂
Хотя, если кому-то понадобиться – не проблема. В дистрибутиве Yii есть скрипт, который генерирует код для CRUD операций. Т.е. писать код для создания новых пользователей не нужно, мы просто отключим его.

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

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

Все разделы цикла.

  1. Yii PHP framework: создаём игровой сайт. Часть 1. Постановка задачи.
  2. Yii PHP framework: создаём игровой сайт. Часть 2. База данных и установка фреймворка.
  3. Yii PHP framework: создаём игровой сайт. Часть 3. Аутентификация.
  4. Yii PHP framework: создаём игровой сайт. Часть 4. Работа с жанрами игр.
  5. Yii PHP framework: создаём игровой сайт. Часть 5. Импорт игр.
  6. Yii PHP framework: создаём игровой сайт. Часть 6. Формируем страницы игр и жанров.
  7. Yii PHP framework: создаём игровой сайт. Часть 7. Работа с JavaScript и страницы игр.
  8. Yii PHP framework: создаём игровой сайт. Часть 8. Создаём виджеты.
  9. Yii PHP framework: создаём игровой сайт. Часть 9. Поиск ошибок.
  10. Yii PHP framework: создаём игровой сайт. Часть 10. Панель управления.
  11. Yii PHP framework: создаём игровой сайт. Часть 11. Человекопонятные URL.
  12. Архив с исходниками

Интересно почитать

Дизайн сайтов. Тенденции веб-дизайна

Качественные услуги по восстановлению бухучета, адекватные цены

  • Интересно, продолжай

  • Интересно, продолжай

  • Надеюсь часть 2 будет скоро

  • Надеюсь часть 2 будет скоро

  • be3

    Вова, молодец как всегда +) С нетерпением жду следующих частей.

  • be3

    Вова, молодец как всегда +) С нетерпением жду следующих частей.

  • А вот мне интересно: делали ли вы анализ и если делали, то какую документацию составляли (Vision, SRS и т.д.)? Если составляли, то интересны приемы составления аналитической документации и выявления требований.

    • Нет, документацию я не составлял.
      Дело в том, что у меня стоит задача не создать сайт, а поработать с фреймворком, выяснить насколько им удобно пользоваться.

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

      Например, слайдшоу (lightbox) я добавил потому что yii имеет встроенную поддержку jQuery. Тоже самое касается и выбора партнерки. Мне нужна была готовая база данных минимум с несколькими таблицами, чтобы можно было поработь со всеми типами отношений.

      Ну и, конечно, сыграло роль, что продажа казуальных игр в общем-то прибыльное дело 🙂 Но, если я буду открывать партнерский сайт, то начну с анализа рынка, т.е. с интересов покупателей (ведь в этом случае цель будет не создание сайта, а продажи). И у меня есть подозрение, что результат такого анализа может оказаться самым неожиданным. Может быть окажется выгоднее сделать блог на WP об играх с неявной рекламой (партнерскими ссылками в тексте), чем просто делать очередной каталог игр…. а может быть и нет 😉

      Но, в любом случае у меня уже написана большая часть кода, и в общем-то понятно почему я слышал столько хороших отзывов о yii. Даже без использования кеширования сайт работает довольно быстро (во всяком случае по сравнению с распространенными CMS разница ощутимая).

      P.S. Эскизы нарисованы в основном исходя из данных, которые можно получить из XML фида партнерки.

      P.P.S. Если есть предложения, я буду рад их обсудить. Тема составления документации очень интересная.

      • Спасибо за столь развернутый ответ, не ожидал столько прочитать на свой небольшой вопрос 😉
        Я просто полюбопытствовал, поскольку сам очень интересуюсь анализом.
        Эта тема действительно очень интересная, а вот внятных и понятных руководств нет. Есть пара книг, но они как и вся аналитика иногда вгоняют в сон 🙂

        • Тут вы правы 🙂 Есть очень много хороших книг об основах языков программирования (для начинающих), гораздо меньше об архитектуре софта и еще меньше об управлении разработкой и анализе требований.
          Причем часто в них рассматривают какой-то упрощенный пример, а на практике не понятно как все это использовать 🙂 Может быть потому, что для всех более-менее сложных задач нужен индивидуальный подход?

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

  • А вот мне интересно: делали ли вы анализ и если делали, то какую документацию составляли (Vision, SRS и т.д.)? Если составляли, то интересны приемы составления аналитической документации и выявления требований.

    • Нет, документацию я не составлял.
      Дело в том, что у меня стоит задача не создать сайт, а поработать с фреймворком, выяснить насколько им удобно пользоваться.

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

      Например, слайдшоу (lightbox) я добавил потому что yii имеет встроенную поддержку jQuery. Тоже самое касается и выбора партнерки. Мне нужна была готовая база данных минимум с несколькими таблицами, чтобы можно было поработь со всеми типами отношений.

      Ну и, конечно, сыграло роль, что продажа казуальных игр в общем-то прибыльное дело 🙂 Но, если я буду открывать партнерский сайт, то начну с анализа рынка, т.е. с интересов покупателей (ведь в этом случае цель будет не создание сайта, а продажи). И у меня есть подозрение, что результат такого анализа может оказаться самым неожиданным. Может быть окажется выгоднее сделать блог на WP об играх с неявной рекламой (партнерскими ссылками в тексте), чем просто делать очередной каталог игр…. а может быть и нет 😉

      Но, в любом случае у меня уже написана большая часть кода, и в общем-то понятно почему я слышал столько хороших отзывов о yii. Даже без использования кеширования сайт работает довольно быстро (во всяком случае по сравнению с распространенными CMS разница ощутимая).

      P.S. Эскизы нарисованы в основном исходя из данных, которые можно получить из XML фида партнерки.

      P.P.S. Если есть предложения, я буду рад их обсудить. Тема составления документации очень интересная.

      • Спасибо за столь развернутый ответ, не ожидал столько прочитать на свой небольшой вопрос 😉
        Я просто полюбопытствовал, поскольку сам очень интересуюсь анализом.
        Эта тема действительно очень интересная, а вот внятных и понятных руководств нет. Есть пара книг, но они как и вся аналитика иногда вгоняют в сон 🙂

        • Тут вы правы 🙂 Есть очень много хороших книг об основах языков программирования (для начинающих), гораздо меньше об архитектуре софта и еще меньше об управлении разработкой и анализе требований.
          Причем часто в них рассматривают какой-то упрощенный пример, а на практике не понятно как все это использовать 🙂 Может быть потому, что для всех более-менее сложных задач нужен индивидуальный подход?

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

  • Будем следить!

  • Будем следить!

  • Nulpatrol

    Скорей бы продолжение было. Сам однажды уже пытался изучить даный фреймворк. но что-то не пошло

  • Nulpatrol

    Скорей бы продолжение было. Сам однажды уже пытался изучить даный фреймворк. но что-то не пошло

  • Да про yii уже много чего писали, что он быстрее всех фреймворков и пр. ништяки. Но допустим для его развертывания в инструкции приводятся UNIX команды, если не ошибаюсь =) Будем ставить Linux или под Win-ом это все решаемо?
    В любом случае, автору респект за отличные статьи!

    p.s. кстати, наброски интерфейса, можно, легко рисовать в сервисе iplotz.com, хотя сделанные в фотошопе смотрятся оригинальнее.

    • Нет, ставить линукс не обязательно. Все работает и под Win. Точнее, скрипты, которые генерируют код, написаны на php, поэтому работают на всех платформах.

      За ссылку на iplotz большое спасибо, я люблю экспериментировать с такими сервисами 🙂

      • Я имел ввиду вот это:
        »
        Запускаем yiic в консоли со следующими параметрами:

        % YiiRoot/framework/yiic webapp WebRoot/testdrive
        »
        http://yiiframework.ru/doc/guide/ru/quickstart.first-app

        Видимо чего то я не так делаю:

        C:>v:homeyiiwwwframeworkyiic webapp WebRoottestdrive
        "php.exe" не является внутренней или внешней
        командой, исполняемой программой или пакетным файлом.

        В любом случае надеюсь получить ответ в следующей статье про yii =)

        • Следующую часть я опубликовал 🙂
          Судя по описанию ошибки, вам нужно добавить папку в которой находится php.exe в переменную PATH.

        • haiflive

          У тебя наверное денвер стоит?.
          В твоём случае нужно так:
          v:usrbinphp.exe v:homeyiiwwwframeworkyiic.php webapp v:homeyiiwwwtestdrive

          Или вообще просто скопируй всю от сюда v:homeyiiwwwframeworkcliviewswebapp в нужную тебе папку

        • Xurshid Djurayev

          Спасибо!

  • Да про yii уже много чего писали, что он быстрее всех фреймворков и пр. ништяки. Но допустим для его развертывания в инструкции приводятся UNIX команды, если не ошибаюсь =) Будем ставить Linux или под Win-ом это все решаемо?
    В любом случае, автору респект за отличные статьи!

    p.s. кстати, наброски интерфейса, можно, легко рисовать в сервисе iplotz.com, хотя сделанные в фотошопе смотрятся оригинальнее.

    • Нет, ставить линукс не обязательно. Все работает и под Win. Точнее, скрипты, которые генерируют код, написаны на php, поэтому работают на всех платформах.

      За ссылку на iplotz большое спасибо, я люблю экспериментировать с такими сервисами 🙂

      • Я имел ввиду вот это:
        »
        Запускаем yiic в консоли со следующими параметрами:

        % YiiRoot/framework/yiic webapp WebRoot/testdrive
        »
        http://yiiframework.ru/doc/guide/ru/quickstart.first-app

        Видимо чего то я не так делаю:

        C:\>v:\home\yii\www\framework\yiic webapp WebRoot\testdrive
        "php.exe" не является внутренней или внешней
        командой, исполняемой программой или пакетным файлом.

        В любом случае надеюсь получить ответ в следующей статье про yii =)

        • Следующую часть я опубликовал 🙂
          Судя по описанию ошибки, вам нужно добавить папку в которой находится php.exe в переменную PATH.

        • haiflive

          У тебя наверное денвер стоит?.
          В твоём случае нужно так:
          v:\usr\bin\php.exe v:\home\yii\www\framework\yiic.php webapp v:\home\yii\www\testdrive

          Или вообще просто скопируй всю от сюда v:\home\yii\www\framework\cli\views\webapp в нужную тебе папку

  • aza

    Раздел Хит сезона

    Веб-страница недоступна.

    Веб-страница по адресу http://rotator.gameboss.ru/engine2/?sizetype=544×300&advert=30000&url=, возможно, временно недоступна или постоянно перемещена по новому адресу.

    • Этот сервер нам не нужен 🙂 Картинки находятся на images.nevosoft.ru, а партнерская программа — partner.gameboss.ru

  • aza

    Раздел Хит сезона

    Веб-страница недоступна.

    Веб-страница по адресу http://rotator.gameboss.ru/engine2/?sizetype=544×300&advert=30000&url=, возможно, временно недоступна или постоянно перемещена по новому адресу.

    • Этот сервер нам не нужен 🙂 Картинки находятся на images.nevosoft.ru, а партнерская программа — partner.gameboss.ru

  • отлично! не помешает узнать и об этом фреймворке, т.к. много о нем слышал. сейчас использую только CodeIgniter, поэтому с нетерпением жду ваших остальных частей!

  • отлично! не помешает узнать и об этом фреймворке, т.к. много о нем слышал. сейчас использую только CodeIgniter, поэтому с нетерпением жду ваших остальных частей!

  • Sam

    Замечательно. Полноценных туториалов от и до по Yii пока не очень много.

    • На полноту я не претендую 🙂 , но о необходимом минимуме постараюсь рассказать 🙂

  • Sam

    Замечательно. Полноценных туториалов от и до по Yii пока не очень много.

    • На полноту я не претендую 🙂 , но о необходимом минимуме постараюсь рассказать 🙂

  • сейчас популярные самые: ZEND и Symfony…

    в будущих статьях хотелось бы услышать про сравнение фремворков, просто зачем использовать мало извесный фрейворк, если он очень замечательный ZEND и Symfony?

    • Я не против ZEND'а и Symfony. Просто каждый новый фреймворк создаётся с учётом каких-то недостатков предыдущих. Это не означает, что он будет лучше, но в каких-то ситуациях сможет упростить работу. Описание Yii мне понравилось и я решил попробовать сделать сайт, а заодно и в блоге об этом написать 😉

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

  • сейчас популярные самые: ZEND и Symfony…

    в будущих статьях хотелось бы услышать про сравнение фремворков, просто зачем использовать мало извесный фрейворк, если он очень замечательный ZEND и Symfony?

    • Я не против ZEND'а и Symfony. Просто каждый новый фреймворк создаётся с учётом каких-то недостатков предыдущих. Это не означает, что он будет лучше, но в каких-то ситуациях сможет упростить работу. Описание Yii мне понравилось и я решил попробовать сделать сайт, а заодно и в блоге об этом написать 😉

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

  • Очень полезный урок. Я поставил сразу на работающий хост http://99fps.ru  вместе с последней на данный момент версией yii-1.1.8.r3324. После добавления папок runtime и assets сайт запустился. Долго не мог попасть в админку, пока не поменял DashboardMenu.php  на  dashboardMenu.php.  Есть пара вопросов, авторизация предусмотрена только для админа я правильно понял да? И еще контактная форма… куда и как отправляется информация введенная посетителем через форму обратной связи? Что то я не вкурил насчет этого. А так пример отличный, для изучения yii самое оно, автору спасибо огромное. 

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

      Контактная форма.
      Сообщения должны отправляться на email администратора. Если отправка почты нормально работает.

  • Владимир Дроменко

    Лучше про yii framework нам на парах рассказывали, а не про маткад 🙂
    Классная инфа, буду читать. По работе требуются знания по yii.