Projeto
CRUD: Estrutura de Gestão Organizacional - PosiçãoCRUD: Estrutura de Gestão Organizacional - Posição
Fabrício de Medeiros
CRUD (Create, Read, Update, Delete) para gerenciar as posições na Medeiros Corporation Inc., seguindo a mesma estrutura e práticas de sanitização. Aqui está o guia passo a passo para implementar isso:
Estrutura do Projeto
Estrutura de Arquivos:
library-system ├── src │ ├── Controller │ │ ├── PositionController.php │ ├── Model │ │ ├── Position.php │ ├── View │ │ ├── PositionView.php │ ├── Service │ │ ├── PositionService.php ├── public │ └── index.php ├── config │ └── database.php ├── vendor └── composer.json
1. Modelo (Model)
src/Model/Position.php
<?php
namespace LibrarySystem\Model;
class Position {
private $id_position;
private $position;
private $description;
// Getters and Setters
public function getIdPosition() {
return $this->id_position;
}
public function setIdPosition($id) {
$this->id_position = (int)$id; // Sanitização
}
public function getPosition() {
return $this->position;
}
public function setPosition($position) {
$this->position = htmlspecialchars(strip_tags($position)); // Sanitização
}
public function getDescription() {
return $this->description;
}
public function setDescription($description) {
$this->description = htmlspecialchars(strip_tags($description)); // Sanitização
}
}
2. Visualização (View)
src/View/PositionView.php
3. Controlador (Controller)
src/Controller/PositionController.php
<?php
namespace LibrarySystem\Controller;
use LibrarySystem\Model\Position;
use LibrarySystem\Service\PositionService;
class PositionController {
private $positionService;
public function __construct($dbConnection) {
$this->positionService = new PositionService($dbConnection);
}
public function create() {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$position = new Position();
$position->setPosition($_POST['position']);
$position->setDescription($_POST['description']);
$this->positionService->createPosition($position);
header('Location: /positions');
}
}
public function read() {
$positions = $this->positionService->getAllPositions();
include '../src/View/PositionView.php';
}
public function update($id) {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$position = new Position();
$position->setIdPosition($id);
$position->setPosition($_POST['position']);
$position->setDescription($_POST['description']);
$this->positionService->updatePosition($position);
header('Location: /positions');
} else {
$position = $this->positionService->getPosition($id);
include '../src/View/PositionView.php';
}
}
public function delete($id) {
$this->positionService->deletePosition($id);
header('Location: /positions');
}
}
4. Serviço (Service)
src/Service/PositionService.php
<?php
namespace LibrarySystem\Service;
use LibrarySystem\Model\Position;
class PositionService {
private $db;
public function __construct($dbConnection) {
$this->db = $dbConnection;
}
public function createPosition(Position $position) {
$stmt = $this->db->prepare("INSERT INTO dep_positions (position, description) VALUES (:position, :description)");
$stmt->bindValue(':position', $position->getPosition());
$stmt->bindValue(':description', $position->getDescription());
return $stmt->execute();
}
public function getAllPositions() {
$stmt = $this->db->query("SELECT * FROM dep_positions");
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
public function getPosition($id) {
$stmt = $this->db->prepare("SELECT * FROM dep_positions WHERE id_position = :id");
$stmt->bindValue(':id', (int)$id);
$stmt->execute();
return $stmt->fetch(\PDO::FETCH_ASSOC);
}
public function updatePosition(Position $position) {
$stmt = $this->db->prepare("UPDATE dep_positions SET position = :position, description = :description WHERE id_position = :id");
$stmt->bindValue(':position', $position->getPosition());
$stmt->bindValue(':description', $position->getDescription());
$stmt->bindValue(':id', $position->getIdPosition());
return $stmt->execute();
}
public function deletePosition($id) {
$stmt = $this->db->prepare("DELETE FROM dep_positions WHERE id_position = :id");
$stmt->bindValue(':id', (int)$id);
return $stmt->execute();
}
}
5. Configuração do Banco de Dados
Certifique-se de que sua conexão com o banco de dados está configurada corretamente em config/database.php.
6. Roteamento
Implemente o roteamento em public/index.php para chamar os métodos corretos do controlador de acordo com as requisições.
Considerações Finais
Este CRUD para gerenciamento de posições segue as melhores práticas de sanitização, encapsulamento e um design orientado a objetos. Adapte e expanda conforme necessário para atender às necessidades específicas da Medeiros Corporation Inc.
Editar Voltar