<p>Olá pessoal, estou com um problema na criação de métodos no Perl, a minha estrutura atual é a seguinte:</p>
<p>C:\perl\lib\Teste\Controller</p>
<p>Na pasta controller (business manager) tenho o arquivo <a href="http://cliente.pm">cliente.pm</a></p>
<p>package Teste::Controller::Cliente;<br>sub Consulta {<br> use Teste::Model::Cliente; <br> my ($res, $conn) = Teste::Model::Cliente::Consulta();<br> return($res, $conn);<br>}<br>========================================================================= </p>
<p>C:\perl\lib\Teste\Model</p>
<p>Na pasta Model (Banco de Dados) tenho dois arquivos o <a href="http://cliente.pm">cliente.pm</a></p>
<p>package Teste::Model::Cliente;<br>sub Consulta {<br> use Teste::Model::MySql; <br> my $db = Teste::Model::MySql::Conecta();<br> if ($db ne "")<br> {<br> my $conn = Teste::Model::MySql::Query($db, "SELECT id_cliente, nome FROM cliente");<br>
my (@fields) = ("id_cliente", "nome"); <br> my %results;<br> @results{@fields} = ();<br> $conn->bind_columns(map { \$results{$_} } @fields); <br> return (\%results, sub { $conn->fetch() });<br>
}<br> else<br> {<br> return ("false", "false");<br> } <br>}<br>====================================================<br> <br>E o outro arquivo MySql.pm</p>
<p>package Teste::Model::MySql;<br>use DBI;</p>
<p>my $driver = "mysqlPP";<br>my $server = "localhost";<br>my $database = "banco";<br>my $user = "usuario";<br>my $password = "senha";<br> <br>sub Conecta<br>{<br>
my $url = "DBI:$driver:$database:$server";<br> my $dbh = DBI->connect( $url, $user, $password,<br> { PrintError => 0 });;<br> return($dbh);<br>}<br>sub Query<br>{<br> my($conn, $consulta) = @_;<br>
my $sql = qq{ $consulta };<br> my $sth = $conn->prepare( $sql );<br> $sth->execute() ; <br> return($sth);<br>}<br>========================================================</p>
<p>pasta onde estaria o site web</p>
<p>C:\inetpub\wwwroot\ListaCliente.pl<br> <br>use Teste::Controller::Cliente;<br>print "Content-type: text/html\n\n";<br>print "<html>\n";<br>print "<head>\n";<br>print " <title>Lista Clientes</title>\n";<br>
print "</head>\n";<br>print "<body>\n\n";<br>my ($res, $conn) = Teste::Controller::Cliente::Consulta();<br>if ($res ne "false") <br>{<br> while ($conn->()) {<br> print "$res->{id_cliente} - \n";<br>
print "$res->{nome} \n";<br> print "<br>";<br> }<br>}<br> <br>print "</body>\n";<br>print "</html>\n";<br>==========================================================</p>
<p>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) </p>
<p>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.</p>
<p>Estou usando esta estrutura em uma maquina com windows2003 + IIS + MySql.</p>
<p>Obrigado...</p>