[{"@context":"https:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/ivonascimento.com\/2014\/05\/21\/eu-php-e-o-magento\/#BlogPosting","mainEntityOfPage":"https:\/\/ivonascimento.com\/2014\/05\/21\/eu-php-e-o-magento\/","headline":"Eu, PHP e o Magento","name":"Eu, PHP e o Magento","description":"Sempre vi os frameworks como parte do trabalho e n\u00e3o o todo. Eles s\u00e3o frame+work = Um estrutura para desenvolvimento do trabalho. E n\u00e3o todo o trabalho em si. Confesso, inclusive, que n\u00e3o esperava muito do\u00a0Magento e que inicialmente tive a mesma rea\u00e7\u00e3o c\u00e9tica que voc\u00ea tem nesse momento. Por isso estou escrevendo esse artigo. [&hellip;]","datePublished":"2014-05-21","dateModified":"2014-05-22","author":{"@type":"Person","@id":"https:\/\/ivonascimento.com\/author\/ivonascimento\/#Person","name":"Ivo Nascimento","url":"https:\/\/ivonascimento.com\/author\/ivonascimento\/","identifier":10240028,"image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","height":96,"width":96}},"publisher":{"@type":"Person","name":"Ivo Nascimento"},"image":{"@type":"ImageObject","@id":"https:\/\/i0.wp.com\/ivonascimento.com\/wp-content\/uploads\/2014\/05\/img_0114.jpg?fit=500%2C667&ssl=1","url":"https:\/\/i0.wp.com\/ivonascimento.com\/wp-content\/uploads\/2014\/05\/img_0114.jpg?fit=500%2C667&ssl=1","height":667,"width":500},"url":"https:\/\/ivonascimento.com\/2014\/05\/21\/eu-php-e-o-magento\/","about":["Algoritmo","analyst","business","e-commerce","ecommerce","Magento","MVC","Object Oriented Programming","Pessoal","php","projects","projetos","resenha","review","software"],"wordCount":1104,"keywords":["dev","ecommerce","magento","opnion","php","review"],"articleBody":"Sempre vi os frameworks como parte do trabalho e n\u00e3o o todo. Eles s\u00e3o frame+work = Um estrutura para desenvolvimento do trabalho. E n\u00e3o todo o trabalho em si.Confesso, inclusive, que n\u00e3o esperava muito do\u00a0Magento e que inicialmente tive a mesma rea\u00e7\u00e3o c\u00e9tica que voc\u00ea tem nesse momento.Por isso estou escrevendo esse artigo. Para compartilhar com voc\u00ea os motivos pelos quais gostei e pelos quais n\u00e3o gostei desse framework que estou utilizando no momento para programar em PHP(escrito assim mesmo, para deixar claro que a ferramenta que uso para programar n\u00e3o \u00e9 o FRAMEWORK, mas a linguagem. O framework \u00e9 o paradigma).&#8220;O framework \u00e9 o paradigma.&#8221;O Magento veio por consequ\u00eancia do trabalho que desenvolvo neste momento. A empresa Smart \u00e9 a responsavel pela maior empreitada j\u00e1 realizada com o Magento: uma loja online novinha em folha para a Livraria Saraiva. Algo que os especialistas(e propriet\u00e1rios do framework) do e-Bay consideram o maior desafio mundial na aplica\u00e7\u00e3o do framework. Cat\u00e1logo gigantesco(e crescendo), milhares de milhares de pageviews, um sem n\u00famero de clientes, agilidade sem tamanho(os produtos e servi\u00e7os da Saraiva s\u00e3o atualizados constantemente em rea\u00e7\u00e3o a mudan\u00e7as de mercado) em um mercado em guerra permanente, onde altera\u00e7\u00f5es no marketshare as vezes s\u00e3o contabilizadas em decimos por cento.Esse \u00e9 o cen\u00e1rio em que aprendi(ok, estou aprendendo) a trabalhar com o Magento. Mas o que \u00e9 Magento?Segundo a wikip\u00e9dia ele \u00e9, abre aspas&#8230;an open source e-commerce web application that was launched on March 31, 2008 under the name Bento. Magento is a content management system (CMS) based on PHP and MySQL for web hosting service, which was built using parts of the Zend Framework.[1][2]It provides full support for object-oriented programming and Model-View-Controller (MVC) architecture. Magento also uses the entity-attribute-value (EAV) database model to store data.[3] It was developed by Varien (now Magento, a division of eBay) with help from the programmers within the open source community but is now owned solely by eBay Inc.Vamos a lista de tech words: open source, e-commerce, webapp, CMS, Mysql, ZendFramework, OOP, MVC, EAV. Vou falarjogo r\u00e1pido:1 &#8211; Magento \u00e9 OpenSource?Sim, vide a licen\u00e7a da vers\u00e3o community Open Software License 3.0.2 &#8211; E a qualidade de c\u00f3digo?Os caras deram uma pisada na bola em muitas coisas, mas parece que est\u00e3o cientes disso, tanto que o Magento 2.0 come\u00e7a a tratar com carinho a cobertura de testes(unitario, funcional e de integra\u00e7\u00e3o).Existem muitas pr\u00e1ticas aposentadas do PHP como o uso de &#8220;_&#8221; (underscore) para indicar m\u00e9todos e propriedades privadas, por exemplo. E erros em assinatura de m\u00e9todo(parametros opcionais antes de parametros obrigat\u00f3rios).O Magento 1 sofre de singletonite mas parece que o doutor j\u00e1 esta tratando o paciente e ele tende a melhorar na 2.0.Mas nunca se esque\u00e7a que o projeto Magento foi lan\u00e7ado em mar\u00e7o de 2008. O vers\u00e3o de php que estava sendo lan\u00e7ado na \u00e9poca era a\u00a0 5.2.6, mas seu desenvolvimento come\u00e7ou no inicio de 2007, indicando que provavelmente ele foi desenvolvido usando a 5.2.0 se os developers estivessem interessados em estar uptodate com o universo. Saiba criticar e tenha sabedoria para ver as consequencias dessa linha hist\u00f3rica.2 &#8211; O que dificulta o aprendizado do Magento?Duas coisas.O Magento \u00e9 flexivel ( e como diria Uncle Ben, com grandes poderes, grandes responsabilidades) e um dos recursos que ele utiliza para ser flexivel \u00e9 a configura\u00e7\u00e3o via XML de sobrecargas de m\u00e9todos e classes, uma esp\u00e9cie de OOP XML compliance. Sim essa \u00e9 uma das piadas em torno do Magento, a de que ele \u00e9 uma plataforma orientada a XML.A outra coisa \u00e9 a necessidade de conhecimento de dom\u00ednio. O magento n\u00e3o \u00e9 um framework gen\u00e9rico. Ele \u00e9 um framework de e-commerce escrito sobre um framework gen\u00e9rico(o ZF 1.*). \u00c9 muito facil encontrar c\u00f3digo que tenta aderir ao framework em todas as camadas da implementa\u00e7\u00e3o. O requisito de conhecimento de neg\u00f3cio aparece tamb\u00e9m no uso das interfaces de administra\u00e7\u00e3o e nas pr\u00e1ticas de modelagem. Se voc\u00ea n\u00e3o souber a dire\u00e7\u00e3o em termos de e-commerce vai se sentir perdido, mas nada que a pr\u00e1tica e estudo direcionados n\u00e3o superem.Programar em Magento sem conhecimento de dom\u00ednio \u00e9 achar que pode surfar por que viu um document\u00e1rio sobre fabrica\u00e7\u00e3o de pranchas. V\u00e1rios caldos, mas no final os persistentes sempre aprendem a surfar.\u00a03 &#8211; E quanto a lentid\u00e3o?N\u00e3o \u00e9 mentira que o Magento \u00e9 lento. De certa maneira isso se d\u00e1 devido a modelagem EAV e a quantidade de informa\u00e7\u00f5es que ele carrega com cada um dos objetos. A velocidade tamb\u00e9m \u00e9 afetada pelo modelagem flexivel. Ok, tem os memory leaks devido a referencia circular entre os objetos(o ).Mas \u00e9 verdade tamb\u00e9m que existem o APC, os mecanimos de indexa\u00e7\u00e3o que criam um modelo flat dos dados, os caches de dados e de p\u00e1gina e as integra\u00e7\u00f5es com Varnish e Redis e outros softwares que controlam alguns desses quisito.Mas enfim, quais seriam alguns dos itens que um programador deveria ficar de olho ao desenvolver utilizando Magento?1 &#8211; Acoplamento \ud83d\ude41 \ud83d\ude41Models, Helpers, Resources herdam de Mage_Core_Model_Abstract , Mage_Core_Helper_Abstract e Mage_Core_Model_Resource_*. Herdar essas classes \u00e9 herder funcionalidades e nem todo c\u00f3digo que voc\u00ea vai escrever precisa extender essas funcionaldiades.2 &#8211; Uso de singleton \ud83d\ude41Como disse anteriormente, no momento o magento esta em tratamento contra a singletonite, mas por enquanto eles est\u00e3o em todo lugar. Utilizar singletons afeta o consumo de mem\u00f3ria e modelagem de uma solu\u00e7\u00e3o.3 &#8211; Observer\/Observable \ud83d\ude42 \ud83d\ude42O pattern \u00e9 bem conhecido e amplamente aplicado. O Magento realiza bem esse trabalho e oferece uma extensa lista de trigger por padr\u00e3o. Ele tamb\u00e9m permite a adi\u00e7\u00e3o de novas triggers. Uma boa utiliza\u00e7\u00e3o desse recurso permite atender a muitos dos requisitos de neg\u00f3cio.4 &#8211; Custom Magento Admin Forms \ud83d\ude42O administrador do magento e a sua maleabilidade s\u00e3o reflexo de recursos que facilitam em muito a tarefa de cria\u00e7\u00e3o, altera\u00e7\u00e3o e manuten\u00e7\u00e3o. Em alguns casos adicionar uma configura\u00e7\u00e3o \u00e9 quest\u00e3o de uma adi\u00e7\u00e3o em um XML.tem mais, mas daqui para a frente eu voto por posts mais detalhados.Opa, quase ia esquecendo. Talvez voc\u00ea queira saber se recomendo a plataforma? Se estou gostando de programar com ela? Se pretendo colaborar no Magento 2.0?Sim! Sim! Sim!&nbsp;Compartilhe isso:\t\t\t\tImprimir(abre em nova janela)\t\t\t\tImprimir\t\t\tTweet\t\t\t\tCompartilhar no WhatsApp(abre em nova janela)\t\t\t\tWhatsApp\t\t\t"},{"@context":"https:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"2014","item":"https:\/\/ivonascimento.com\/2014\/#breadcrumbitem"},{"@type":"ListItem","position":2,"name":"05","item":"https:\/\/ivonascimento.com\/2014\/\/05\/#breadcrumbitem"},{"@type":"ListItem","position":3,"name":"21","item":"https:\/\/ivonascimento.com\/2014\/\/05\/\/21\/#breadcrumbitem"},{"@type":"ListItem","position":4,"name":"Eu, PHP e o Magento","item":"https:\/\/ivonascimento.com\/2014\/05\/21\/eu-php-e-o-magento\/#breadcrumbitem"}]}]