Pergunta

Estou escrevendo um webapp usando CodeIgniter que requer autenticação.Criei um modelo que trata de toda a minha autenticação.No entanto, não consigo encontrar uma maneira de acessar esse modelo de autenticação de dentro de outro modelo.Existe uma maneira de acessar um modelo de dentro de outro modo ou uma maneira melhor de lidar com a autenticação dentro do CodeIgniter?

Foi útil?

Solução

Em geral, você não deseja criar objetos dentro de um objeto.Em vez disso, é um mau hábito escrever uma API clara e injetar um modelo em seu modelo.

<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>

Outras dicas

Parece que você pode carregar modelos dentro de modelos, embora provavelmente deva resolver isso de outra maneira.Ver Fóruns do CodeIgniter para uma discussão.

class SomeModel extends Model
{
  function doSomething($foo)
  {
    $CI =& get_instance();
    $CI->load->model('SomeOtherModel','NiceName',true);

    // use $CI instead of $this to query the other models
    $CI->NiceName->doSomethingElse();
  }
}

Além disso, não entendo o que Till está dizendo sobre você não deve criar objetos dentro de objetos.Claro que deveria!Enviar objetos como argumentos parece muito menos claro para mim.

Não lide com autenticação em seu modelo.Use apenas modelos para fazer interface com seu banco de dados, ou ldap ou qualquer outra coisa.

Criei uma biblioteca Auth que uso para gerenciar autenticação e autorização.Você pode acessar uma biblioteca como esta em seus controladores.

Carregar um modelo dentro de um modelo agora é possível com o novo CodeIgniter.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top