Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Передача параметров в модель
http://forum.kohanaframework.su/viewtopic.php?f=33&t=303
Страница 1 из 1

Автор:  nixon [ 10 авг 2012, 15:59 ]
Заголовок сообщения:  Передача параметров в модель

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

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


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


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

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

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


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


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

Автор:  Sergey [ 10 авг 2012, 17:33 ]
Заголовок сообщения:  Re: Передача параметров в модель

Код:
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;

    }
}

Автор:  nixon [ 13 авг 2012, 14:17 ]
Заголовок сообщения:  Re: Передача параметров в модель

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


Так?

Автор:  admin [ 13 авг 2012, 16:46 ]
Заголовок сообщения:  Re: Передача параметров в модель

Вообще наличие функции func_get_args внутри метода Фабрика подразумевает возможность передачи аргументов внутрь метода.

Автор:  nixon [ 14 авг 2012, 14:41 ]
Заголовок сообщения:  Re: Передача параметров в модель

admin писал(а):
Вообще наличие функции func_get_args внутри метода Фабрика подразумевает возможность передачи аргументов внутрь метода.

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

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


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

Автор:  Sergey [ 19 авг 2012, 12:06 ]
Заголовок сообщения:  Re: Передача параметров в модель

Сам спросил, сам ответил :)

Автор:  nixon [ 21 авг 2012, 15:09 ]
Заголовок сообщения:  Re: Передача параметров в модель

Спасибо :)

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/