Bem vindos ao curso PHP Strings: Operações e expressões regulares! Neste treinamento construiremos o formulário de cadastro de uma loja virtual, pedindo informações do usuário, como nome, gênero, e-mail, senha, telefone e endereço - ou seja, informações que normalmente são requeridas em uma compra.
Quando o usuário clicar em "Cadastrar", será exibida uma tela mostrando as informações preenchidas, incluindo nome, sobrenome, usuário e uma senha validada. Além disso, usaremos expressões regulares para validar o número de telefone, incluiremos no código filtros de validação do próprio PHP, como o filter_var
e usaremos funções para juntar strings (por exemplo, o endereço e o CEP).
Faremos tudo isso utilizando recursos bastante interessantes da linguagem. Bons estudos!
Para prosseguir com esse curso, será necessário baixar uma pasta zipada com os arquivos que servirão como base para o resto do curso: cadastro.php
, form_cadastrar.php
e boostrap.min.css
.
Para acessarmos esses arquivos pelo navegador, usaremos o servidor embutido do PHP, que inicializaremos pelo Prompt de Comando usando php -S 0.0.0.0:3000
. Feito isso, conseguiremos acessar o nosso formulário na URL http://localhost:3000/form_cadastrar.php.
Imagine que temos uma loja virtual e, para que o usuário consiga fazer uma compra, ele precisa primeiro se cadastrar. Nesse formulário, temos diversas informações como nome, gênero, e-mail e senha, e o clique em "Cadastrar" leva a uma próxima tela, na qual exibimos para o usuário as informações coletadas no formulário.
Nosso objetivo, inicialmente, é exibirmos o campo "Primeiro nome". Para editarmos arquivos PHP nesse curso, usaremos o PhpStorm, mas você pode usar qualquer editor de sua preferência. Em cadastro.php
, temos uma lista <ul>
e um elemento <li>
que representa o "Primeiro nome", e é nele que queremos exibir essa informação.
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="bootstrap.min.css">
<title>Curso Strings</title>
</head>
<body>
<div class="mx-5 my-5">
<h1>Cadastro feito com sucesso.</h1>
<p>Seguem os dados de sua conta:</p>
<ul class="list-group">
<li class="list-group-item">Primeiro nome: </li>
//...código omitido
</ul>
</div>
</body>
</html>
No arquivo form_cadastrar.php
, temos um elemento <input>
cujo atributo name
é "nome" - ou seja, é esse elemento que representa o campo "Nome" do nosso formulário. Ele está dentro de um <form>
que representa o formulário inteiro, e o clique no botão "Cadastrar" faz com que as informações sejam enviadas ao arquivo cadastro.php
utilizando o método post
.
<div class="mx-5 my-5">
<h1>Formulário de cadastro loja virtual</h1>
<form action="/cadastro.php" method="post">
<div class="form-group">
<label for="nome">Nome: </label>
<input type="text" id="nome" name="nome" class="form-control" placeholder="Digite seu nome">
</div>
//...
Com isso, tais informações serão acessíveis no arquivo cadastro.php
por meio da variável global $_POST
, que consiste em um array de strings cuja chave é justamente o texto passado ao atributo name
do nosso campo - ou seja, nome
.
<?php
$_POST['nome'];
?>
Pensando nisso, faremos um echo
dessa variável no campo "Primeiro nome" da nossa página de cadastro.
<div class="mx-5 my-5">
<h1>Cadastro feito com sucesso.</h1>
<p>Seguem os dados de sua conta:</p>
<ul class="list-group">
<li class="list-group-item">Primeiro nome: <?php echo $_POST['nome']; ?> </li>
Feita essa alteração, acessaremos o formulário no navegador e preencheremos o campo "Nome" com "Giovanni Tempobono". Após clicarmos em "Cadastrar" (ou pressionarmos "Enter"), a página de cadastro será carregada já com a nova informação.
Porém, repare que só queremos o primeiro nome, mas o nome completo está sendo exibido. Seria interessante encontrarmos uma maneira de quebrar essa string, divivindo-a em primeiro nome e sobrenome. Felizmente, o PHP nos disponibiliza uma função explode()
que serve justamente para isso.
Em cadastro.php
, inicializaremos uma variável $nomeSobrenome
à qual atribuiremos o resultado dessa função, que aceita três argumentos.
<?php
$nomeSobrenome = explode();
?>
O primeiro deles é um delimitador. Imagine que temos uma string "Cursos da Alura" e utilizamos como delimitador o caractere , ou seja, o espaço. isso fará com que a string seja dividida em um array de três partes quebrado nos pontos em que há um espaço, retornando
Cursos
, da
e Alura
. No nosso caso, é justamente o espaço que utilizaremos como delimitador.
O segundo argumento será a variável $_POST['nome']
recebida, e o terceiro o número 2
, indicando que a string deve ser quebrada em no máximo duas partes.
<?php
$nomeSobrenome = explode(" ", $_POST['nome'], 2);
?>
No momento em que utilizamos o echo
para exibir o conteúdo da variável na tela, passaremos a mandar o $nomeSobronome[0]
, ou seja, o array $nomeSobrenome
no índice 0
, exibindo o seu primeiro elemento.
<?php
$nomeSobrenome = explode(" ", $_POST['nome'], 2);
?>
<div class="mx-5 my-5">
<h1>Cadastro feito com sucesso.</h1>
<p>Seguem os dados de sua conta:</p>
<ul class="list-group">
<li class="list-group-item">Primeiro nome: <?php echo $nomeSobrenome[0] ?> </li>
//...
Com isso, ao recarregarmos a página, conseguiremos exibir somente o primeiro nome no respectivo campo.
Exibir o sobrenome agora é simples, certo? Como já dividimos a string, basta fazermos um echo
do próximo índice desse mesmo array.
<?php
$nomeSobrenome = explode(" ", $_POST['nome'], 2);
?>
<div class="mx-5 my-5">
<h1>Cadastro feito com sucesso.</h1>
<p>Seguem os dados de sua conta:</p>
<ul class="list-group">
<li class="list-group-item">Primeiro nome: <?php echo $nomeSobrenome[0] ?></li>
<li class="list-group-item">Sobrenome: <?php echo $nomeSobrenome[1] ?></li>
//...
Assim, conseguiremos exibir na tela o nome e o sobrenome informados no formulário.
Já conseguimos separar o nome e o sobrenome utilizando a função explode()
, que quebrou a string em duas partes. Porém, estamos misturando o código de apresentação em HTML com a nossa lógica de negócios em PHP, o que não é muito interessante. Seria mais adequado refatorarmos essa lógica para uma classe específica.
Na pasta do projeto, criaremos um novo arquivo Usuario.php
no qual teremos uma classe com o mesmo nome pertecendo ao namespace Alura
. Inicializaremos duas propriedades $nome
e $sobrenome
e passaremos para o construtor _construct()
da classe uma string $nome
, que será o nome completo recebido no formulário. Em seguida, recortaremos o código que estávamos utilizando para quebrar a string e o colaremos no construtor.
<?php
namespace Alura;
class Usuario
{
private $nome;
private $sobrenome;
public function __construct(string $nome) {
$nomeSobrenome = explode(" ", $_POST['nome'], 2);
}
}
Porém, não teremos mais acesso à variável $_POST
. Sendo assim, trocaremos essa variável por $nome
, que é o valor recebido no construtor. Continuando, definiremos as propriedades $this->nome
e $this->sobrenome
a partir dos respectivos índices da nova variável $nomeSobrenome
.
public function __construct(string $nome) {
$nomeSobrenome = explode(" ", $nome, 2);
$this->nome = $nomeSobrenome[0];
$this->sobrenome = $nomeSobrenome[1];
}
Para acessarmos esses dados, criaremos as funções getNome()
, retornando uma string $this->nome
, e getSobrenome()
, retornando a string $this->sobrenome
.
public function getNome(): string
{
return $this->nome;
}
public function getSobrenome(): string
{
return $this->sobrenome;
}
Feito isso, retornaremos ao arquivo cadastro.php
, onde abriremos uma tag <?php?>
e chamaremos, com o require
o arquivo Usuario.php
, a partir do qual criaremos uma instância $usuario
. Para conseguirmos criar essa instância, precisaremos passar a variável $_POST['nome']
que recebemos do formulário.
<?php
use Alura\Usuario;
require 'Usuario.php';
$usuario = new Usuario($_POST['nome']);
?>
Agora que instanciamos esse objeto, ao invés de acessarmos o array $nomeSobrenome
nas tags <?php?>
, passaremos a chamar os métodos getNome()
e getSobrenome()
.
<div class="mx-5 my-5">
<h1>Cadastro feito com sucesso.</h1>
<p>Seguem os dados de sua conta:</p>
<ul class="list-group">
<li class="list-group-item">Primeiro nome: <?php echo $usuario->getNome() ?></li>
<li class="list-group-item">Sobrenome: <?php echo $usuario->getSobrenome() ?></li>
//...
Terminadas as alterações, enviaremos novamente o nome "Giovanni Tempobono" no formulário. Como esperado, os campos "Primeiro nome" e "Sobrenome" da página de cadastro serão preenchidos normalmente, continuando com o mesmo comportamento. Assim, conseguimos separar a lógica de apresentação e a lógica de negócios que envolvem essas strings.
O curso PHP Strings: Operações e expressões regulares possui 101 minutos de vídeos, em um total de 42 atividades. Gostou? Conheça nossos outros cursos de PHP em Programação, ou leia nossos artigos de Programação.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.
Certificado de que assistiu o curso e finalizou as atividades
Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets
Cursos de introdução a tecnologia através de games, apps e ciência
Reforço online de inglês e espanhol para aprimorar seu conhecimento
Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.
Certificado de que assistiu o curso e finalizou as atividades
Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets
Cursos de introdução a tecnologia através de games, apps e ciência
Reforço online de inglês e espanhol para aprimorar seu conhecimento
Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.
Certificado de que assistiu o curso e finalizou as atividades
Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets
Cursos de introdução a tecnologia através de games, apps e ciência
Reforço online de inglês e espanhol para aprimorar seu conhecimento
Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.
Certificado de que assistiu o curso e finalizou as atividades
Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets
Cursos de introdução a tecnologia através de games, apps e ciência
Reforço online de inglês e espanhol para aprimorar seu conhecimento
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos todas as semanas