Archive for September, 2008
Classe de Conexão – PHP
Hoje vou mostrar como utilizar uma classe de conexão php/mysql. Quando comecei a trabalhar com php, fazia a conexão em cada página. Com isso, além de demandar muito tempo, se eu precisasse alterar o host de conexão, por exemplo, tinha que mexer em todos os arquivos que utilizavam aquele trecho de código.
Depois de um tempo, comecei a colocar essas configurações em um arquivo separado, e incluir este arquivo em minhas páginas. Se precisasse alterar algo relacionado com a configuração da conexão, alterava em um único arquivo.
Mas ainda existiam problemas. Escrever as funções mysql_fetch_array, mysql_num_rows, além de deixar o código “sujo”, deixa o sistema muito preso na tecnologia utilizada. Por exemplo, e se eu quisesse utilizar SQL Server, ao invés de mySql? Deveria alterar todas as menções de mysql_xxx para mssql_xxx, por exemplo (claro que nem todas as consultas sql seriam compatíveis, mas isto é outro assunto).
Por isso veio a necessidade de ENCAPSULAR essas funcionalidades relacionadas à conexão.
Então comecei a utilizar classe para realizar conexão. Vou mostrar uma das classes de conexão que desenvolvi, e que utilizo em meus projetos. Para não deixar esse post muito grande, não vou explicar o que significa cada detalhe da implementação (que não é complicada).
<?php
class Conexao{
/*
——————————————
| Classe de conexão
——————————————
| Adriano Godoy
——————————————
| www.adrianogodoy.com
——————————————
| Métodos:
| * desconectar -> encerra a conexão
| * consulta -> executa query sql
| * conta -> número de reultados
| * busca -> array resultado do select
|——————————————|
| Utilize à vontade ;- )
——————————————
*/protected $user = “root”; // Usuário do banco de dados
protected $senha = “123″; // Senha do banco de dados
protected $bd = “banco_de_dados”; // Nome do Banco de dados MySQL
protected $server = “localhost”; //host – servidor
protected $con;//Construtor
public function __construct() {
$this->con = mysql_connect($this->server, $this->user, $this->senha) or die(“Falha ao conectar com o banco de dados”);
mysql_select_db($this->bd, $this->con);
}//Encerra a conexão
public function desconectar() {
mysql_close($this->con);
}//Executa query sql
public function consulta($sql) {
$res = mysql_query($sql,$this->con);
if(!$res){
return false;
}else{
if(substr($sql,0,6) == “INSERT” && mysql_insert_id($this->con)){
return mysql_insert_id($this->con);
}else{
return $res;
}
}
}//Número de resultados que atendem a uma dada consulta
public function conta($res) {
if($res){
return mysql_num_rows($res);
}
}//Array resultado do select
public function busca($res) {
if($res){
return mysql_fetch_array($res);
}
}
} //fim da classe
?>
Para utilizá-la, no início de seu código você deve incluir o arquivo com essa classe (lembre-se de seguir convenções: inicie nome de classes com letra maiúscula, e o nome do arquivo deve ser o mesmo da classe) e instancia um objeto da classe, da seguinte forma:
include_once(“classes/Conexao.php”); //inclui
$conexao = new Conexao(); //instancia
Pronto! Agora, para realizar uma consulta:
$consulta1 = $conexao->consulta(“SELECT * FROM tabela WHERE x = y”);
e para obter os dados (mysql_fetch_array):
$dados1 = $conexao->busca($consulta1);
vale dentro do while também, caso a consulta vá retornar mais de um registro:
while($dados1 = $conexao->busca($consulta1))
Você pode contar quantos registros foram afetados pela consulta:
$cont1 = $conexao->conta($consulta1);
e, após terminar suas consultas, fechar a conexão:
$conexao->desconectar();
É isso, espero que seja útil para quem está começando. Abraço.
Desenvolvimento de Software – Dr. Analista
Posted by Godoy in Engenharia de Software on September 15th, 2008
1- Desenvolva software iterativamente
2- Gerencia Requisitos
3- Utilize arquiteturas baseadas em componentes
4- Utilize modelagem visual
5- Verifique qualidade continuamente
6- Mantenha alterações sob controle
Se você trabalhasse em uma empresa pequena, com recursos limitados, onde você pudesse escolher apenas um destes itens, qual você escolheria?
Essa pergunta foi feita por meu professor, na aula de Engenharia de Software.
De certo modo, todos os 6 itens estão relacionados e, na teoria, são indispensáveis. Mas e se de fato tivéssemos que escolher um deles para seguir rigorosamente?
De nada adianta o desenvolvimento iterativo sem qualidade. Não estou de forma alguma desmerecendo o RUP e o desenvolvimento iterativo. Muito pelo contrário, cada vez que me aprofundo no estudo de processos de desenvolvimento rápido, mais interessado fico. O que quero dizer é que em nada adianta repetir fases do processo à medida que o desenvolvimento avança, se o processo for uma merda ruim.
De maneira análoga, não resolve muita coisa uma arquitetura baseada em componentes, se os componentes não possuirem qualidade, se foram mal projetados.
Acredito que, como ocorreu na aula, a grande maioria ficaria entre os itens 2 e 4. De fato, um dos problemas que mais afetam uma empresa pequena é a análise incorreta dos requisitos. Após desenvolvido, o software retorna várias vezes porque não estava do modo que o cliente queria. E a culpa é de quem? Do cliente que não disse desde o início o que queria? Ou do analista que não soube abstrair da conversa com o cliente as informações de que precisava? Veja bem, quando estou passando mal e vou ao médico, tenho que dizer todos os sintomas de forma detalhada? “Senhor médico, estou com dor de cabeça. Além disso, estou com a perna direita doendo, tem uma áfita na minha boca (no canto superior esquerdo), minha unha está incravada e estou tendo alucinações. Ah.. e faz 3 dias que não me alimento.”
É claro que não é assim que deve funcionar. “Estou com dor de cabeça” ou “Preciso de um software para X”. E o médico/analista é quem deve realizar as devidas inferências, para identificar as causas do problema, e decidir o melhor modo de resolver o problema.
Apresentação Seminários – Bibliotecas Ajax
Na sexta-feira (29/08) apresentamos os seminários na Std1 (empresa onde trabalho), para discutir sobre qual framework utilizaríamos em nossos projetos, já que atualmente não existe um padrão (cada programador utiliza o de sua preferência).
Em minha apresentação, foquei no que chamei de “família mootools”. O mootools possui muitas extensões fantásticas. Calendários, tabs, alertas personalizados… e o mocha-UI, uma ferramenta fantástica com uma interface altamente dinâmica. Boa parte de minha apresentação se baseou no protótipo que desenvolvi: um sistema administrativo com a interface mocha.
Nesse link tem muitas extensões do mootools, dentre eles o mocha-UI: http://www.dotes.com.br/mootools/
Após todas as apresentações (Mootools, JQuery, Spry, Scriptaculus e EXT), ocorreu uma extensa discurssão sobre qual era “O melhor” framework.
E o qual foi escolhido?? Nenhum ;-)
Chegamos à um consenso: todos eles possuem pontos forte e fracos, e no fundo (com diferenças na maioria das vezes sintática) todos tinham as mesmas funcionalidades. Decidimos, então, que o ideal seria utilizarmos cada uma quando mais convir, usufruindo das particularidades e dos pontos fortes de cada um no momento conveniente.
Abaixo está minha apresentação.. não tem muitas informações (apenas tópicos, que sem explicação permanecem sem sentido). Mas vale a pena dar uma olhada nos links que coloquei na apresentação.
