Como Criar Funções no PHP. Aprenda a reutilizar seu código

No ultimo artigo sobre PHP, vimos como fazer inserir registros no banco de dados MySQL. Hoje nós vamos aprender Como Criar Funções no PHP.
O próximo passo será mostrar a lista de produtos. Mas antes disso, vamos melhorar um pouco o que já escrevemos até então. Afinal, é fundamental que o programador escreva código que seja fácil de ser lido e mantido por outros desenvolvedores.
Veja também: Os Melhores Cursos GRATUITOS Com Certificado
Confira neste artigo:
Analisando o Código Atual
Primeiramente, logo abaixo encontra-se o nosso código atual, ao analisar ele, podemos ver que é possível melhorar alguns pontos:
<?php include("cabecalho.php"); ?> <?php $nome = $_GET["nome"]; $preco = $_GET["preco"];
$query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
$conexao = mysqli_connect('localhost', 'root', '', 'loja'); if(mysqli_query($conexao, $query)) { ?> <p class="alert-success"> Produto: <?= $nome; ?>, preco: <?= $preco; ?> - adicionado com sucesso! </p> <?php } else { ?> <p class="alert-danger"> ERRO - O produto não foi adicionado! </p> <?php } ?><?php include("rodape.php"); ?>Esse if que verifica se deu sucesso está difícil de ler. Vamos extrair para uma variável:
$resultadoDaInsercao = mysqli_query($conexao, $query);if($resultadoDaInsercao) { // codigo continuaDepois de extrair o resultado da inserção, colocando dentro de uma variável, o comando If já ficou melhor, ficou mais fácil de ser lido.
Criando Uma Função
Agora vamos tentar extrair esse bloco de código e inserir para uma função com um nome mais semântico. Para criar uma função devemos utilizar a palavra function conforme exemplo abaixo:
function insereProduto($nome, $preco) { $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})"; $resultadoDaInsercao = mysqli_query($conexao, $query);}A função está quase pronta. Para que funcione bem, ela precisa receber a conexão também (veja a variável conexao). A função precisa também retornar o resultado:
function insereProduto($conexao, $nome, $preco) { $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})"; $resultadoDaInsercao = mysqli_query($conexao, $query); return $resultadoDaInsercao;}Para usá-la, fica fácil, basta chamar a função insereProduto passando os parâmetros de conexão, nome e preço conforme exemplo abaixo:
if(insereProduto($conexao, $nome, $preco)) { // continua aqui}Além disso, a vantagem de se criar uma função e a reutilização do código. Basta invocar a função sempre que quisermos inserir um produto. O código fica muito mais fácil de ser mantido.
Depois das alterações feitas o nosso código fica assim:
<?php include("cabecalho.php"); ?> <?php $nome = $_GET["nome"]; $preco = $_GET["preco"];
function insereProduto($conexao, $nome, $preco) { $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})"; $resultadoDaInsercao = mysqli_query($conexao, $query); return $resultadoDaInsercao; }
$conexao = mysqli_connect('localhost', 'root', '', 'loja');
if(insereProduto($conexao, $nome, $preco)) { ?> <p class="alert-success"> Produto: <?= $nome; ?>, preco: <?= $preco; ?> - adicionado com sucesso! </p> <?php } else { ?> <p class="alert-danger"> ERRO - O produto não foi adicionado! </p> <?php } ?><?php include("rodape.php"); ?>Leia também: Os 6 Melhores Livros Para Aprender PHP Sozinho
Melhorando as Cores
Agora vamos fazer algumas alterações nas cores das mensagens. Neste momento a mensagem de sucesso é apresentada com fonte e fundo verde.
Além disso, será que é possível fazer com que apenas o texto fique verde? Claro que sim, para isso, basta trocar a classe alert-success e alert-danger para text-success e text-danger.
if(insereProduto($conexao, $nome, $preco)) { ?> <p class="text-success"> Produto: <?= $nome; ?>, preco: <?= $preco; ?> - adicionado com sucesso! </p> <?php } else { ?> <p class="text-danger"> ERRO - O produto não foi adicionado! </p> <?php } ?>Observação:
Depois tire um tempo para estudar as classes do Bootstrap, pois ele realmente nos ajuda a melhorar a interface do nosso site.
Inserindo Barra de Navegação
Outro ponto muito importante que devemos nos preocupar é a navegabilidade do nosso site.
Ou seja, se você reparar, da página principal não há como chegar na página do formulário; do formulário não há como chegar na página principal.
Portanto, vamos melhorar esse ponto alterando o cabecalho.php, criando um div novo. Veja que usamos as várias classes do Bootstrap, que começam com nav*. Essas classes nos ajudam a criar menus:
<html> <head> <title>Minha Loja</title> <meta charset="utf-8"> <link rel="stylesheet" href="css/bootstrap.min.css" > <link rel="stylesheet" href="css/loja.css"> </head> <body> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <a href="index.php" class="navbar-brand">Minha Loja</a> </div> <div> <ul class="nav navbar-nav"> <li><a href="produto-formulario.php">Adiciona Produto</a></li> <li><a href="sobre.php">Sobre</a></li> </ul> </div> </div><!-- container acaba aqui --> </div> <div class="container"> <div class="principal">Depois de salvar o arquivo cabecalho.php o resultado deve ser igual a imagem abaixo:

Agora sim, esta muito melhor. Nosso site já está mais navegável.
Utilizando Tabela no Formulário
Logo depois, vamos agora melhorar o formulário, que ainda não está bonito. Para isso, vamos fazer uso de tabelas:
<?php include("cabecalho.php"); ?>
<h1>Formulário de Cadastro</h1> <form action="adiciona-produto.php"> <table class="table"> <tr> <td>Nome</td> <td><input type="text" name="nome" /></td> </tr> <tr> <td>Preço</td> <td><input type="number" name="preco" /></td> </tr> <tr> <td><input type="submit" value="Cadastrar" /></td> </tr> </table> </form>
<?php include("rodape.php"); ?>Depois de utilizar tabela em nosso fomulário, o resultado deve ser igual a imagem abaixo:

Agora está melhor. O estilo de tabelas do Bootstrap são amigáveis.
Podemos também utilizar a classe form-control nas caixas de texto, que é o estilo próprio do Bootstrap para esse tipo de elemento.
No botão, podemos utilizar os estilos btn btn-primary.
Melhorando a Mensagem de Erro
Para finalizar esse artigo, vamos melhorar a mensagem de erro. Neste momento, quando algo falha, apenas exibimos uma mensagem avisando o usuário, mas não explicamos bem qual foi o erro.
Vamos resolver isso, exibindo o erro que o próprio MySql nos envia. Para isso, basta usar o mysqli_error:
<?php if(insereProduto($conexao, $nome, $preco)) { ?> <p class="text-success"> Produto: <?= $nome; ?>, preco: <?= $preco; ?> - adicionado com sucesso! </p> <?php } else { $msg = mysqli_error($conexao); ?> <p class="text-danger"> O produto <? = $nome; ?> não foi adicionado: <?= $msg ?> </p> <?php } ?>Depois de aplicar as alterações acima, no momento em que faço a inclusão de um produto sem informar o preço, é apresentado a mensagem retornada do MySql conforme imagem abaixo:

**
Conclusão
Em conclusão, chegamos ao fim de mais um artigo sobre PHP, aprendemos:
Criar funções – Uma técnica super comum e muito importante no mundo da programação, com isso podemos separar blocos de códigos que poderão ser reutilizados.
Capturar a mensagem de erro que vem do MySql, dessa forma podemos entender exatamente o que o MySQL esta reclamando, facilitando o entendimento dos erros de banco de dados.
Enfim, espero que este artigo tenha te ajudado a dar mais um passo em busca de seus objetivos. 😉
Gostou do conteúdo?
Comente aqui em baixo o que você achou desse artigo.
Não perca tempo! Dê um passo decisivo em direção ao seu sucesso profissional agora mesmo. Basta clicar no botão abaixo e abrir as portas para mais de 1400 cursos completos, todos com certificados válidos.
Muito Obrigado pela audiência e lhe desejo TERABYTES DE SUCESSO!!! 💻




