Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''solid''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Todas as áreas do Fórum

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Encontrado 3 registros

  1. Pessoal, fiz uma enquete para saber quantas pessoas utilizam os princípios de código limpo. Você pode acessar a enquete por meio deste link: http://bit.ly/enquete-codigo-limpo A pesquisa leva, literalmente, menos de 1 minuto! :)
  2. brhue

    Classe upload

    Estou continuando meus estudos sobre oop e SOLID, e queria saber se minhas classes estão violando algum principio do SOLID. Segue a tentativa: Upload.class.php <?php class Upload { private $fileName; private $fileSize = 2.0; private $fileType; private $filePath; private $token; protected $userFile; public function __construct(Token $token) { $this->token= $token; } public function setFileSize($maxSize) { $this->fileSize = (float)$maxSize * 1024 * 1024; } public function setFileType(Array $type) { $this->fileType = $type; } public function setFilePath($path) { $this->filePath = $path; } public function setUserFile($userFile) { $this->userFile = $userFile; } public function getFileName() { if (is_null($this->fileName)) $this->randomName(); return $this->fileName; } public function uploadFile() { if (!in_array($this->getExtension(), $this->fileType)) throw new RuntimeException("Extensão de arquivo não permitido."); else if ($this->fileSize < $_FILES[$this->userFile]['size']) throw new RuntimeException("Tamanho de arquivo não permitido."); else if (!move_uploaded_file($_FILES[$this->userFile]['tmp_name'], $this->filePath.$this->getFileName())) throw new RuntimeException("Falha ao mover arquivo."); } private function randomName() { $this->fileName = $this->token->generateToken().'.'.$this->getExtension(); } private function getExtension() { return pathinfo($_FILES[$this->userFile]['name'], PATHINFO_EXTENSION); } } ?> Esses sets, seria ideal colocar tudo no construtor? Token.php <?php interface Token { public function generateToken(); } ?> Bin2Hex.class.php class Bin2Hex implements Token { public function generateToken() { return bin2hex(openssl_random_pseudo_bytes(32)); } } UploadImage.class.php <?php class UploadImage extends Upload { private $height; private $width; public function setImageHeight($height) { $this->height = $height; } public function setImageWidth($width) { $this->width = $width; } public function uploadFile() { list($height, $width) = getimagesize($_FILES[$this->userFile]['tmp_name']); if ($this->height < $height) { throw new RuntimeException("Altura da imagem não permitida."); } else if ($this->width < $width) { throw new RuntimeException("Largura da imagem não permitida."); } parent::uploadFile(); } } ->A ideia aqui seria uma classe mais especifica para imagem... E a maior dúvida é se nessa parte viola o LSP (herança). index.php $upload = new UploadImage(new Bin2Hex()); $upload->setUserFile('photo'); $upload->setFilePath('uploads/'); $upload->setFileType(array('jpg', 'png')); $upload->setFileSize(1.0); $upload->setImageHeight(800); $upload->setImageWidth(600); try { $upload->uploadFile(); } catch (RuntimeException $e) { echo $e->getMessage(); }
  3. Estou estudando php e por consequência orientação objetos. Nesses últimos dias, me deparei com os princípios do SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) e tive algumas dúvidas. Como por exemplo, na tentativa de criar um "registration system", não consegui implementar os conceitos do SOLID, principalmente o SRP e OCP. Com isso me deparei com algumas dúvidas, por exemplo: Como escolher os nomes das classes e suas funções (objetivo, etc) ? Como relacionar os objetos (banco de dados, usuario, etc) ? Como deve ser a estrutura de classes(ex: DataBase, User, User Service) para um 'registration system' ou similar ? Como saber se estou violando ou não os principios do SOLID (dicas, etc) ? Como deveria ser implementada as classes abaixo, principalmente a DataBase ? Segue a tentativa: DataBase.class.php <?php require_once 'config.php'; class DataBase { private $DB; private $table = 'cadastro'; public function __construct() { $this->DB = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS); } public function insertUser($name, $lastname, $email, $password) { $sql = "INSERT INTO {$this->table} (name, lastname, email, password) VALUES (:name, :lastname, :email, :password)"; $stmt = $this->DB->prepare($sql); $stmt->bindParam(':name', $name, PDO::PARAM_STR); $stmt->bindParam(':lastname', $lastname, PDO::PARAM_STR); $stmt->bindParam(':email', $email, PDO::PARAM_STR); $stmt->bindParam(':password', $password, PDO::PARAM_STR); return $stmt->execute(); } public function findUserByEmail($email) { //... } public function findAll() { //... } //... } ?> User.class.php <?php class User { private $id; private $name; private $lastname; private $email; private $password; public function __construct($name = null, $lastname = null, $email = null, $password = null) { $this->name = $name; $this->lastname = $lastname; $this->email = $email; $this->password = $password; } public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } public function getLastname() { return $this->lastname; } public function setLastname($lastname) { $this->lastname = $lastname; } public function getEmail() { return $this->email; } public function setEmail($email) { $this->email = $email; } public function getPassword() { return $this->password; } public function setPassword($password) { $this->password = $password; } } ?> UserAction.class.php <?php class UserAction { public function register($user, $database) { return $database->insertUser($user->getName(), $user->getLastname(), $user->getEmail(), $user->getPassword()); } /* public function login($user, $database) { //... } */ //... } ?> register.php <?php require_once 'autoload.php'; $name = (isset($_POST['name']))?$_POST['name']:null; $lastname = (isset($_POST['lastname']))?$_POST['lastname']:null; $email = (isset($_POST['email']))?$_POST['email']:null; $password = (isset($_POST['password']))?$_POST['password']:null; $user = new User($name, $lastname, $email, $password); $database = new DataBase(); $action = new UserAction(); $action->register($user, $database); //... ?> Se puderem me indicar materias ou exemplos para prática ficarei grato. Obrigado !
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.