Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какой паттерн можно тут применить 
:(
    Опции темы
502
Дата 4.8.2012, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Я всегда прав
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 16.7.2011

Репутация: 3
Всего: 4



чувствую что в этой ситуации можно или даже нужно какой-то патерн применить 
Код

public function actionDo($id)
{
    $shape = Shapes::model()->findByPk($id);
    switch ($shape->type)
    {
        case 1:
            $model = new Square;
        case 2:
            $model = new Rectangle;
        default:
            $model = new Circle;
    }

    // ...

    $this->render('do', array('model'=>$model));
}

view do.php
Код

<?php if ($model instanceof Square): ?>
    <?php /* code */ ?>
<?php elseif ($model instanceof Rectangle): ?>
    <?php /* code */ ?>
<?php elseif ($model instanceof Circle): ?>
    <?php /* code */ ?>
<?php endif; ?>


какой паттерн Вы бы применили?
спасибо

P.S. framework Yii, но непринципиально 
PM MAIL   Вверх
Fortop
Дата 5.8.2012, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Код

$shape =  Shapes::model()->findByPk($id);

$model = new $shape;

$model->render();


предполагается что возвращается строка и класс с таким именем существует.
А также данный класс содержит метод render(), который собственно и возвращает нужный код.

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


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0389 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.