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:
library-system ├── src │ ├── Controller │ │ ├── PositionController.php │ ├── Model │ │ ├── Position.php │ ├── View │ │ ├── PositionView.php │ ├── Service │ │ ├── PositionService.php ├── public │ └── index.php ├── config │ └── database.php ├── vendor └── composer.json
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 } }
src/View/PositionView.php
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'); } }
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(); } }
Certifique-se de que sua conexão com o banco de dados está configurada corretamente em config/database.php.
Implemente o roteamento em public/index.php para chamar os métodos corretos do controlador de acordo com as requisições.
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.