Criando atalho do Zend Framework para seu projeto no Eclipse
Olá pessoal,
No último post, falei sobre como usar apenas uma biblioteca do ZF para todos os projeto em PHP. Acontece que pra quem usa o eclipse, ou qualquer outro que derive dele, percebeu que agora no projeto as Classes e Métodos do ZF não são mais encontrados pelo eclipse…
Isso acontece por que agora a pasta do ZF, não está mais dentro do seu projeto e sim em qualquer outro lugar do seu SO. Mas para resolver isso é fácil, apenas criamos um atalho da biblioteca do ZF para meu projeto!!!
Vamos lá:
Façam isso apenas usando o console do linux, e digitem:
ln -sf /home/libs/Zend /var/www/meuProjeto/library
Pronto! acabamos de criar um atalho da biblioteca do ZF para nosso projeto. Agora no seu eclipse você terá novamente todas referências de classes e métodos do ZF…
É isso… Abraços!!!
Adicionando a biblioteca do Zend no Apache/PHP
olá!
Bom hoje venho falar sobre a “instalação” do Zend Framework.
Ví a necessidade disto quando começei a migrar todos meus projetos para o ZF e quando fui ver, cada projeto estava com uma pasta do ZF, alguns atualizados mas outros não!!
Então resolvi colocar a biblioteca em algum lugar no meu SO e setei o endereço no PHP, agora todos meus projetos usam a mesma bibliteca!!! E quando houver alguma atualização no ZF, eu apenas altero uma pasta e não várias…
Bom, mas vamos ao que interessa!
Primeiro vamos colocar a pasta do ZF em algum lugar, no meu caso eu coloquei em:
/home/libs/
Visto que dentro de libs eu tenho a minha pasta Zend, que seria a raiz da biblioteca.
Agora com o lugar pronto, vamos setar ela no PHP:
sudo gedit /etc/php5/apache2/php.ini
Altere a variável include_path que provavelmente inicialmente estára assim:
include_path = “.:/usr/share/php”
Agora vamos adicionar o caminho para a pasta do Zend
include_path = “.:/usr/share/php:/home/libs”
Pronto! agora seus projetos não precisam mais ter a pasta do ZF, pois você setou no include_path para ele buscar em outro lugar…
obs: este exemplo foi feito usando Linux Ubuntu, mas nada impede que você o faça em outra versão do Linux ou até mesmo no Windows.
Espero ter ajudado!! Qualquer coisa postem suas dúvidas…
Abraços
Ativando log(debugando) no mysql
Olá,
Certo dia precisei debugar as queries que estavam sendo executadas no meu servidor Mysql em Ubuntu… eis a solução!
Acesse o arquivo de configuração do mysql
sudo gedit /etc/mysql/my.cnf
Descomente a diretiva log
log = /var/log/mysql/mysql.log
obs: notei que ao atualizar o ubuntu para o 9.10, esta diretiva não existia mais no arquivo do mysql, se não aparecer ai não tem problema, é só escrever como está acima dentro de [mysqld].
Reinicie o serviço do mysql
sudo /etc/init.d/mysql restart
…e pronto! o arquivo já está criado. Agora toda query que for executada no seu servidor ficará armazena neste arquivo.
Se você quiser ver o log em tempo de execução, você pode fazer isso no console mesmo digitando:
tail -f /var/log/mysql/mysql.log
Mas lembrem de desativar o log depois de usar, segundo o próprio mysql, ele acaba com a performance do seu banco!
Espero que ajude a vocês…
Abraços
Passando objeto com atributos privados para o Flex
Olá pessoal,
Bom o título desse post pode até ser equivocado, mas a idéia é essa mesma!!! rs…
Pra quem trabalha com flex sabe que se mandar um objeto com os atributos privados pra ele, já era, ele não consegue identificar os valores do meu objeto, por isso eu sempre tenho que enviar um objeto VO (que é o que a maioria usa) com os atributos públicos…
Trabalho a pouquíssimo tempo com o Flex, mas esse negócio de enviar um objeto com atributos públicos pra View sempre me incomodou, pois eu já tenho a minha arquitetura pronta em PHP (com Zend Framework) e sempre mandei pro Controller um Objeto com atributos privados, nesse caso, a View acessaria os valores através de seus métodos…
Pensando nisso pensei em pegar meu objeto (PessoaVO) com atributos privados e métodos públicos e transformá-lo em tempo de execução para um objeto (stdClass) com apenas os atributos públicos. Dessa forma agora o Flex reconheçe os valores do meu objeto…
E para essa “mágica” eu usei o recurso de Reflexão do PHP, com ela eu agora consigo ver quais são os atributos privados do meu objeto, e com isso eu posso criar um objeto em tempo de execução…
Segue o código com um pouco de explicação…
Digamos que eu precise passar esse objeto pra o Flex…
Pessoa Object ( [cod_pessoa:private] => 1 [nome:private] => Giolvani de Matos [email:private] => inavloig@gmail.com )
Mas se eu passar esse cara ai pro Flex ele não vai reconhecer, então tenho que passar pra ele isso…
stdClass Object ( [cod_pessoa] => 1 [nome] => Giolvani de Matos [email] => inavloig@gmail.com )
Oba!!! agora o Flex conheçe esse cara…
E agora o mais legal, a função que faz isso pra mim…
private static function toStdClass($object){
// obtenho o nome da Classe
$className = get_class($object);
// agora com o nome da classe eu uso a reflexão...
$class = new ReflectionClass($className);
// obtenho a lista de atributos privados do objeto
$properties = $class->getProperties();
// aqui eu uso um recurso do ZF que transforma as
// strings com "_" para CamelCase
$camel = new Zend_Filter_Word_UnderscoreToCamelCase();
// instancio a classe que será retornada
$newClass = new stdClass();
// faço um loop nas propriedades...
foreach ($properties as $prop){
// obtenho os nomes dos meu métodos usando o CamelCase
$method = $camel->filter($prop->name);
// obtenho o valor do método
$value = $object->{'get'.$method}();
// se o valor não for um objeto
if (!is_object($value)){
// atribui a $newClass uma nova propriedade
// com o valor resultante do meu método
$newClass->{$prop->name} = $value;
}
// se for um objeto
else {
// atribui a $newClass uma nova propriedade
// agora usando recursividade
$newClass->{$prop->name} = self::toStdClass($value);
}
}
// retorna o objeto
return $newClass;
}
Olha pessoal, pra isso ai funcionar você precisa ter alguns padrões de nomenclatura tanto pra atributos quanto pra métodos, no meu caso o atributo
$cod_pessoa é obtido pelo método getCodPessoa()
e
$nome é obtido por getNome()
mas nada impede que você use sua nomenclatura, você apenas deve aterar o método toStdClass().
Bom galera! isso ai me ajudou muito, espero que ajude a vocês também, se alguém resolveu de outra maneira, compartilhe ai com agente!
Espero que tenham gostado do Post, qualquer dúvida postem ae…
Abraços e até a próxima!!!
Começando
Olá pessoal,
mais uma vez estou eu aqui tentando fazer um blog, mas agora tenho objetivos para com este e por isso pretendo sempre atualizá-lo com conteúdos pertinentes!
aqui vou postar sobre conteúdos que vejo no dia-dia do meu trabalho, e isso além de me auxiliar no gerenciamento de conhecimento espero que também ajude outras pessoas que irão acessar o blog.
obs: não gosto muito de escrever por não saber me expressar direito, mas vou tentar ser o mais claro possível em meus posts…
abraços