MIX VIRTUAL 0 Denunciar post Postado Outubro 7, 2011 Estou estudando o Code Igniter e como sei que você tem experiência com esse framework em seus projetos, gostaria de tirar umas dúvidas. 1) Qual a vantagem de utilizar o Lumine, ao invés de utilizar a classe Database do próprio CI? 2) Verifiquei que no CI existe a classe Active Record: Active Record Insert $data = array( 'title' => $title, 'name' => $name, 'date' => $date ); $this->db->insert('mytable', $data); // Produces: INSERT INTO mytable (title, name, date) VALUES ('{$title}', '{$name}', '{$date}') Eu consigo fazer esse tipo de inserção utilizando o Lumine? 3) Esta é a última, rsrsrsr: É uma dúvida voltada ao próprio CI e sua estrutura. Eu utilizo o Lumine no diretório protegido (a raiz), para ficar mais seguro e a estrutura de pastas não ficar pública (public_html). No caso do Code Igniter eu consigo fazer isso? Colocar ele no nível abaixo do meu diretório público? No meu server local aqui (Zend Core) eu uso a seguinte estrutura: htdocs/ lumine/ projeto1/ ==> "chamo" o Lumine para este projeto projeto2/ ==> "chamo" o Lumine para este projeto No caso do CI, eu preciso copiar a estrutura dele para cada projeto? Ou consigo utilizar apenas uma pasta CI para todos os projetos, pois sei que nele existem os arquivos config.php e database.php, além dos views e controllers. Exemplo: htdocs/ lumine/ codeigniter/ projeto1/ ===> "chamo" o Lumine e CodeIgniter para este projeto projeto2/ ===> "chamo" o Lumine e CodeIgniter para este projeto Não sei se fui claro, mas acho que dá pra entender. Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Outubro 7, 2011 1 - Bom, Lumine tem alguns métodos a mais para trabalhar com objetos-relacionais. Coisas que eu mais acho bacana: o mapeamento já fica na própria classe os joins ficam mais fáceis tem métodos para faciliar a persistencia e recuperação método de validação nativo emula prepared statement (WHERE a.nome like ? OR a.codautor = ?) 2 - Sim, tem: $pessoa = new Pessoa(); $pessoa->setFrom($_POST); $pessoa->save(); 3 - Sim. No arquivo "index.php" do CodeIgniter, você tem estas configurações: $system_folder = "system"; $application_folder = "application"; Basta definir onde estarão estes diretórios (que não precisam estar publicos) e pronto ;) Mas lembre-se, suas imagens, CSS, JS, etc (assets carregados pelo navegador) precisarão estar em um diretório público. @braços e fique com Deus! Compartilhar este post Link para o post Compartilhar em outros sites
MIX VIRTUAL 0 Denunciar post Postado Outubro 7, 2011 Hum, legal, Hugo... vou fazer mais testes e aprofundar a respeito dos routes... valeu, cara! Abraço!!! Compartilhar este post Link para o post Compartilhar em outros sites
MIX VIRTUAL 0 Denunciar post Postado Outubro 8, 2011 Ok, Hugo, tudo bem? Continuo meus testes com o Code Igniter e Lumine. Referente a seu exemplo na página de integração do Lumine e CI: http://www.hufersil.com.br/post/lumine_com_codeigniter A chamada ao objeto (tabela), no caso, deve ser sempre dessa maneira? Sempre utiliza o dao pra conectar a classe da tabela que foi gerada? TabelaModel::getInstance()->save( $dados ); Em qualquer ação (insert,update,select...) eu devo usar o TabelaModel::getInstance() ou invés de $tabela = new Tabela()? Desculpe a pergunta "tosca", mas é que já estava acostumado a trabalhar com as classes/tabelas. Uma outra dúvida: Segui sua página de config Lumine/CI: Basta informar no arquivo "/www/exemplos/ci/system/application/config/autoload.php" para carregar automaticamente a biblioteca "Lumine_ApplicationContext". Para isso, altere a linha onde está:$autoload['libraries'] = array(); Para isto: $autoload['libraries'] = array('Lumine_ApplicationContext'); Pra você entender minha estrutura de pasta: MEU CI =========================> D:/projetos/htdocs/teste_ci MEU LUMINE =====================> D:/projetos/htdocs/lumine lumine-conf.php ================> D:/projetos/htdocs/teste_ci/lumine-conf.php Lumine_ApplicationContext.php ==> D:\projetos\htdocs\teste_ci\system\application\libraries\Lumine_ApplicationContext.php autoload.php ===================> D:\projetos\htdocs\teste_ci\application\config\autoload.php Não joguei o Lumine dentro do CI, como você indicou. O LUMINE está no mesmo nível do CI e quero chamar ele dentro do CI. htdocs/ teste_ci/ lumine/ Eu gerei os models/daos pela página do Lumine e já estão nas pastas indicadas no CI. Eu desmarquei a opção "Personalização -> Usar controles usando: Não gerar controles". Tem algum problema? Verifiando sua página de config Lumine/CI: Não existe a pasta 'system/application/config'. É necessário criar uma pasta config e criar outro 'autoload.php'? Ou usar aquele 'autoload.php' que já está em 'application/config'? Pois fazendo do jeito que está descrito, está dando erro: An Error Was EncounteredUnable to load the requested class: lumine_applicationcontext Eu posso usar caminho absoluto (DOCUMET_ROOT) para os arquivos abaixo? autoload.php: $autoload['libraries'] = array('database','parser','Lumine_ApplicationContext'); lumine-conf.php:: $lumineConfig = array( 'dialect' => 'MySQL', 'database' => 'teste_codeigniter', 'user' => 'root', 'password' => '1234', 'port' => '3306', 'host' => 'localhost', 'class_path' => 'D:/projetos/htdocs/teste_ci', //======> local onde está meu CI e o lumine-conf.php 'package' => 'system.application.models.dao', 'addons_path' => '', 'acao' => 'gerar', 'options' => array( 'configID' => 'ci', 'tipo_geracao' => '1', 'remove_prefix' => '', 'remove_count_chars_start' => '0', 'remove_count_chars_end' => '0', 'format_classname' => '', 'schema_name' => '', 'many_to_many_style' => '%s_%s', 'plural' => '', 'create_controls' => '', 'class_sufix' => '', 'keep_foreign_column_name' => '1', 'camel_case' => '1', 'usar_dicionario' => '1', 'create_paths' => '1', 'dto_format' => '%sDTO', 'dto_package' => 'entidades', 'create_models' => '1', 'model_path' => 'system/application/models', 'model_format' => '%sModel', 'model_context' => '1', 'model_context_path' => 'system/application/libraries', 'overwrite' => '0', 'create_dtos' => '', 'generateAccessors' => '', 'create_entities_for_many_to_many' => '', 'generate_files' => '1', 'generate_zip' => '0' ) ); Lumine_ApplicationContext.php: // inclui os arquivos necessarios require_once $_SERVER['DOCUMENT_ROOT'] . '/lumine/Lumine.php'; class Lumine_ApplicationContext extends Lumine_EventListener { /** * Construtor * * @author Hugo Ferreira da Silva * @link http://www.hufersil.com.br * @return Lumine_ApplicationContext */ public function __construct(){ include $_SERVER['DOCUMENT_ROOT'] . '/teste_ci/lumine-conf.php'; $cfg = new Lumine_Configuration($lumineConfig); register_shutdown_function(array($cfg->getConnection(),'close')); spl_autoload_register(array('Lumine','import')); spl_autoload_register(array('Lumine','loadModel')); } } Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Outubro 8, 2011 É que no exemplo, criei também as Models pelo Lumine. Estas models tratam os objetos gerados pelo Lumine como DAO. Caso queira usar os objetos gerados, não tem problema nenhum. É só uma questão de gosto. Eu acho que encapsular os objetos DAO para serem usados somente dentro das Models mais correto. Assim, a controller somente recebe/envia valores do/para o Front-End, deixando a lógica de negócio dentro da Model. @braços e fique com Deus! 1 - não, não precisa gerar os "controles". São somente para scaffold; 2 - a classpath indica o diretório raiz de onde estarão as classes que serão usadas pelo Lumine. Se você colocar a class path como /www/meusite e o pacote (package) como br.com.hufersil.models Lumine vai procurar pelas classes no diretorio /www/meusite/br/com/hufersil/models Não existe a pasta 'system/application/config' Pode ser por conta da versão do seu CI. Na mais nova, vai ser application/config Como você mudou a estrutura de diretórios, não esqueça de no Lumine_ApplicationContext.php fazer apontar o caminho correto do arquivo lumine-conf.php @braços e fique com Deus! Compartilhar este post Link para o post Compartilhar em outros sites
MIX VIRTUAL 0 Denunciar post Postado Outubro 8, 2011 É que no exemplo, criei também as Models pelo Lumine. Estas models tratam os objetos gerados pelo Lumine como DAO. Caso queira usar os objetos gerados, não tem problema nenhum. É só uma questão de gosto. Eu acho que encapsular os objetos DAO para serem usados somente dentro das Models mais correto. Assim, a controller somente recebe/envia valores do/para o Front-End, deixando a lógica de negócio dentro da Model. @braços e fique com Deus! 1 - não, não precisa gerar os "controles". São somente para scaffold; 2 - a classpath indica o diretório raiz de onde estarão as classes que serão usadas pelo Lumine. Se você colocar a class path como /www/meusite e o pacote (package) como br.com.hufersil.models Lumine vai procurar pelas classes no diretorio /www/meusite/br/com/hufersil/models Pode ser por conta da versão do seu CI. Na mais nova, vai ser application/config Como você mudou a estrutura de diretórios, não esqueça de no Lumine_ApplicationContext.php fazer apontar o caminho correto do arquivo lumine-conf.php @braços e fique com Deus! Ah, ok, Hugo... agora foi... realmente era versão, pois acho que mudou a estrutura de pastas, e na página de geração do Lumine, ele já "pré-preenche"( ;) ) o diretório system.application.models.dao. Sobre o encampsulamento, questão de performance e consumo de memória, é melhor dessa forma ou usar os objetos diretamente? Como se utiliza o destroy() no encapsulamento, após terminar de usar o objeto? Valeu demais, e desculpe te incomodar aí no sabadão, rsrsrs. Abraço e fique com Deus também! Compartilhar este post Link para o post Compartilhar em outros sites
MIX VIRTUAL 0 Denunciar post Postado Outubro 9, 2011 Hugo, boa noite. No seu post anterior você falou sobre usar o encapsulamento no Lumine/CI. Será que você podia me passar alguns exemplos de select, update e loop, pois estou tendo algumas dúvidas. Pode ser coisa simples. Outra coisa também é em relação a performance e utilização do destroy(). Desculpe a amolação. Compartilhar este post Link para o post Compartilhar em outros sites