Jump to content
laudirbispo

Dúvida sobre a classe DAO, é melhor passar o objeto de conexão com injeção de dependência ou instância-lo no construtor?

Recommended Posts

Estou começando e tenho algumas dúvidas, sobre como implementar isso.

Dúvida sobre a classe DAO, é melhor passar o objeto de conexão com injeção de dependência ou instância-lo no construtor?

 

Qual seria a melhor abordagem?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By kelvinferraz
      Boa noite pessoal,
       
      Estou desenvolvendo uma aplicação e estou utilizando o método Auth do Laravel 5.8. Aparentemente esta tudo funcionando, acesso a certas áreas solicitam login. Eu gostaria de saber como faço para limitar o acesso de registro de usuários de um modo mais simples, pois andei pesquisando e existe formas de criar uma conta admin, mas para o meu propósito não teria necessidade de tanta complexidade, apenas gostaria de limitar o acesso ao http://localhost:8000/register para uma conta de e-mail especifica, ou mesmo se precisar criar um campo na tabela para validar se existe, não sei direito como fazer isso, estou aprendendo faz pouco tempo a respeito do Laravel.
       
      Exemplo de como esta funcionando minha app:
      http://localhost:8000/sistema === REQUER LOGIN PARA ACESSO
      http://localhost:8000/register == TAMBEM REQUER LOGIN, PORÉM QUALQUER USUÁRIO LOGADO FAZ REGISTRO DE NOVO USUÁRIO PARA ESSA ROTA EU GOSTARIA DE LIMITAR APENAS AO MEU EMAIL OU NOME DE USUÁRIO CADASTRADO.
       
       
       
       
      Obrigado!
    • By adriano22
      <?php   require_once 'lib/Database/Connection.php'; require_once 'Crud.php';

        class UsuarioModel extends Crud { protected $table = 'usuario'; private $nome; private $arquivo; private $formacao; private $nivel; private $email; private $senha; private $curso; private $disciplina; private $periodo;   public function setNome($nome) { $this->nome = $nome; } public function setArquivo() { $this->arquivo = $arquivo; } public function setFormacao($formacao) { $this->formacao = $formacao; } public function setNivel($nivel) { $this->nivel = $nivel; } public function setEmail($email) { $this->email = $email; } public function setSenha($senha) { $this->senha = $senha ; } public function setCurso($curso) { $this->curso = $curso; } public function setDisciplina($disciplina) { $this->disciplina = $disciplina; } public function setPeriodo($periodo) { $this->periodo = $periodo; }   public function insert() { $sql = "INSERT INTO $this->table (nome, arquivo, formacao, nivel, email, senha, curso, disciplina, periodo) VALUES (:nome, :arquivo, :formacao, :nivel, :email, :senha, :curso, :disciplina, :periodo)"; $stmt = Connection::prepare($sql); $stmt->bindParam(':nome', $this->nome); $stmt->bindParam(':arquivo', $this->arquivo); $stmt->bindParam(':formacao',$this->formacao ); $stmt->bindParam(':nivel', $this->nivel); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); $stmt->bindParam(':curso', $this->curso); $stmt->bindParam(':disciplina',$this->disciplina); $stmt->bindParam(':periodo', $this->periodo); return $stmt->execute(); }   public function update($id) { $sql = "UPDATE $this->table SET nome = :nome, arquivo = :arquivo, formacao = :formacao, nivel = :nivel, email = :email, senha = :senha, curso = :curso, disciplina = :disciplina, periodo = :periodo WHERE id = :id"; $stmt = Connection::prepare($sql); $stmt->bindParam(':nome', $this->nome); $stmt->bindParam(':arquivo', $this->arquivo); $stmt->bindParam(':formacao',$this->formacao ); $stmt->bindParam(':nivel', $this->nivel); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); $stmt->bindParam(':curso', $this->curso); $stmt->bindParam(':disciplina',$this->disciplina); $stmt->bindParam(':periodo', $this->periodo); $stmt->bindParam(':id', $id); return $stmt->execute();   }  
    • By StenioDaty
      Estou criando um sistema com adição de um tópico categoria que assim que é adicionado é chamado na tabela para aparecer na tabela ao lado.
      Estou recebendo o erro abaixo, mas a categoria é cadastrada:
       
      A PHP Error was encountered
      Severity: Warning
      Message: Cannot modify header information - headers already sent by (output started at /storage/ssd5/194/9530194/public_html/application/helpers/funcoes_helper.php:1)
      Filename: helpers/url_helper.php
      Line Number: 564
      Backtrace:
      File: /storage/ssd5/194/9530194/public_html/application/controllers/admin/Categoria.php
      Line: 35
      Function: redirect
      File: /storage/ssd5/194/9530194/public_html/index.php
      Line: 315
      Function: require_once
       
       
       
       
      Segue foto:
       
       
      View Código:
       
      <div id="page-wrapper">
                  <div class="row">
                      <div class="col-lg-12">
                          <h1 class="page-header"><?php echo 'Administrar '.$subtitulo; ?></h1>
                      </div>
                                  </div>
                              <div class="row">                
                      <div class="col-lg-6">
                          <div class="panel panel-default">
                              <div class="panel-heading">
                                 <?php echo 'Adicionar nova '.$subtitulo; ?>
                              </div>
                              <div class="panel-body">
                                  <div class="row">
                                      <div class="col-lg-12">
                                          <?php 
                                          echo validation_errors('<div class="alert  alert-danger">','</div>');
                                          echo form_open('admin/categoria/inserir');
                                          ?>
                                          <div class="form-group">
                                                  <label id="txt-categoria">Nome da Categoria</label>
                                                  <input type="text" id="txt-categoria" name="txt-categoria" class="form-control" placeholder="Entre com o texto">
                                          </div>
                                          <button type="submit" class="btn btn-default">Cadastrar</button>
                                          
                                          <?php
                                          echo form_close();
                                          ?>
                                      </div>
                                      
                                  </div>
                                  <!-- /.row (nested) -->
                              </div>
                              <!-- /.panel-body -->
                          </div>
                          <!-- /.panel -->
                      </div>
                      <!-- /.col-lg-6 -->
                      
                      
                      <div class="col-lg-6">
                          <div class="panel panel-default">
                              <div class="panel-heading">
                                  <?php echo 'Alterar '.$subtitulo. ' existente'; ?>
                              </div>    
                               <?php
                                          $this->table->set_heading("Nome da Categoria","Alterar","Excluir");
                                          foreach($categorias as $categoria){
                                              $nomecat = $categoria->titulo;
                                              $alterar= anchor(base_url('Admin/categoria'),'<i class="fa fa-refresh fa-fw"></i> Alterar');
                                              $excluir=anchor(base_url('Admin/categoria/excluir/'.md5($categoria->id)),' <i class="fa fa-remove fa-fw"></i> Excluir');
                                              
                                              $this->table->add_row($nomecat,$alterar,$excluir);
                                          }
                                          
                                          $this->table->set_template(array(
                                              'table_open' => '<table class="table table-striped">'
                                              ));
                                              
                                              echo $this->table->generate();
                                      ?>           
                                            
                              </div>
                              <div class="panel-body">
                                  <div class="row">
                                      <div class="col-lg-12">
                                          
                                      </div>
                                      
                                  </div>
                                  <!-- /.row (nested) -->
                              </div>
                              <!-- /.panel-body -->
                          </div>
                          <!-- /.panel -->
                      </div>
                      
                      
                  </div>
                  <!-- /.row -->
              </div>
              <!-- /#page-wrapper -->
          </div>
       
       
      MODEL CODE:
       
      <?php
      defined('BASEPATH') OR exit('No direct script access allowed');
      class Categorias_model extends CI_Model {
          
          public $id;
          public $titulo;
          
          public function __construct(){
              parent::__construct();
          }
          
          public function listar_categorias(){
              $this->db->order_by('titulo','ASC');
              return $this->db->get('categoria')->result();
          }
          
          public function publicacao(){
              $this->db->select('usuario.id as idautor, usuario.nome, postagens.id, postagens.titulo, postagens.subtitulo, postagens.user, postagens.data, postagens.img, postagens.categoria, postagens.conteudo');
              $this->db->from('postagens');
              $this->db->join('usuario', 'usuario.id = postagens.user');
              $this->db->where('postagens.id ='.$id);
              return $this->db->get()->result();
          }
          
          public function listar_titulo($id){
              $this->db->from('categoria');
              $this->db->whre('id ='.$id);
              return $this->db->get()->result();
          }
          
          public function adicionar($titulo){
              $dados['titulo'] = $titulo;
              return $this->db->insert('categoria',$dados);
          }
          
          public function excluir($id){
              $this->db->where('md5(id)',$id);
              return $this->db->delete('categoria');
          }
          
      }
       
      CONTROLLER:
       
       
      <?php
      defined('BASEPATH') OR exit('No direct script access allowed');
      class Categoria extends CI_Controller {
          public function __construct(){
              parent::__construct();
              $this->load->model('categorias_model','modelcategorias');
              $this->categorias = $this->modelcategorias->listar_categorias();
          }
          
          public function index()
          {
              
              $dados['categorias'] = $this->categorias;
              $this->load->library('table');
              //Dados a serem enviados para o cabeçalho
              $dados['titulo'] = 'Painel de Controle';
              $dados['subtitulo'] = 'Categoria';
              
              $this->load->view('backend/template/html-header', $dados);
              $this->load->view('backend/template/template');
              $this->load->view('backend/template/categoria');
              $this->load->view('backend/template/html-footer');
          }
          
          public function inserir(){
              $this->load->library('form_validation');
              $this->form_validation->set_rules('txt-categoria','Nome da Categoria', 'required|min_length[3]|is_unique[categoria.titulo]');
              if($this->form_validation->run() == FALSE){
                  $this->index();
              }else{
                  $titulo = $this->input->post('txt-categoria');
                  if($this->modelcategorias->adicionar($titulo)){
                      redirect(base_url('admin/categoria'));
                  }else{
                      echo "Houve um erro no sistema!";
                  }
              }
              
          }
          
          public function excluir($id){
              
              if($this->modelcategorias->excluir($id)){
                      redirect(base_url('admin/categoria'));
                  }else{
                      echo "Houve um erro no sistema!";
                  }
              
          }
          
      }
       
      Gostaria de ajuda para corrigir o erro:
      Desde já agradeço!
       
    • By kandrus
      Boa tarde!!
      Estou com uma dúvida de arquitetura me corroendo onde eu coloco o código de um controle de estoque e onde faço sua chamada?

       
      Estou desenvolvendo um sistema que entre os seus módulos tera um controle de estoque, como eu organizo o código deste módulo.

      Vamos a um exemplo:

      Toda vez que eu fizer uma venda preciso diminuir o numero de itens do produto vendido da tabela produtos.

      A função/metodo dimiuirItem() {bla bla}
      Deve ficar no EstoqueController ?

      Ou crio uma camada a mais na arquitetura MVC apenas para guardar as classes de controle de estoques ?

      Ou ainda desenvolvo tudo no Model.

      E caso a nova camada seja o mais correto a fazer onde devo chamar os métodos dentro do Model ou nos Controllers?

      Muito obrgado e desculpem o tamanho da duvida kkkk


       
       
       
    • By Schilin
      Olá, Estou tentando implementar uma função que exibe uma lista de feedbacks cadastrados por um usuário específico, mas não estou conseguindo. Acredito que seja na classe Feedback o problema, pois dei o "echo" na query que vai para o banco e não printa o idUser. Onde pode estar o problema? 
       
      //pagina da listagem do usuário <?php error_reporting(E_ALL); ini_set('display_errors', 1); session_start(); if($_SESSION['logado']!=1){ header("Location: ../index.php"); } if($_SESSION['idPermissao'] != 1){ header("Location: ../index.php"); } include_once $_SERVER['DOCUMENT_ROOT']."/feedback/controle/ControleUsuario.class.php"; $cControle = new ControleUsuario(); if(isset($_GET['idUserVisualizar'])){ $usuario = $cControle->visualizarUsuario($_GET['idUserVisualizar']); } if(isset($_GET['idUserSituacao'])){ $cControle->situacaoUsuario($_GET['idUserSituacao']); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Visualizar usuário</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" type="text/css" media="screen" href="main.css"> <script src="main.js"></script> </head> <body> <a href="logout.php">sair</a> <?php echo "<h3>Usuário ".$usuario->getLoginUser()."</h3><br>"; if($_SESSION['idUser'] == $usuario->getIdUser()){ echo "Situação: Ativo"; } else{ if($usuario->getIdSituacao() == 0){ echo "Situação: Inativo | <a href='visualizarUsuario.php?idUserSituacao=".$usuario->getIdUser()."'>Ativar</a><br>"; } else{ echo "Situação: Ativo | <a href='visualizarUsuario.php?idUserSituacao=".$usuario->getIdUser()."'>Desativar</a><br>"; } } if($usuario->getIdPermissao() == 2){ $feedbacksRealizados = $cControle->feedbacksRealizados($_GET['idUserVisualizar']); echo "Feedbacks realizados: ".$feedbacksRealizados->getFeedbacksRealizados()." | <a href='listaFeedbacks.php?idUserListaFeedbacks=".$usuario->getIdUser()."'>Visualizar feedbacks</a>"; } ?> <br><br><a href="listaUsuarios.php"><<<:</a> </body> </html> // Classe ControleFeedback.class <?php include_once $_SERVER['DOCUMENT_ROOT']."/feedback/modelo/Feedback.class.php"; class ControleFeedback{ public function listarFeedbacksUser($idUser){ echo "<br>teste2: ".$idUser."<br>"; $feedback = new Feedback($idUser); $feedbacks = $feedback->listarFeedbacksUser(); return $feedbacks; } } ?> // Classe Feedback.class <?php include_once $_SERVER['DOCUMENT_ROOT']."/feedback/db/MySQL.class.php"; class Feedback{ private $idFeedback; private $nomeCliente; private $idInstalador; private $atendimento; private $relatoSatisfacao; private $antigaOperadora; private $notaInstalacao; private $idUser; public function __construct($idFeedback = null, $nomeCliente = null, $idInstalador = null, $atendimento = null, $relatoSatisfacao = null, $antigaOperadora = null, $notaInstalacao = null, $idUser = null){ $this->idFeedback = $idFeedback; $this->nomeCliente = $nomeCliente; $this->idInstalador = $idInstalador; $this->atendimento = $atendimento; $this->relatoSatisfacao = $relatoSatisfacao; $this->antigaOperadora = $antigaOperadora; $this->notaInstalacao = $notaInstalacao; $this->idUser = $idUser; } public function getIdFeedback(){ return $this->idFeedback; } public function setIdFeedback($idFeedback){ $this->idFeedback = $idFeedback; } public function getNomeCliente(){ return $this->nomeCliente; } public function setNomeCliente($nomeCliente){ $this->nomeCliente = $nomeCliente; } public function getIdInstalador(){ return $this->idInstalador; } public function setIdInstalador($idInstalador){ $this->idInstalador = $idInstalador; } public function getAtendimento(){ return $this->atendimento; } public function setAtendimento($atendimento){ $this->atendimento = $atendimento; } public function getRelatoSatisfacao(){ return $this->relatoSatisfacao; } public function setRelatoSatisfacao($relatoSatisfacao){ $this->relatoSatisfacao = $relatoSatisfacao; } public function getAntigaOperadora(){ return $this->antigaOperadora; } public function setAntigaOperadora($antigaOperadora){ $this->antigaOperadora = $antigaOperadora; } public function getNotaInstalacao(){ return $this->notaInstalacao; } public function setNotaInstalacao($notaInstalacao){ $this->notaInstalacao = $notaInstalacao; } public function getIdUser(){ return $this->idUser; } public function setIdUser($idUser){ $this->idUser = $idUser; } public function listarFeedbacksUser(){ $con = new MySQL(); $sql = "SELECT * FROM feedback WHERE idUser = $this->idUser"; echo $sql; die; $resultados = $con->consulta($sql); if(!empty($resultados)){ $feedbacks = array(); foreach($resultados as $resultado){ $feedback = new Feedback(); $feedback->setIdFeedback($resultado['idFeedback']); $feedback->setNomeCliente($resultado['nomeCliente']); $feedback->setIdInstalador($resultado['idInstalador']); $feedback->setAtendimento($resultado['atendimento']); $feedback->setRelatoSatisfacao($resultado['relatoSatisfacao']); $feedback->setAntigaOperadora($resultado['antigaOperadora']); $feedback->setNotaInstalacao($resultado['notaInstalacao']); $feedback->setIdUser($resultado['idUser']); $feedbacks[] = $feedback; } return $feedbacks; }else{ return false; } } } Esta é a sequência de testes que eu fiz, ele da o "echo" dos IDs certos, mas na classe Feedback parece que ele não recebe então printa a query sem o idUser. O problema é na função?
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.