Ultimamente tenho percebido que existem algumas críticas sobre módulos desenvolvidos para Magento que não funcionam para alguns e funcionam para outros.

Como por exemplo meu próprio módulo para integração com PagSeguro (veja <a href=”http://www.magentocommerce.com/magento-connect/pagseguro-by-os-studios-1439.html”>aqui</a>), que funciona para a maioria e para alguns existem problemas e erros que inicialmente são difíceis de se entender ou identificar.

No exemplo que citei no meu módulo, posso dizer que há alguns motivos que podem ocasionar erros em algumas lojas, mas se tivermos conhecimento de alguns processos podemos evitar dores de cabeça. Por exemplo:

Erro: Fatal error: Call to a member function setMethod() on a non-object in /home/storage/f/cd/cc/moschen/public_html/includes/src/Mage_Payment_Helper_Data.php on line 106;
Possível causa: Esta loja está com a opção de compiler ativado e o desenvolvedor, no momento em que fez a instalação, se esqueceu de desativar o compiler e só ativá-lo novamente após ter instalado e rodado o processo de compilação novamente.

Erro: Fatal error: Call to a member function toOptionArray() on a non-object in /home/wwwtatuu/public_html/app/code/core/Mage/Adminhtml/Block/System/Config/Form.php on line 463;
Erro: Fatal error: Class ‘OsStudios_PagSeguro_Helper_Data’ not found in /home/luciorod/public_html/app/Mage.php on line 546;
Possível causa: Para ambos os erros, muito provavelmente esta loja possui mais de um módulo para PagSeguro instalado, ou seja, pode ser o módulo do Bruno Assarisse ou o do próprio PagSeguro. O problema aqui é que ambos os módulos utilizam como seu identificador a palavra ‘pagseguro’ e, claro, confunde o Magento no momento em que vai procurar certo arquivo.
Para você entender melhor o Magento procurou um arquivo que deveria estar em App/Code/Community/OsStudios/PagSeguro/Helper/Data.php, porém o módulo que ele está levando em consideração quando o helper é chamado com o nickname ‘pagseguro’ (Mage::helper(‘pagseguro’)) pode não ser o desenvolvido por mim, com o namespace ‘OsStudios’. Isso com certeza causará um erro.

Enfim, não vou comentar sobre todos os erros aqui, pois não é meu objetivo.
O meu objetivo neste post é deixar claro que nenhum módulo desenvolvido por um terceiro está livre de erros tando por questão de versão do Magento em questão, quanto em questão de compatibilidade com outros módulos.

Levando isso em consideração se faz importante que todo e qualquer módulo que você pretenda instalar em sua loja Magento, esteja ela em produção ou não, deve ser instalado primeiramente em uma versão de cópia ou um ambiente de testes antes que o código entre para o projeto real.
Isso com certeza vai te ajudar a diminuir (e muito!) a possibilidade de sua loja literalmente quebrar após a instalação ou limpeza de cache, pois o módulo já deve estar previamente homologado e com bandeira branca para ser colocado em produção.

Não existe fórmula mágica para se desenvolver um módulo 100% compatível com todos os outros, pois você pode cair no caso de ter um módulo que extenda um model específico no Magento e instale outro que extenda o mesmo model, então como prever isso? Impossível.

O jeito é sempre deixar este trabalho para desenvolvedores que conheçam a plataforma e saibam o que estão fazendo no momento da instalação de um módulo.

Até a próxima!

Tiago Sampaio