Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 20 апр 2024, 00:55

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Передача параметров в модель
СообщениеДобавлено: 10 авг 2012, 15:59 
Не в сети
Бывалый

Зарегистрирован: 10 авг 2012, 15:51
Сообщения: 33
Решение этой проблемы есть конечно, но оно не так элегантно, как реализация в кохане
Допустим есть модель
Код:
Model_Name

У неё есть конструктор
Код:
public function __construct($var)


и мы при создание модели должны указывать
Код:
$var


И так вопрос - можно ли через фабрику объектов передать эту переменную?

Попытки
Код:
Model::factory('Name', $var)

Код:
Model::factory('Name', array('var' => $var)


Ни к чему не привели, а так создавать, то как то выбивается из общего стиля
Код:
new Model_Name($var)


Может какое другое решение? Через запрос как нибудь? Подскажите


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача параметров в модель
СообщениеДобавлено: 10 авг 2012, 17:33 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Код:
abstract class Kohana_Model
{
    /**
     * Create a new model instance.
     * There can passed more than one arguments, and all of them will be passed
     * to a models constructor.
     *
     *     $model = Model::factory($name, ...);
     *
     * @param   string   model name
     * @return  Model
     */
    public static function factory( $name )
    {
        # Load the model using reflection
        $class = new ReflectionClass('Model_'.$name);

        # Get all arguments
        $args = func_get_args();

        # Remove first element, cause it is a model name
        array_shift($args);

        # Create a new instance of the model
        $model = $class->newInstance($args);

        return $model;

    }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача параметров в модель
СообщениеДобавлено: 13 авг 2012, 14:17 
Не в сети
Бывалый

Зарегистрирован: 10 авг 2012, 15:51
Сообщения: 33
то есть нужно переопределять абстрактный класс коханы и потом уже передавать как
Код:
Model::factory('ModelName', array($arg1 => 'arg1',...)


Так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача параметров в модель
СообщениеДобавлено: 13 авг 2012, 16:46 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Вообще наличие функции func_get_args внутри метода Фабрика подразумевает возможность передачи аргументов внутрь метода.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача параметров в модель
СообщениеДобавлено: 14 авг 2012, 14:41 
Не в сети
Бывалый

Зарегистрирован: 10 авг 2012, 15:51
Сообщения: 33
admin писал(а):
Вообще наличие функции func_get_args внутри метода Фабрика подразумевает возможность передачи аргументов внутрь метода.

То есть просто

Код:
Model::factory('ModelName', $arg1, $arg2,...)


и потом уже обрезаем ModelName и работаем с аргументами, так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача параметров в модель
СообщениеДобавлено: 19 авг 2012, 12:06 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Сам спросил, сам ответил :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача параметров в модель
СообщениеДобавлено: 21 авг 2012, 15:09 
Не в сети
Бывалый

Зарегистрирован: 10 авг 2012, 15:51
Сообщения: 33
Спасибо :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group