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

