PHP Classes

File: readme.md

Recommend this page to a friend!
  Classes of Rodrigo Faustino   Personal   readme.md   Download  
File: readme.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: Personal
Generate a portfolio site
Author: By
Last change:
Date: Yesterday
Size: 4,830 bytes
 

Contents

Class file image Download

Portfolio Website

Este projeto é um site de portfólio dinâmico desenvolvido com PHP puro, utilizando o padrão MVC clássico e sem arquitetura REST. O objetivo do site é oferecer um layout moderno e funcional, onde o conteúdo é gerenciado de forma dinâmica por uma área administrativa, ideal para exibir projetos, habilidades e informações de contato.

? Tecnologias Utilizadas

O site desenvolvido com as seguintes tecnologias e ferramentas:

  • PHP Puro: Linguagem principal do backend, sem uso de frameworks, garantindo simplicidade e desempenho.
  • Padrão MVC Clássico: Estrutura do código organizada em Modelos, Controladores e Views, facilitando a manutenção e escalabilidade do projeto.
  • League\Plates: Biblioteca de templates para PHP, responsável por gerenciar e renderizar as Views de forma eficiente.
  • HTML5, CSS3 e W3.CSS: Para criar uma interface moderna e responsiva.
  • Font Awesome: Biblioteca de ícones para enriquecer a experiência visual.
  • JavaScript (Vanilla): Para funcionalidades interativas básicas, como manipulação de menus e animações.
  • Monolítico: Toda a aplicação (frontend e backend) é servida como um único sistema integrado, sem APIs REST ou microserviços.

?? League\Plates\Engine

O League\Plates é uma biblioteca de templates leve e eficiente para PHP. Utilizamos essa ferramenta para separar a lógica da apresentação, permitindo:

  • Herança de Templates: Reutilização de estruturas HTML comuns, como cabeçalhos e rodapés.
  • Passagem de Dados: Possibilidade de enviar variáveis do controlador para as Views.
  • Modularização: Separação de componentes (parciais) como menus, rodapés e cabeçalhos.

Exemplo de Uso no Projeto

No projeto, utilizamos o League\Plates\Engine para renderizar templates de forma dinâmica. Aqui está um exemplo:

Configuração da Engine no Backend:

use League\Plates\Engine;

class View
{
    public static function render($template, $data = [])
    {
        $engine = new Engine(__DIR__ . '/../views');
        echo $engine->render($template, $data);
    }
}

Template Principal (master.php)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= $title ?? 'Portfolio Website' ?></title>
    <link rel="stylesheet" href="/assets/css/styles.css">
</head>
<body>
    <header>
        <?= $this->insert('partials/header') ?>
    </header>
    <main>
        <?= $this->section('content') ?>
    </main>
    <footer>
        <?= $this->insert('partials/footer') ?>
    </footer>
</body>
</html>

Renderização no Controlador

detalhe importante (sistema de templates) https://platesphp.com/

class Portifolio{
    public function index()
    {
        $projects = Project::all();
        View::render('portfolio', [
            'title' => 'My Portfolio',
            'projects' => $projects,
        ]);
    }
}

?? Funcionalidades

Menu Dinâmico: Gerado com base em configurações do backend. Filtros de Portfólio: Filtragem de projetos por categoria (Design, Fotos, Arte, etc.). Área de Contato: Formulário funcional para envio de mensagens. Layout Responsivo: Compatível com dispositivos móveis e desktops. Área Administrativa: Para gerenciar conteúdo do portfólio.

? Estrutura de Pastas

A organização do projeto segue uma estrutura simples e eficiente:

project/
??? app/
?   ??? controllers/
?   ??? database/
?   ?   ??? models/
?   ?        ??? Model.php
?   ?   ??? Connection.php
?   ?   ??? Transaction.php
?   ??? models/
?   ??? views/
?       ??? admin/
?       ??? auth/
?       ??? pages/
?       ??? partial/
? 
??? vendor/
??? public/
?   ??? assets/
?      ??? css/
?      ??? js/
?      ??? images/
?   ??? index.php
??? .env

Pré-requisitos e Instalação

Clone o repositório:

git clone https://github.com/faustinopsy/personal.git

Configure o ambiente no arquivo .env:

arquivo .env

STRIPE_KEY=token do striper se for receber dinhero
DATABASE_NAME=a01_teste
DATABASE_HOST=localhost
DATABASE_USER=root
DATABASE_PASSWORD=root123
BASE_URL=http://localhost:1230
EMAIL=conta de email
SENHA=senha para envio de email
APP_SECRET_KEY=53xy69

Instale as dependências com o Composer:

composer install

Inicie um servidor local:

php -S localhost:8000 -t public

? Contribuições

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.

? Licença

Este projeto é licenciado sob a MIT License.