Primeiras aulas do curso PHP Strings: Operações e expressões regulares

PHP Strings: Operações e expressões regulares

Iniciando o projeto - Introdução

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!

Iniciando o projeto - Dividindo uma string

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.

Iniciando o projeto - Refatorando o código

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.

Sobre o curso PHP Strings: Operações e expressões regulares

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:

Aprenda PHP acessando integralmente esse e outros cursos, comece hoje!

  • 1233 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1233 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1233 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1233 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?

Acesso completo por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas