Можно ли назначить модель в качестве свойства класса для последующего использования? - PullRequest
1 голос
/ 06 марта 2011

Давайте представим, у меня есть контроллер, где много методов, которые используют одну и ту же модель.Можно ли так делать ... http://codepad.org/bSSMFpzp

Прежде чем я сделаю это, я создаю новую переменную в каждом методе ... Я просто пытаюсь следовать принципам СУХОЙ.))

Ответы [ 2 ]

2 голосов
/ 07 марта 2011

Я не думаю, что это самый полезный вызов, вызовы factory () могут быть объединены в цепочку, так что в любом случае он может быть довольно простым. Кроме того, вам не нужно иметь переменные в качестве свойств объекта в примере кода, вы можете использовать $ alln вместо $ this-> alln. Что, по моему мнению, делает код более читабельным.

При этом, если у вас есть причина сделать это свойством объекта в других действиях, да, можно назначить объект контроллеру, который вы можете использовать в нескольких действиях. Вы должны быть уверены, что не собираетесь заменять то, что уже находится в родительском классе, которое вы можете заменить.

Так что, если вы просто используете контроллер, предоставленный Kohana, не используйте переменные запрос или ответ.

1 голос
/ 07 марта 2011

Я стараюсь избегать этого, чтобы сделать свои действия более самодостаточными и легкими для чтения.

$this->foo->thing();

гораздо менее легко читать, чем:

Model::factory('foo')->thing();
...