Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Paulo Correia

Dúvida sobre orientação em objeto

Recommended Posts

Tenho uma dúvida, ou acho que estou fazendo errado (rsrsrsrs).

Seria assim, numa classe que seria a Pai (em arquivo separado) eu teria 
o construct que faria os setters numas váriaveis private, mais ou menos 
assim:

<?

namespace UmNomeQualquer;

class Pai {

     protected $_var;

     public function __construct($var) {

         $this->_var = $var;

     }

}

?>

E numa outra que seria a Filha(o) (em arquivo separado) eu leria esta 
variável, certo?

<?

namespace UmNomeQualquer;

class Filha extends Pai {

     public function mostra() {

         return $this->_var;

     }

}

?>

Mas quando eu vou testar dá erro falando que não passei todos os 
argumentos ao construtor:

<?

include "pai.php";
include "filha.php";

use Nome\Pai;
use Nome\Filha;

$pai = new Pai("123");

$filha = new Filha();

echo $filha->mostra();

?>

Mensagem de erro:

PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to 
function Nome\Pai::__construct(), 0 passed in test.php on line 11 and 
exactly 1 expected in pai.php:8
Stack trace:
#0 test.php(11): Nome\Pai->__construct()
#1 {main}
   thrown in pai.php on line 8

Onde estou errando??

Não é para não repetir o código, (DRY), isto não inclui as variáveis??

Desde já agradeço,

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Acredito que na classe filha você precise definir o construct, deve ser +- assim:
 

class Filha extends Pai {

     public function __construct(){
		parent::__construct();
     }

     public function mostra() {

         return $this->_var;

     }

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por junior almeida
      Tenho uma duvida sobre php + orientação a objetos.
      estou desenvolvendo um sistema, na parte de login o usuário entra com os dados de e-mail e senha e um método faz uma consulta no banco para ver se os dados que foi digitados estão corretos
      apos estar correto grava o id em uma sessao e armazeno o objeto gerado da consulta em uma variável usando o método setResultado, na pagina de usuario pego a sessao do id e faço uma consulta no banco passando o id e utilizo o método getResultado para pegar o objeto da consulta que me retorna. ate ai tudo bem mas me gerou uma duvida se outra pessoa fizer um login os dados que estavam armazenados na variável resultados vão ser perdidos ou os dados de variáveis ficam salvos em alguma especie de cookies.
       
      exemplo: pessoa A fez o login seus dados foram setados em uma variável resultado logo em seguida a pessoa B faz o login ela também tem seus dados setados na variável resultado, os dados da pessoa A foi perdido ou ele fica salvo em algum lugar.
       
      não sei se ficou confuso mas se alguém puder me tirar essa duvida.
    • Por Misael Silva
      Olá, membros do forum, gostaria de saber de um livro de PHP que ensina-se a desenvolver códigos php de um loja virtual, um e-commerce, ate encontrei esse  livro https://www.thiengo.com.br/e-commerce-com-php-e-mysql, porém descobri que não é orientado a objeto, um ponto que ficou a desejar, vocês tem dicas de outros livros semelhantes? Agradeço!
    • Por marcelobbt
      Comecei a aprender PHP por conta própria e estudei diversos materiais. Com o tempo comecei a usar a programação orientada a objetos, ou pelo menos achei que estava usando. De uns tempos para cá, comecei a ficar em dúvida se estaria fazendo da forma correta. Então busquei outros materiais, revi os antigos e veio uma dúvida que não consegui resposta e gostaria de saber se podem me ajudar.
       
      Quando pego uma série de registros de um banco de dados, devo coloca-los num único objeto, ou criar um objeto para cada registro?
       
      Para clarear minha pergunta segue mais detalhes de como faço até hoje.
      Eu utilizo o CodeIgniter e então criei um model chamado CRUD onde obtenho os valores desejados de qualquer tabela do banco de dados, por exemplo, usando a função abaixo:
       
      public function SelecionaTodos ($tabela) { return $this->db->get($tabela); } Até este ponto está tudo num único objeto. Mas vamos dizer que vou trabalhar com os dados da tabela "aluno". Então queria pegar os dados que essa função retorna e jogar na classe Aluno para fazer as rotinas do sistema. Aí que vem a dúvida se devo jogar os valores todos como um array, ou crio um objeto para cada registro retornado, enfim, gostaria de ouvir a opinião dos especialistas ou mais experientes. 
       
    • Por Will871
      Boa tarde, galera.
      Sou novato no PDO, e estou tendo uma dúvida sobre como receber a variável de conexão do banco de dados em um método.
      Tenho o seguinte código:
       
      banco.php
      <?php try {     $BD_host = "localhost";     $BD_banco = "jacyfash_loja";     $BD_usuario = "root";     $BD_senha = "";     $conn = new PDO("mysql:host=".$BD_host.";dbname=".$BD_banco, $BD_usuario, $BD_senha); } catch (PDOException $i) {     die("Erro: <code>" . $i->getMessage() . "</code>"); } usuario.php
      <?php require_once 'banco.php'; class valida{     function login(){                  }          function cadastro(){         $nome = $_POST['nome'];         $usuario = $_POST['usuario'];         $email = $_POST['email'];         $senha = $_POST['senha'];         $sql = "INSERT INTO cliente(nome, usuario, email, senha) VALUES(:nome, :usuario, :email, :senha)"; //===================================================================================== //Sempre que tento acessar o $conn de dentro de uma function ele retorna erro dizendo que a variável não existe. ( Erro: Undefined variable: conn) //=====================================================================================         $stmt = $conn->prepare($sql);         $stmt->bindParam(':nome', $nome );         $stmt->bindParam(':usuario', $site );         $stmt->bindParam(':email', $email);         $stmt->bindParam(':senha', $senha);     }          function bloqueio(){              } } Já pesquisei muito sobre como fazer isso, mas não consegui nada. Se alguém puder ajudar, agradeço.   ^^
    • Por Emanuel Raul
      Olá... Comecei hoje a estudar PHPOO por conta própria, e já me deparei com uma dúvida.
      Qual a maneira correta de nomear as classes no PHP? NomeDaClass.php ou NomeDaClasse.class.php?
      Se for possível alguém me explicar se existe alguma diferença entra ambas eu agradeço desde já.
       
      Um Abraço...
×

Informação importante

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