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.
Atenção: Se seu banco é o MySQL, a base deverá ser no padrão InnoDB. não use tabelas feitas em MyISAM.
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).

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/
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
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

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)
Após a mensagem a pasta core deverá ter sido criada no mesmo diretório do sushi.exe com a seguinte constituição:

É 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.
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: 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.
Vamos usar 2 tabelas como exemplo como exemplo.
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();
}
/* 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(); }
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(); }
Faça download gratuitamente do sushi.rar e bom uso
Copyright Pablo Diego - pablodc@gmail.com | Todos os Diretos Reservados