Bom dia Marcus, enfim temos um texto para inaugurar o site ! :) Tem gente por lá fazendo testes, mas acho que estão meio acanhados porque até o momento não publicaram nada :D
Abs Muita sorte para nós! Marco Telles ############# # Pier de Ipanema ( http://www.pierdeipanema.com.br/ ) # Pier de Ipanema no Orkut ( http://www.orkut.com/Community.aspx?cmm=2923344 ) # CodeIgniter PHP framework ( http://www.codeigniter.com.br/ ) # Ubuntu The power of free software ( http://www.ubuntu-br.org/ ) # Python Programming Language ( http://www.pythonbrasil.com.br/ ) Marcus Cavalcanti escreveu: > 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

