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