# XMLNuke

XMLNuke é um framework open source para PHP desenvolvido e mantido desde 2002. O grande objetivo do XMLNuke, desde o seu início, foi evitar o código espaguete no qual o PHP ficava mesclado com o HTML tornando difícil a leitura, manutenção e reutilização do código. A solução para época e que mantem-se até hoje em sua arquitetura, foi separar totalmente o código HTML do código PHP. Com isso o padrão para a época e que estava em ascensão foi a adotação do PHP para produzir essencialmente dados em XML e o XSLT para efetuar transformações do XML em HTML ou qualquer outro formato de documento.
Atualmente o XMLNuke além de produzir transformações em XML, também é capaz de gerar JSON e RDF nativamente. O XMLNuke roda nas versões do PHP 5.3 ou superiores e suporta os mais recentes padrões PSR definidos pelo PHP Framework Interoperability Group , em especial o PSR-0 para autoloader.
O projeto é desenvolvido e mantido por brasileiros, porém foi adotado a língua inglesa como padrão para a documentação e comunicação.

## História

Em 2002, em sua primeira versão, o XMLNuke tinha o objetivo de ser apenas um Content Management System (CMS). Desenvolvido como prova de conceito por João Gilberto Magalhães tinha como objetivo ter páginas estáticas em XML e um framework que em tese poderia ser desenvolvido em qualquer linguagem. A base inicial é que o mais importante eram os dados. Como prova de conceito, Wilson Freitas, que trabalhava com o João Gilberto à época, criou um porte do XMLNUke em Java. Entretanto, com a utilização percebeu-se que apenas dados estáticos em XML não eram suficientes e que era necessário transformar-se em um Framework para a produção de conteúdo. Em 2004, na implementação do projeto Panteon, João, Yuri Wanderley e Rafael Freitas, fizeram uma adaptação do framework para que pudesse executar um sistema. Nascia a primeira versão do sistema. Em 2005, nascia a versão C#, que foi mantida até 2013. Em 2006, houve um primeiro refactory da ferramenta, sem perder a essência ou compatibilidade. Em 2006, uma nova adapatação para o XMLNUke 2.0 que se manteve até 2007. Em 2008 foi lançada a versão 3.01 e 2 anos depois lançada a versão 3.5 já com suporte a PHP 5.3 e JSON, porém ainda mantendo compatibilidade com a versão anterior. Após alguns anos parados, em 2013 iniciou-se um grande trabalho de Refactoring para mudar de vez para a versão 5.3 sem suporte às versões anteriores do PHP, adoção do padrão PSR-0, adoção de Models para geração de conteúdo, mudança de hospedagem do código fonte do Sourceforge.net para o Github, além de um esforço para documentação do sistema.

## Arquitetura

O principio básico do XMLNuke está na premissa de que o conteúdo e a inteligência do código é mais importante do que como o mesmo irá se apresentar. Sendo assim a regra básica para o desenvolvimento é pensar: "Que dados eu quero para montar uma tela?". Por exemplo, ao fazer uma tela com visualizações de um determinado produto, o mais importante é saber que dados deverão estar presentes naquela tela. Sendo assim todo o esforço de programação é desenvolver os dados, deixando o layout se encaixando nos dados produzidos.
Atualmente com a adoção de padrões RESTful o conceito do XMLNuke passa a ser mais fácil de ser observado. É possível, por exemplo, criar um conjunto completo e complexo de APIs capazes de enviar e receber JSON e ter uma ou várias aplicações consumindo esses dados. O XMLNuke além de permitir isso em JSON em sua classe ServiceDocument, pode faze-lo enviando e recebendo dados em XML, além de fazer a transformação nativamente em sua plataforma utilizando as transformações XSLT.