⚠ A ideia do repositório não é advogar pelo não-uso de bibliotecas e frameworks, mas servir como uma prova de conceito e uma forma de instruir melhor os iniciantes na linguagem.
Exemplo de aplicação CRUD usando PHP puro, sem bibliotecas ou frameworks.
- O uso do Composer.
- Separação de: acesso aos dados, apresentação/visualização (HTML) e controle de entrada HTTP (opa, lembrou de um tal de MVC?).
- O uso do filtro de input de usuário.
- O uso de prepared statements ao invés de concatenar ou interpolar input de usuário em strings para evitar SQL Injection.
- O uso de Ajax puro, sem jQuery, com recursos modernos do JavaScript como
async
/await
efetch
.
Assumindo que você já tenha o PHP e o Composer instalados, execute os comandos:
composer install
php -S localhost:8000 -t public/
public/
se refere a pasta pública da aplicação, aquela que será servida pelo web-server, onde ficam seus arquivos estáticos como JavaScript, CSS, imagens, fontes etc.public/index.php
é o ponto de entrada da aplicação, é onde tudo começa.
src/
é onde fica o código-fonte da nossa aplicação é uma abreviação de source.src/lib.php
é onde fica o código que é genérico o suficiente para ser utilizado em outras aplicações, sem modificações,lib
é uma abreviação para library (biblioteca).src/dbal.php
é onde ficam as funções de acesso ao banco de dados,dbal
é uma abreviação para database abstraction layer.src/main.php
é onde fica nosso código principal.
- E finalmente
templates/
é onde ficam os arquivos relacionados à renderização de HTML pela aplicação, também é muito conhecido como views.templates/_layout.phtml
é a base para os outros templates/views e tem coisas comuns à todo o site/aplicação como header e o footer, assim você não precisa repeti-los em cada página.
- Se você for iniciante, fique à vontade para criar issues dizendo os pontos apresentados que você não entendeu.
- E se você for experiente, fique à vontade para criar PRs ajustando os pontos que poderiam ficar melhores.
- (lembrando que a ideia aqui é manter simples e fácil, é ser um exemplo, não um boilerplate pra uma aplicação maior)