Como o banco de dados e sessão de configuração semelhante em Kohana?
Pergunta
Eu não entendo isto: Eles dizem, é bom fazer um "Controller Base" que instancia o banco de dados e sessão:
// Base Controller code
$this->db = Database::instance($db_group);
$this->session = Session::instance();
// Now in any controller which extends Base Controller
$var = $this->session->get('var');
$query = $this->db->query('SELECT * FROM `table`);
Assim, gostaria de fazer apenas uma classe de controlador como qualquer outro controlador, e depois é só deixar todos os meus outros controladores "reais" herdar de um presente, para que eles tenham uma conexão de banco de dados e uma sessão de usuário?
Solução
Em Kohana, eu faço todo o meu trabalho db em meus modelos. Você pode pegar o objeto DB no modelo apenas fazendo
$this->db
O mesmo vale para muitos dos outros objetos, por exemplo $this->uri
. Minha implementação dos meios padrão MVC que todo o trabalho minha db está em meus modelos, eu não tenho certeza se esta é a melhor maneira de fazê-lo, mas ele funciona para mim.
Como para as sessões, você sempre pode usar os métodos estáticos para obter um singleton como
$mySession = Session::instance();
Eu tenho certeza que todos / a maioria dos ajudantes / bibliotecas têm uma maneira semelhante de usá-los - iniciá-los a partir de $ this ou usar o método estático
.