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 continua
Depois 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.
ACESSAR CURSOS COM CERTIFICADOMuito Obrigado pela audiência e lhe desejo TERABYTES DE SUCESSO!!! 💻
Sobre o Autor
2 Comentários
Massa, Esses artigos, brilhante!
Li todos.
Estou no aguardo da sequência, aprendendo PHP!!!
Show de bola, fico feliz em ter ajudado!! Tamo junto!!