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

