[Cascavel-pm] Criando Metodos perl + windows

Ricardo Zanotto Zaniol zanottors em gmail.com
Quarta Abril 15 13:29:06 PDT 2009


Olá pessoal, estou com um problema na criação de métodos no Perl, a minha
estrutura atual é a seguinte:

C:\perl\lib\Teste\Controller

Na pasta controller (business manager) tenho o arquivo cliente.pm

package Teste::Controller::Cliente;
sub Consulta {
    use Teste::Model::Cliente;
    my ($res, $conn) = Teste::Model::Cliente::Consulta();
    return($res, $conn);
}
=========================================================================

C:\perl\lib\Teste\Model

Na pasta Model (Banco de Dados) tenho dois arquivos o cliente.pm

package Teste::Model::Cliente;
sub Consulta {
    use Teste::Model::MySql;
    my $db = Teste::Model::MySql::Conecta();
    if ($db ne "")
    {
        my $conn = Teste::Model::MySql::Query($db, "SELECT id_cliente, nome
FROM cliente");
        my (@fields) = ("id_cliente", "nome");
        my %results;
        @results{@fields} = ();
        $conn->bind_columns(map { \$results{$_} } @fields);
        return (\%results, sub { $conn->fetch() });
    }
    else
    {
        return ("false", "false");
    }
}
====================================================

E o outro arquivo MySql.pm

package Teste::Model::MySql;
use DBI;

my $driver   = "mysqlPP";
my $server   = "localhost";
my $database = "banco";
my $user     = "usuario";
my $password = "senha";

sub Conecta
{
   my $url = "DBI:$driver:$database:$server";
   my $dbh = DBI->connect( $url, $user, $password,
                               { PrintError => 0 });;
   return($dbh);
}
sub Query
{
   my($conn, $consulta) = @_;
   my $sql = qq{ $consulta };
   my $sth = $conn->prepare( $sql );
   $sth->execute() ;
   return($sth);
}
========================================================

pasta onde estaria o site web

C:\inetpub\wwwroot\ListaCliente.pl

use Teste::Controller::Cliente;
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "  <title>Lista Clientes</title>\n";
print "</head>\n";
print "<body>\n\n";
my ($res, $conn) = Teste::Controller::Cliente::Consulta();
if ($res ne "false")
{
    while ($conn->()) {
        print "$res->{id_cliente} - \n";
        print "$res->{nome} \n";
        print "<br>";
    }
}

print "</body>\n";
print "</html>\n";
==========================================================

Essa estrutura até funciona mas quando eu manipulo os registros na camada
controller (Cliente.pm) eu nao consigo listar novamente os registros na
camada de visualização(ListaCliente.pl)

Gostaria de saber se alguem tem um exemplo melhor de como dividir a
aplicação em camadas, e como eu poderia modificar essa estrutura de uma
forma mais simplificada.

Estou usando esta estrutura em uma maquina com windows2003 + IIS + MySql.

Obrigado...
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20090415/bf2cac8f/attachment.html>


Mais detalhes sobre a lista de discussão Cascavel-pm