Mensagem Final do Sushi

Projeto Sushi

O que é?

O Sushi é um RAD, Rapid application development (RAD), também conhecido como Desenvolvimento Rápido de Aplicação, é um modelo de processo de desenvolvimento de software iterativo e incremental que enfatiza um ciclo de desenvolvimento extremamente curto.

O RAD considera o uso de técnicas de quarta geração, trabalha com a reutilização de componentes de programa existentes quando possível, ou cria componentes reusáveis.

sushi.exe é um aplicativo que roda na plataforma Win32. com ele é possível gerar um conjunto scripts ".php" a partir de uma conexão MySQL ou PostgreSQL.

Os arquivos gerados compreendem a sua camada de dados e domínio e deve ser usado em seu projeto PHP5.

Com as camadas de aplicação gerada pelo sushi.exe, será possível o desenvolver seu projeto PHP5 OOP (Orientado). Onde não será preciso escrever comandos SQL ou abrir conexões com o banco no braço. Deixando esta enfadonha tarefa conta dos objetos pré-fabricados.

Requesitos

Atenção: Se seu banco é o MySQL, a base deverá ser no padrão InnoDB. não use tabelas feitas em MyISAM.

Confuguração e funcionamento

Conectores ODBC MySQL ou PostgreSQL

O Conector ODBC MySQL ou PostgreSQL ANSI são drives de conexão e devem está devidamente instalados em seu Windows.

Podendo ser verificado no Painel de Controle do windows no seguinte caminho: Painel de controle, Ferramentas administrativas, Fonte de dados(ODBC).

Informações do ODBC

Caso seu windows não tenha este drive instalado, ele pode ser baixado e instalado gratuitamente em:
http://dev.mysql.com/get/Downloads/Connector-ODBC/3.51/
mysql-connector-odbc-3.51.22-win32.msi/from/http://mysql.mirrors.pair.com/
. ou http://www.postgresql.org/ftp/odbc/versions/msi/

Sushi.ini

No sushi.ini é um arquivo com 5 (cinco) linhas que devem conter host (na primeira linha), login (na segunda linha), senha (na terceira linha), schema (na quarta linha) e banco (na quinta linha mysql/postgresql) da sua fonte MySQL ou PostgreSQL.

O sushi.ini deve está sempre no mesmo diretório do sushi.exe e é através dele que o sushi.exe estabelecerá uma conexão ODBC com MySQL ou PostgreSQL para gerar os scripts .php

Sushi.exe

Este aplicativo Win32 é executado em segundo plano, ou seja, não abrirá nenhuma apresentação ou janela. Ao concluir a tarefa ele deverá mostrar a seguinte mensagem

Mensagem Final do Sushi

O tempo de execução do sushi.exe dependerá da quantidade de tabalas e chaves estrangeiras da base de dados. Além, é claro, da largura de banda de conexão (caso o banco não esteja local)

Resultado

Após a mensagem a pasta core deverá ter sido criada no mesmo diretório do sushi.exe com a seguinte constituição:

Arquivos gerados

A pasta core

É o diretório onde se estabelece a sua camada entre as entidades (objetos) e o seu o banco MySQL.

Todos os scripts gerados abaixo da para core não devem ser modificado à mão, caso tenha havido alterações nas tabelas, o procedimento correto será rodar o sushi.exe deverá ser executado novamente.

Arquitetura

A arquitetura adotada pelo parão do sushi sugere simplicidade e pragmatismo sem abrir mão do bom senso.

observe que a estrutura de 3 camadas fazem: apresentação, controle e persitência

Acoplamento e Coesão (rápida definição)

Acoplamento: pouca "ligação" intra-módulos. Ex:

a Classe Pessoa não tem que saber o que existe na classe Perfil. ela apenas usa o Perfil.

Coesão: grau de conectividade entre funções e elementos (Coisas que "cheiram igual" devem estar juntas) e cada entidade deve fazer apnas o que lhe lhe cabe a ser feito.

Utilizando as classes do Sushi

Vamos usar 2 tabelas como exemplo como exemplo.

tabelas

Repositório

Vejamos agora como persistir os dados na base, que pode ser MySQL ou PostgreSQL, o que para agente é indiferente.

Começamos então com a inclusão o método add()

/* Incluindo um registro */
	
include("core/includes.php");
	
$objRepositorioUsuario = new RepositorioUsuario();
$objUsuario = new Usuario('pablodc');
$objUsuario->setNome('PABLO DIEGO');
$objUsuario->setSenha(md5('123456'));
$objUsuario->getPerfil()->setCodperfil(1);

try{
	
$objRepositorioUsuario->add($objUsuario);
echo "Usuário cadastrado com sucesso!";

}catch(Exception $e){

	echo $e->getMessage();

}
	

Agora teremos a alteração com o método alt()

/* Alterando um registro */

include("core/includes.php");

$objRepositorioUsuario = new RepositorioUsuario();
$objUsuario = new Usuario('pablodc');
$objUsuario->setNome('PABLO DIEGO C DE S COSTA');

try{

	$objRepositorioUsuario->alt($objUsuario);
	echo "Usuário alterado com sucesso!";

}catch(Exception $e){

	echo $e->getMessage();

}
	

Para pegarmos o objeto populado usamos o método get()

/* Pegando um registro */

include("core/includes.php");

$objRepositorioUsuario = new RepositorioUsuario();

try{

	$objUsuario = $objRepositorioUsuario->get(new Usuario('pablodc'));
	echo "Nome: ".$objUsuario->getNome()."<br />";
	echo "Perfil: ".$objUsuario->getPerfil()->getNomeperfil();

}catch(Exception $e){

	echo $e->getMessage();

}
	

e o delete com o método del()

/* Deletando um registro */

include("core/includes.php");

$objRepositorioUsuario = new RepositorioUsuario();

try{

	$objRepositorioUsuario->del(new Usuario('pablodc'));
	echo "Usuário excluido com sucesso!";

}catch(Exception $e){

	echo $e->getMessage();

}
	

Consultas

/* Litando todos os usuários */

include("core/includes.php");

$objConsultaUsuario = new ConsultaUsuario();

/* filtrando (apenas usuários do perfil '1') ou (nomes começando com a letra 'a') */
$objConsultaUsuario->byConsultaPerfil->byCodperfil('1','=','and');
$objConsultaUsuario->byNome('a%','like','or');

/* ordenando por nome do usuário */
$objConsultaUsuario->orderByNome('asc');


try{

	$objConsultaUsuario->execute();
	while($objUsuario = $objConsultaUsuario->fetch()){
		echo "Nome: ".$objUsuario->getNome()." - ";
		echo $objUsuario->getPerfil()->getNomeperfil()."<br />";
	}

}catch(Exception $e){

	echo $e->getMessage();

}
	

Controladores

Toda a parte de Repositório poderá ser feita de maneira emcapsulada e mais produtivamente utilizando os Contraladores

Começamos então com a inclusão o método inclui()

/* Alterando um usuário via controlador */

include("core/includes.php");

/* neste caso o formulário foi submetido via post, mas poderia ser get */
$objControladorUsuario = new ControladorUsuario($_POST);

try{

	$objControladorUsuario->inclui();
	echo $objControladorUsuario->getMensagem();

}catch(Exception $e){

	echo $e->getMessage();

}
	

de forma similar usamos no método altera()

/* Incluindo um usuário via controlador */

include("core/includes.php");

/* neste caso o formulário foi submetido via post, mas poderia ser get */
$objControladorUsuario = new ControladorUsuario($_POST);

try{

	$objControladorUsuario->altera();
	echo $objControladorUsuario->getMensagem();

}catch(Exception $e){

	echo $e->getMessage();

}
	

e a exclusão com o método exclui()

/* Excluindo um usuário via controlador */

include("core/includes.php");

/* neste caso o formulário foi submetido via post, mas poderia ser get */
$objControladorUsuario = new ControladorUsuario($_POST);

try{

	$objControladorUsuario->exclui();
	echo $objControladorUsuario->getMensagem();

}catch(Exception $e){

	echo $e->getMessage();

}
	

Download

Faça download gratuitamente do sushi.rar e bom uso

sushi.rar


Copyright Pablo Diego - pablodc@gmail.com | Todos os Diretos Reservados