Daniel,

Conforme resposta do steve, o Code Igniter não deixa você instanciar
diretamente os objetos de modelo.

Quando você usa o método load, ele automaticamente gera o objeto de
modelo como atributo do seu controller (que na verdade é uma classe
"universal" do CI, que contém praticamente todos os objetos
instanciados).

Você pode ainda passar um segundo parametro naquele método, pra
definir qual o nome do objeto a ser utilizado:

$this->load->model('usuariomodel', 'usuario');
$this->usuario->metodo_do_model_usuario();

Dessa forma, você não consegue ter acesso ao construtor da classe.


Uma coisa que é comum nas bibliotecas do CI, mas não lembro se
funciona nos modelos, é que você pode passar um array de configuração
pra essa classe (coisa que talvez você esteja querendo fazer ao
executar o construtor). É bom dar uma olhada no guia do usuário do CI,
na biblioteca de Loader e confirmar se é possível ou não.

Se você quer executar uma ação sempre que a classe for instanciada,
não me recordo de ter uma maneira de fazer isso sem especializar
alguma funcionalidade do core do framework.



2009/5/5 Daniel Nascimento <[email protected]>:
> Roberto, obrigado pela resposta.
>
> Na verdade ajudou e complicou um pouco ao mesmo tempo... hehehe.
>
> Não entendi o que você quis dizer quando escreveu isso:
> $user = new Usuario($nome,$email,$sexo,$login,$senha); // na documentação do
> CI ele ensina como fazer, se tu quer inserir um usuário depois de carregar o
> usuariomodel tu poderia fazer o seguinte:
> $this->usuariomodel->nome = $nome;
> $this->usuariomodel->email = $email;
> $this->usuariomodel->sexo = $sexo;
> $this->usuariomodel->login = $login;
> $this->usuariomodel->senha= $senha;
> imprimeDados($this->usuariomodel);
>
> No meu caso eu tenho uma classe Usuário e quero chamar seu construtor para
> instanciar um objeto, pelo que eu entendi no que você escreveu eu não
> conseguirei chamá-lo e sim devo setar os parâmetros um a um.
>
> Não existe uma forma de eu executar o construtor da classe Usuario passando
> os parâmetros para ele?
>
> Ahh!! O imprimeDados é só um método de teste que eu criei que iria imprimir
> todos os dados do objeto da classe usuário.
>
> Abraços.
>
> 2009/5/5 Roberto Almeida Longhi <[email protected]>
>>
>> Daniel,
>>
>> Tudo bom ?
>> Verifiquei o código, e segue alguns comentarios.
>>
>> Daniel Nascimento escreveu:
>>>
>>> Boa Tarde a todos.
>>>
>>> Sou novo aqui na lista e estou começando agora a mexer com o Code
>>> Igniter.
>>> Estou fazendo uma aplicação para estudo aqui e surgiu uma dúvida.
>>>
>>> Fiz o seguinte controller:
>>>
>>> class Usuario extends Controller {
>>>
>>>    public function Usuario(){
>>>        parent::Controller();
>>>    }
>>>
>>>    public function novo(){
>>>        $nome = 'Daniel Nascimento';
>>>        $email = '[email protected] <mailto:[email protected]>';
>>>        $sexo = 'M';
>>>        $login = 'dnascimento';
>>>        $senha = 'teste123';
>>>
>>>        /* Carregando o Model de Usuarios */
>>>
>>>
>>>        $this->load->model('usuario/usuario'); *// isso quer dizer que tu
>>> tem uma pasta usuario dentro da pasta model e dentro da pasta usuario tu tem
>>> o arquivo usuario.php. O CI recomenda algo parecido com a linha abaixo.*
>>>
>>> *        $this->load->model('usuariomodel');*
>>
>> *E dentro deste model tu aciona o metodo que precisa. e acessa as
>> propriedades.
>> *
>>>
>>>        $user = new Usuario($nome,$email,$sexo,$login,$senha); *// na
>>> documentação do CI ele ensina como fazer, se tu quer inserir um usuário
>>> deveria fazer o seguinte*
>>
>> *Depois de carregar o usuariomodel tu poderia fazer o seguinte:
>> $this->usuariomodel->nome = $nome;
>> **$this->usuariomodel->email = $*email*;
>> **$this->usuariomodel->sexo = $*sexo*;
>> **$this->usuariomodel->login = $*login*;
>> **$this->usuariomodel->senha= $*senha*;
>> **imprimeDados(**$this->usuariomodel**);
>>
>> Alias, o que tu quer dizer com imprime dados ?
>> Se for exibir somente, pode chamar uma view ... que é o aconselhavel ...
>>
>> Ajudei ou piorei sua situação ?
>> =]
>>
>> []'s
>> *
>>>
>>>        $user->imprimeDados();
>>>    }
>>> }
>>>
>>> Tenho um model de usuarios dentro da pasta model/usuario/usuario.php. Fiz
>>> o load do model através do comando /$this->load->model('usuario/usuario');/
>>> A minha dúvida é: Como faço para instanciar um objeto da classe Usuario
>>> através do controller, tentei fazê-lo da seguinte forma porém não consegui.
>>>        $user = new Usuario($nome,$email,$sexo,$login,$senha);
>>>        $user->imprimeDados();
>>>
>>> Alguma sugestão?
>>>
>>> Abraços.
>>>
>>> --
>>> *Daniel Barbosa do Nascimento Filho*
>>> /SQA - Analista de Qualidade
>>> VirtualRox - Soluções Digitais
>>> http://www.virtualrox.com/
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Lista mailing list
>>> [email protected]
>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>
>>
>> --
>> Roberto Almeida Longhi
>> Programador
>> Contmatic
>> (11) 2942 6700 Ramal 1404
>> (11) 8599 9022
>> www.contmatic.com.br
>>
>>
>> _______________________________________________
>> Lista mailing list
>> [email protected]
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
>
>
> --
> Daniel Barbosa do Nascimento Filho
> SQA - Analista de Qualidade
> VirtualRox - Soluções Digitais
> http://www.virtualrox.com
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
>



-- 
Newton Wagner

skype: newtonwagner
msn/gtalk: [email protected]

http://www.newtonwagner.net/
- http://www.diariodaselva.com.br/

_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a