Você já montou o projeto cadastro-funcionario rodando em localhost. Agora vamos entender, com animações, o que acontece dentro da requisição — e o que, nesta estrutura, é rota, o que é API e o que é endpoint.
No localhost tudo está no seu computador — mas continuam existindo dois lados. O navegador pede (cliente). O Apache + PHP respondem e gravam (servidor). Entre eles passa o protocolo HTTP.
Mostra o HTML, envia o formulário, recebe a resposta.
Executa o PHP e usa o sistema de arquivos.
Clique em cada arquivo. Repare na etiqueta: rota e endpoint ficam em public/ (alcançáveis pelo navegador); dados fica em storage/ (interno, sem rota).
Selecione um arquivo
árvore do projeto
A pasta public/ é a única exposta ao navegador — é a "porta de entrada" da aplicação. A pasta storage/ guarda os dados e fica protegida pelo .htaccess.
Rota é o endereço (URL) que o navegador pede. Quem decide "qual endereço vira qual arquivo" é o Apache. Como você não usa framework, a rota é resolvida pela própria estrutura de pastas — isso se chama roteamento por arquivos.
Endpoint é uma rota que executa uma ação e devolve uma resposta. Nesta aplicação, o processar-cadastro.php chamado via POST é o endpoint de ação: ele recebe dados, processa e responde (redireciona).
<form action="processar-cadastro.php" method="POST">
action = o endereço do endpoint. method = o verbo HTTP. Juntos definem a chamada.
if ($_SERVER['REQUEST_METHOD'] !== 'POST') { header('Location: index.php'); exit; }
Essa guarda diz: "este endpoint só aceita POST". É o contrato do endpoint, escrito no servidor.
Aperte play e siga o pacote de dados do clique até o arquivo gravado.
Aqui está o coração da aula: como o PHP encontra, carrega, altera e grava o XML. O código à esquerda acende junto com a visualização.
// 1 · monta o caminho até o arquivo
$caminhoXml = __DIR__ . '/../storage/cadastrofuncionario.xml';
// 2 · confere se o arquivo existe
if (!file_exists($caminhoXml)) exit('XML não encontrado.');
// 3 · carrega o XML para a memória
$xml = simplexml_load_file($caminhoXml);
// 4 · calcula o próximo id
$id = count($xml->funcionario) + 1;
// 5 · acrescenta o novo funcionário
$f = $xml->addChild('funcionario');
$f->addAttribute('id', (string)$id);
$f->addChild('nome', $nome);
$f->addChild('email', $email);
$f->addChild('cargo', $cargo);
$f->addChild('salario', $salario);
// 6 · grava de volta no disco
$xml->asXML($caminhoXml);
header('Location: cadastro-sucesso.php');
Recapitulando a aula no nível de quem agora entende o que digita na barra de endereços.
# dar permissão de escrita ao Apache sudo chown -R $USER:www-data cadastro-funcionario sudo chmod 775 cadastro-funcionario/storage # abrir no navegador http://localhost/cadastro-funcionario/public/
Cliente x servidor existem mesmo no localhost. O navegador pede; Apache + PHP respondem e gravam.
Rota = a URL, resolvida pela estrutura de public/. storage/ não tem rota.
Endpoint = rota + verbo + ação: processar-cadastro.php via POST.
Manipular arquivo = encontrar → carregar na memória → alterar → asXML() grava no disco.