É 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

