Strict Standards: Declaration of engenhariaController::index() should be compatible with Controller::index($templete = false, View &$view = NULL) in /home/alexsand/public_html/applications/xpt/controllers/engenhariaController.php on line 7

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/alexsand/public_html/applications/xpt/controllers/engenhariaController.php:7) in /home/alexsand/public_html/componentes/mvc/class.controller.php on line 871

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/alexsand/public_html/applications/xpt/controllers/engenhariaController.php:7) in /home/alexsand/public_html/componentes/mvc/class.controller.php on line 871

Warning: Cannot modify header information - headers already sent by (output started at /home/alexsand/public_html/applications/xpt/controllers/engenhariaController.php:7) in /home/alexsand/public_html/componentes/mvc/class.controller.php on line 1105

Warning: Cannot modify header information - headers already sent by (output started at /home/alexsand/public_html/applications/xpt/controllers/engenhariaController.php:7) in /home/alexsand/public_html/componentes/mvc/class.controller.php on line 1106

Warning: Cannot modify header information - headers already sent by (output started at /home/alexsand/public_html/applications/xpt/controllers/engenhariaController.php:7) in /home/alexsand/public_html/componentes/mvc/class.controller.php on line 1107

Warning: Cannot modify header information - headers already sent by (output started at /home/alexsand/public_html/applications/xpt/controllers/engenhariaController.php:7) in /home/alexsand/public_html/componentes/mvc/class.controller.php on line 1108
Conheça a Engenharia de Software aplicada | XPT Framework

XPT Framework


Engenharia de Software

Utilizando as atuais e as mais avançadas técnicas de desenvolvimento de software para web, XPT Framework, foi inspirado na plataforma Java e Ruby On Rails com total orientação a objeto para PHP.

MVC

XPT Framework usa a mais avançada técnica, o MVC (Model, View, Controller) possibilita separar todo conteúdo da sua aplicação, maximizando a fase de manutenção que também facilita o programador fazer todo o web site sem se preocupar com o design, podendo assim dividir tarefas de design e programação que antes era praticamente impossível executa-las em tempos diferentes.

MVC Diagram 1 MVC Diagram 2

Boas praticas de desempenho

Também baseado na “Best Practices for Speeding Up Your Web Site” (Boas praticas de desempenho para seu site) o XPT Framework obteve nota máxima em sua classificação, pois conta com todos os recursos abaixo:

YSlow Performance Grade
Make fewer HTTP requests

Segundo Steve Souders, que é o Chief Performance do time de performance do Yahoo!, 80% do tempo gasto por um usuário numa página é carregando o front-end e que a maior parte desse tempo de carregamento é tomado pelo download de imagens, scripts, css, flash, etc.

Para garantir esta classificação e manter toda organização de arquivos separados, o XPT Framework permite carregar vários arquivos Javascript e CSS em um único URI, veja o exemplo:


<script type="text/javascript" src="application/resources|js/global/jq/ui/corner/jquery.corner.pack.js|js/global/jq/ui/rssli/rssli.js|js/global/jq/ui/box/lightbox.js|js/global/jq/ui/form/form.pack.js"></script>

Repare que o atributo src contem vários scripts, eles estão separados por uma |.

Usufruindo deste recurso e utilizando mais outras técnicas como o “CSS Sprites” e “Mapa de Imagens”, contribuirá por um aplicativo muito veloz.

Add an Expires header

O cabeçalho Expires diz ao browser a data que os componentes daquela requisição irão expirar, ou seja, se você determina um prazo de 5 anos para uma página expirar, todos componentes nela contidos somente expirarão em 5 anos.

Com isso, todos os componentes (imagens, CSS, scripts, Flash, etc.) serão colocados em cache e, nas próximas visitas, o número de requisições HTTP será menor pois os componentes poderão ser acessados diretamente do cache do browser.


<IfModule mod_expires.c>
	ExpiresActive On
	ExpiresByType image/gif "access plus 1 month"
	ExpiresByType image/jpeg "access plus 1 month"
	ExpiresByType image/jpg "access plus 1 month"
	ExpiresByType image/png "access plus 1 month"
	ExpiresByType text/css "access plus 1 month"
	#ExpiresByType text/javascript "access plus 6 month"
	#ExpiresByType application/x-javascript "access plus 6 month"
</IfModule>

Editando seu arquivo .htaccess com este script pouco conhecido ganhará performance.

Gzip components

O XPT Framework usa as recomendações de performance e não poderia deixar de lado a incrível técnica chamada Gzip.

Esta técnica é faz com que os componentes sejam compactados através da requisição HTTP para que o tempo de resposta seja menor, fazendo com que os componentes sejam carregados mais rápidos no cliente.

Abaixo veja como é fácil ativar e desativar o recurso e como é feito seu tratamento interno:


	private $checksum_data_nocache = 0;
	/**
	* Constante usada para definir se a saida HTML pode ser cacheada ou não.
	* Lembrando que so fica em cache se tambem a opção estiver definida no config.php
	* @var bool
	*/
	const OUTPUT_CACHEABLE = false;
	const OUTPUT_GZIPED = true;

	public function __construct(&$config,$controller_name = self::CONTROLLER_NAME,$action='index'){
		parent::$config = &$config;



if( $config['gzip']['enabled'] && $gziped ){ /** * Devido a um bug de compressão de dados no MSIE 6.0, os headers não são salvos. * Com isto é impossível fazer cache com gzip ativo. */ if( ($this->is_MSIE6() && !$cacheble) || !$this->is_MSIE6() ) ob_start ("ob_gzhandler"); }

Neste ultimo bloco é feito um tratamento do bug no IE 6 que deixe de usar o modo Gzip quando se utiliza em conjunto o cache lado cliente.

Minify JS

Esta técnica consiste em reduzir o tamanho do código javascript das tags HTML SCRIPT, removendo espaços, tabulações e comentários deixando apenas o que é necessário para o funcionamento do código.

Isto é feito após a primeira execução da pagina, pois a demais requisições são feitas a partir dos layouts compilados e os layouts originais não são alterados.

Veja abaixo como é fácil ativar o recurso:


	public function index($templete = self::CONTROLLER_NAME){

		$this->view->loadModule('output','packjs');
		parent::index($templete,$this->view);

	}


Configure ETags

ETags é o acrônimo para Entity Tags. Isto é um mecanismo que servidores WEB e browsers usam para determinar se o arquivo do servidor é o mesmo que está no cache do browser.

O valor da ETag é gerado dependendo das configurações do servidor e de acordo com as características atuais do arquivo.

O XPT Framework usa headers como estes para cache, pois é muito útil para dizer se um arquivo PHP (fisicamente ou dinamicamente, ou seja, banco de dados), JS, CSS sofreu modificações evitando assim downloads desnecessários garantindo o baixo uso de banda.

Entrega por estágios

É um framework modular que se tem o total suporte ao clico de vida da engenharia de software conhecida como "Entrega por estágios" onde são desenvolvidas as fases de Especificação, Análise e Desenho Inicial de todo o sistema e em seguida são entregues ao cliente liberações parciais do produto e após o entendimento de todo o problema, implementa-se o sistema por partes tendo como vantagem a utilização do sistema a cada modulo entregue.

Ex: Entrega-se o modulo cadastro de cliente. (Seu cliente poderá utilizar o cadastro antes mesmo do restante do software concluído.)

URLs amigáveis

O XPT Framewerk conta com o uso de URLs amigáveis com mod_rewrite do apache possibilitando URLs intuitivas e com isto ganhamos com SEO (Search Engine Optimization), usabilidade e acessibilidade dos web sites.

Abstração de banco de dados

Com as classes de abstração de banco dados o XPT Framework suporta atualmente dois tipos de banco de dados, Microsoft SQL Server e MySQL, sendo configurável no arquivo config.php na pasta config, que oferece o poder de troca de banco de dados sem se preocupar.

Contudo é possível criar novos drivers de forma muito rápida, pois basta herdar as classes de interface (IDBDriver) e abstrativas (aDBAdapter, aDBDriver) de banco de dados e terás um novo driver.

Exemplo:


	require_once 'abstract.DBDriver.php';
	require_once 'class.mssqlAdapter.php';

	final class clsMSSQL extends aDBDriver implements iDBDriver{
		/**
		* Para executar query sql e retornar um RecordSet.
		* @access Public
		* @param string $q
		* @return clsMSSQLAdapter
		*/
		public function Execute($q){



require_once 'abstract.DBAdapter.php'; final class clsMSSQLAdapter extends aDBAdapter{

Observe que foi criando um drive MSSQL que estende de aDBDriver que é implentação de IDBDriver.

No segundo exemplo é criado uma nova classe Adapter herdada de aDBAdapter para manipular os dados do novo driver.

Creative Commons License
XPT Framework by Alexsandro is licensed under a Creative Commons Atribuição-Vedada a Criação de Obras Derivadas 2.5 Brasil License.
Based on a work at xpt.alexsandro.com.br.
2007 - 2012 XPT Framework