É o M de model dele sendo entidades do banco é errado mesmo, pelo menos pro
MVC, já tinha falado sobre isso ... mas é a forma de ele tratar isso.

Vc indo para algum desses, vai cair na mesma situação que o CI :)

2008/6/4 Renato Silva <[EMAIL PROTECTED]>:

> Entendi, como o tutorial oficial não é orientado a objetos, pois não tem
> domain model, e não achei outro tutorial mostrando, e além disso o site
> oficial comete um erro conceitual ao confundir o 'M' do MVC com sendo as
> entidades de banco de dados, acho que o CI não é pra mim. Vou partir para
> Zend, Rais ou Django...
>
> De qualquer forma obrigado pelos comentários, estou saindo da lista agora,
> fui...
>
>
> 2008/6/4 Marcus Cavalcanti <[EMAIL PROTECTED]>:
>
>> Cara você programar OO em qualquer lugar, até no CI. o CI é OO, tanto que
>> usa MVC, que é um pattern OO, agora se você quer sair do feijão com arroz do
>> framework, depende de você e das suas necessidades.
>>
>> O Kohana não tem um mapeador igual o Hibernate, mas nos padrões do
>> Mapeador do RoR.
>> http://docs.kohanaphp.com/libraries/orm
>>
>> Naõ entendi o lance do CSS, mas basicamente linko css com base_url();
>>
>>
>>
>>
>> 2008/6/4 Renato Silva <[EMAIL PROTECTED]>:
>>
>>> Olá Marcus, entendo o seu esquema de um DAO para cada classe, minha
>>> dificuldade é entender no que o CI ajuda o desenvolvedor, e como programar
>>> OO no CI.
>>>
>>> O Kohana tem um mapeador O/R? Você conhece algum bom tutorial de
>>> Kohana/CI que ensine a programar OO neles? Eu não me importo do Kohana não
>>> rodar em PHP 4, você acha que fora isso o Kohana é melhor então?
>>>
>>> Outra dúvida, como você linka um CSS na mesma pasta? Só colocar o nome do
>>> arquivo, como é natural, não funciona.
>>>
>>>
>>>
>>> 2008/6/4 Marcus Cavalcanti <[EMAIL PROTECTED]>:
>>>
>>>> Esse nome Renato Silva me dá medo, é o nome do pior zagueiro do meu
>>>> time, que cisma em achar que é craque hahaha brincadeiras a parte, vamos
>>>> voltar ao escopo do assunto.
>>>>
>>>> Então, não tem mapeamento, pq infelizmente o CI ainda não tem esse
>>>> recurso, o que torna nesse ponto o Kohana infinitamente melhor. Eu, assim
>>>> como você, concordo que o CI não orienta ao programador programar pensando
>>>> em OO, o que ele faz é fazer você seguir um padrão de desenvolvimento, o 
>>>> que
>>>> diga-se de passagem, já ajuda bastante. Mas quando você tem um aplicação
>>>> maior, você tem a necessidade de começar a pensar em classes de domínio.
>>>>
>>>> Para esse meu caso, eu fiz uma coisa muito parecida ao que é muito usado
>>>> no Java. Tenho meus modelos, que são nada mais do que POJO's (do java) ou
>>>> entidades, as minhas classes de acesso aos dados que são os DAO's, onde 
>>>> cada
>>>> DAO equivale a uma entidade, e os serviços, que fazem o trabalho sujo, onde
>>>> por exemplo pegar as N matérias (uma entidade) de um determinado aluno
>>>> (outra entidade). Deu para dar uma clareada aí nas idéias?
>>>>
>>>> Se ficou muito confuso, me avisa, que eu tento mostrar isso de outro
>>>> jeito.
>>>>
>>>> Infelizmente, ou, felizmente, como o PHP não é uma liguagem 100% OO,
>>>> então é difícil você achar sistemas assim, e pessoas pensando desse jeito.
>>>> Mas tudo depende de você, já que a linguagem em si oferece o suporte
>>>> necessário a você desenvolver aplicações OO.
>>>>
>>>> Esses dia na php-especialistas, que é uma das melhores listas de PHP em
>>>> português, eu vi uma pergunta sobre OO que rendeu ... onde quase todo mundo
>>>> se equivocou, pq as pessoas pensam em OO como funcionalidade, e não como
>>>> conceito, aí que na minha humilde opnião que está o erro.
>>>>
>>>> Abraço,
>>>>
>>>> Marcus
>>>>
>>>>
>>>>
>>>>
>>>> 2008/6/4 Renato Silva <[EMAIL PROTECTED]>:
>>>>
>>>> Olá Marcus, aproveitando, você tem um domain model aí?
>>>>>
>>>>> Você faz algum tipo de mapeamento O/R? Como você faz por exemplo para
>>>>> obter todos os pedidos de um determinado cliente (cenário de exemplo)?
>>>>>
>>>>> 1) Select com join no banco (dados do pedido e do cliente) e passa a
>>>>> query para a view
>>>>>
>>>>> 2) Faz algo equivalente ao passo 1 mas criando os objetos
>>>>> correspondentes como Pedido, e cada pedido contendo um objeto do tipo
>>>>> Cliente que é quem fez o pedido. Se sim, então no que o CI te ajuda
>>>>> especificamente?
>>>>>
>>>>> Pergunto isso porque vi aquele tutorial de blog em 20min mas o blog não
>>>>> é orientado a objetos, e ainda não consegui pescar como o CI ajuda a
>>>>> construir uma aplicação orientada a objetos *de verdade*.
>>>>>
>>>>>
>>>>>
>>>>> 2008/6/4 Marcus Cavalcanti <[EMAIL PROTECTED]>:
>>>>>
>>>>>>  Na verdade esse thread não é para tirar dúvidas, e sim para dividir
>>>>>> conhecimento, como estou vendo a galera animada com site, tutoriais, 
>>>>>> artigos
>>>>>> e etc, penso que pode ser uma boa contribuição, pois com certeza outras
>>>>>> pessoas passarão por essa situação.
>>>>>>
>>>>>> A questão toda é, na minha aplicação eu tenho uma estrutura um pouco
>>>>>> diferente da proposta por default pelo CI.
>>>>>>
>>>>>> Dentro do diretório 'application' eu tenho outros 4 diretórios:
>>>>>> frontend, backend, services e models.
>>>>>>
>>>>>> Tanto o 'frontend' quanto o 'backend' são as aplicações em si - no
>>>>>> caso o site e o admin - com todos os diretórios comuns as aplicações, 
>>>>>> como:
>>>>>> config, controllers, helpers, libraries, models, hooks, views, etc...
>>>>>>
>>>>>> E o diretórios 'models' e 'services' são os que guardam as informações
>>>>>> do dóminio da minha aplicação. O 'models' guarda os modelos, e o 
>>>>>> 'services'
>>>>>> é  como uma fachada (façade pattern) para a minha aplicação, ou seja, 
>>>>>> nele
>>>>>> eu tenho ruma interface comum de acesso que implementam rotina de N ou 
>>>>>> mais
>>>>>> classes, no meu caso modelos.
>>>>>>
>>>>>> Eu preciso deixar o 'models' e os 'services' no mesmo nível do
>>>>>> diretório das aplicações, justamente para eles poderem ser compartilhados
>>>>>> entre elas.
>>>>>>
>>>>>> Eis que surge o problema.
>>>>>>
>>>>>> Para carregar os modelos, dessa forma, basta eu usar:
>>>>>> $this->CI->load->model('../../models/Foto_Model', 'Photo', TRUE);
>>>>>>
>>>>>> Mas e para carregar as classes, que são como Libraries em sua
>>>>>> essência? Nesse formato acima não consigo, pois o framework retorna um 
>>>>>> erro
>>>>>> como se eu estivesse tentando istanciar o meu controller duas vezes.
>>>>>>
>>>>>> Solução: criei um helper, que serve como loader dessas classes.
>>>>>>
>>>>>> <?php
>>>>>> /**
>>>>>>  * ci_class_loader - load class in 'services' path
>>>>>>  *
>>>>>>  * @access    public
>>>>>>  * @param    string
>>>>>>  * @return    object
>>>>>>  */
>>>>>> function ci_class_loader( $path ) {
>>>>>>     require_once( $path.'.php' );
>>>>>>
>>>>>>     $name      = end( explode( '/', $path ) );
>>>>>>     $class     = ucfirst( $name );
>>>>>>     $ci        =& get_instance();
>>>>>>     $ci->$name =& new $class();
>>>>>>
>>>>>>     return $ci->$name;
>>>>>> }
>>>>>> ?>
>>>>>>
>>>>>> Partindo do princípio que suas classes começam com letra maiúscula, de
>>>>>> acordo com os coding stardads, e que o nome do arquivo é o nome da 
>>>>>> classe,
>>>>>> mas em minúsculo (padrão CI).
>>>>>>
>>>>>> Exemplo de uma chamada de um service em um Controller:
>>>>>>
>>>>>> <?php
>>>>>>
>>>>>> require_once('base.php');
>>>>>>
>>>>>> class Test extends BaseController {
>>>>>>
>>>>>>     function Test()    {
>>>>>>         parent::BaseController();
>>>>>>     }
>>>>>>
>>>>>>     function index() {
>>>>>>         $ret = ci_class_loader(ROOTPATH."/services/teste");
>>>>>>         echo "<pre>";
>>>>>>         print_r(get_class_methods($ret));
>>>>>>         echo "</pre>";
>>>>>>         die;
>>>>>>     }
>>>>>> }
>>>>>> ?>
>>>>>>
>>>>>> Só para ressaltar, que esse ROOTPATH é uma constante que eu defini no
>>>>>> meu index.php, para retornar apenas o PATH e não o FULLPATH da aplicação.
>>>>>>
>>>>>> Se quiserem adicionar esse conteúdo ao site, sintam-se a vontade, só
>>>>>> gostaria que me mantivessem como autor.
>>>>>>
>>>>>> No mais, qualquer dúvida estamos aí.
>>>>>>
>>>>>> Boa sorte a todos no processo de implementação do site.
>>>>>>
>>>>>> Abraço,
>>>>>>
>>>>>> Marcus Cavalcanti
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Lista mailing list
>>>>>> [email protected]
>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Lista mailing list
>>>>> [email protected]
>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Lista mailing list
>>>> [email protected]
>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Lista mailing list
>>> [email protected]
>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>
>>>
>>
>> _______________________________________________
>> Lista mailing list
>> [email protected]
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>>
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
>
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a