Ao clicar em Cadastrar e não preencher o formulário da erro
Notice: Undefined offset: 1 in C:\wamp64\www\php\strings-inicial\src\Alura\Usuario.php on line 42 Call Stack
Time Memory Function Location
1 0.0004 404048 {main}( ) ...\cadastro.php:0 2 0.0010 406504 App\Alura\Usuario->__construct( ) ...\cadastro.php:5 3 0.0010 406504 App
\Alura\Usuario->setNomeSobrenome( ) ...\Usuario.php:15
Cadastro.php
<?php
require 'autoload.php';
$usuario = new App\Alura\Usuario($_POST['nome'], $_POST['senha'], $_POST['genero']);
$contato = new App\Alura\Contato($_POST['email'], $_POST['endereco'], $_POST['cep'], $_POST['telefone']);
?>
<!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><?php echo htmlspecialchars($usuario->getTratamento()); ?> seguem os dados de sua conta:</p>
<ul class="list-group">
<li class="list-group-item">Primeiro nome: <?php echo htmlspecialchars($usuario->getNome()); ?></li>
<li class="list-group-item">Sobrenome: <?php echo htmlspecialchars($usuario->getSobrenome()); ?></li>
<li class="list-group-item">Usuário: <?php echo htmlspecialchars($contato->getUsuario()); ?></li>
<li class="list-group-item">Senha: <?php echo htmlspecialchars($usuario->getSenha()); ?></li>
<li class="list-group-item">Telefone: <?php echo htmlspecialchars($contato->getTelefone()); ?></li>
<li class="list-group-item">Email: <?php echo htmlspecialchars($contato->getEmail()); ?></li>
<li class="list-group-item">Endereço: <?php echo htmlspecialchars($contato->getEnderecoCep()); ?></li>
</ul>
</div>
</body>
</html>
<?php
namespace App\Alura;
class Usuario
{
private $nome;
private $sobrenome;
private $senha;
private $genero;
private $tratamento;
public function __construct(string $nome, string $senha, string $genero)
{
$this->setNomeSobrenome($nome);
$this->validaSenha($senha);
$this->adicionaTratamentoAoSobrenome($nome, $genero);
}
private function adicionaTratamentoAoSobrenome(string $nome, string $genero)
{
if($genero === 'M') {
$this->tratamento = preg_replace('/^(\w+)\b/', 'Sr', $nome, 1);
}
if($genero === 'F') {
$this->tratamento = preg_replace('/^(\w+)\b/', 'Srª', $nome, 1);
}
}
private function setNomeSobrenome(string $nome)
{
$nomeSobrenome = explode(" ", $nome, 2);
if($nomeSobrenome[0] === ""){
$this->nome = "Nome inválido";
} else {
$this->nome = $nomeSobrenome[0];
}
if($nomeSobrenome[1] === null){
$this->sobrenome = "Sobrenome inválido";
} else {
$this->sobrenome = $nomeSobrenome[1];
}
}
public function getNome():string
{
return $this->nome;
}
public function getSobrenome():string
{
return $this->sobrenome;
}
public function getSenha(): string
{
return $this->senha;
}
private function validaSenha(string $senha): void
{
$tamanhoSenha = strlen(trim($senha));
if ($tamanhoSenha > 6) {
$this->senha = $senha;
} else {
$this->senha = "Senha inválida";
}
}
public function getTratamento(): string
{
return $this->tratamento;
}
}
?>
Não sei onde está o erro, já conferi os códigos do curso e não funcionou da erro, e no curso não apresenta esse erro. Aguardo resposta.
Att: Cezar