Fórum Erro PHP: trying to get property of non-object #571230
19/11/2016
0
Estou aprendendo a linguagem PHP e acabei me deparando com um erro no qual não sei como solucionar , pra quem tem conhecimento mais avançado pode ser simples.
O erro "trying to get property of non-object" ocorre no trecho abaixo
" echo "Manipulando a conta de: {$conta_lucas->Titular->Nome}:"; "
Aqui esta o codigo completo .
<?php
class Pessoa{
var $Codigo;
var $Nome;
var $Altura;
var $Idade;
var $Nascimento;
var $Escolaridade;
var $Salario;
/*metodo construtor
* inicializa propriedades
*/
function __construct($Codigo, $Nome, $Altura, $Idade, $Nascimento, $Escolaridade, $Salario)
{
$this->Codigo = $Codigo;
$this->Nome = $Nome;
$this->Altura = $Altura;
$this->Idade = $Idade;
$this->Nascimento = $Nascimento;
$this->Escolaridade = $Escolaridade;
$this->Salario = $Salario;
}
/* Método Crescer
* aumenta a altura em centíetros
*/
function Crescer($centimetros)
{
if($centimetros >0)
{
$this->Altura += $centimetros;
}
}
/* Metodo formar
* altera a escolaridade para $titulacao
*/
function Formar($titulacao)
{
$this->Escolaridade = $titulacao;
}
/* Metodo envelhecer
* aumenta a idade em $anos
*/
function Envelhecer($anos)
{
if($anos >0)
{
$this->Idade += $anos;
}
}
/* Método destrutor
* finaliza o objeto
*/
function __destruct()
{
echo "Objeto{$this->Nome} finalizado...\\n";
}
}
?>
E também a classe conta
<?php
class Conta{
var $Agencia;
var $Codigo;
var $DataDeCriacao;
var $Titular;
var $Senha;
var $Saldo;
var $Cancelada;
#Método construtor
#inicializa as propriedades
#
function __construct($Agencia, $Codigo, $DataDeCriacao, $Titular, $Senha, $Saldo)
{
$this->Agencia = $Agencia;
$this->Codigo = $Codigo;
$this->DataDeCriacao = $DataDeCriacao;
$this->Titular = $Titular;
$this->Senha = $Senha;
//Chamada a outro método da classe
$this->Depositar($Saldo);
$this->Cancelada = false;
}
#Metodo destrutor
#finaliza o objeto
function __destruct()
{
echo "Objeto Conta {$this->Codigo} de {this->Titular->Nome} finalizada...\\n";
}
/*Método Retirar
* diminui o Saldo em $quantia
*/
function Retirar($quantia)
{
if($quantia > 0)
{
$this->Saldo -= $quantia;
}
}
/*Método Depositar
* aumenta o valor da quantia
*/
function Depositar($quantia)
{
if($quantia > 0)
{
$this->Saldo += $quantia;
}
}
/* Método ObterSaldo
* retorna o Saldo Atual
*/
function ObterSaldo()
{
return $this->Saldo;
}
}
?>
O problema esta no meu arquivo costrutores.php
<?php
# Carrega as Classes
include_once 'classes/Pessoa.class.php';
include_once 'classes/Conta.class.php';
#Crição do Objeto $Lucas
$Lucas = new Pessoa(
10,
"Lucas Pereira da Costa",
1.75,
21,
"20/07/1995",
"Ensino Superior",
1000.00);
echo "Manipulando o Objeto {$Lucas->Nome}:
";
echo "{$Lucas->Nome} cursa {$Lucas->Escolaridade}
";
$Lucas->Formar('Análise de Sistemas');
echo "{$Lucas->Nome} cursa {$Lucas->Escolaridade}
";
echo "{$Lucas->Nome} tem {$Lucas->Idade} anos de idade
";
$Lucas->Envelhecer(3);
echo"{$Lucas->Nome} tem {$Lucas->Idade} anos de idade
";
$conta_lucas = new Conta(6677,"CC.1234.56","10/07/02",$Lucas, 9876, 567.89);
echo "
";
//Aqui ocorre o erro
echo "Manipulando a conta de: {$conta_lucas->Titular->Nome}:";
echo "Agencia {$conta_lucas->Agencia}";
var_dump($conta_lucas->Titular->Nome);
?>
O erro "trying to get property of non-object" ocorre no trecho abaixo
" echo "Manipulando a conta de: {$conta_lucas->Titular->Nome}:"; "
Aqui esta o codigo completo .
<?php
class Pessoa{
var $Codigo;
var $Nome;
var $Altura;
var $Idade;
var $Nascimento;
var $Escolaridade;
var $Salario;
/*metodo construtor
* inicializa propriedades
*/
function __construct($Codigo, $Nome, $Altura, $Idade, $Nascimento, $Escolaridade, $Salario)
{
$this->Codigo = $Codigo;
$this->Nome = $Nome;
$this->Altura = $Altura;
$this->Idade = $Idade;
$this->Nascimento = $Nascimento;
$this->Escolaridade = $Escolaridade;
$this->Salario = $Salario;
}
/* Método Crescer
* aumenta a altura em centíetros
*/
function Crescer($centimetros)
{
if($centimetros >0)
{
$this->Altura += $centimetros;
}
}
/* Metodo formar
* altera a escolaridade para $titulacao
*/
function Formar($titulacao)
{
$this->Escolaridade = $titulacao;
}
/* Metodo envelhecer
* aumenta a idade em $anos
*/
function Envelhecer($anos)
{
if($anos >0)
{
$this->Idade += $anos;
}
}
/* Método destrutor
* finaliza o objeto
*/
function __destruct()
{
echo "Objeto{$this->Nome} finalizado...\\n";
}
}
?>
E também a classe conta
<?php
class Conta{
var $Agencia;
var $Codigo;
var $DataDeCriacao;
var $Titular;
var $Senha;
var $Saldo;
var $Cancelada;
#Método construtor
#inicializa as propriedades
#
function __construct($Agencia, $Codigo, $DataDeCriacao, $Titular, $Senha, $Saldo)
{
$this->Agencia = $Agencia;
$this->Codigo = $Codigo;
$this->DataDeCriacao = $DataDeCriacao;
$this->Titular = $Titular;
$this->Senha = $Senha;
//Chamada a outro método da classe
$this->Depositar($Saldo);
$this->Cancelada = false;
}
#Metodo destrutor
#finaliza o objeto
function __destruct()
{
echo "Objeto Conta {$this->Codigo} de {this->Titular->Nome} finalizada...\\n";
}
/*Método Retirar
* diminui o Saldo em $quantia
*/
function Retirar($quantia)
{
if($quantia > 0)
{
$this->Saldo -= $quantia;
}
}
/*Método Depositar
* aumenta o valor da quantia
*/
function Depositar($quantia)
{
if($quantia > 0)
{
$this->Saldo += $quantia;
}
}
/* Método ObterSaldo
* retorna o Saldo Atual
*/
function ObterSaldo()
{
return $this->Saldo;
}
}
?>
O problema esta no meu arquivo costrutores.php
<?php
# Carrega as Classes
include_once 'classes/Pessoa.class.php';
include_once 'classes/Conta.class.php';
#Crição do Objeto $Lucas
$Lucas = new Pessoa(
10,
"Lucas Pereira da Costa",
1.75,
21,
"20/07/1995",
"Ensino Superior",
1000.00);
echo "Manipulando o Objeto {$Lucas->Nome}:
";
echo "{$Lucas->Nome} cursa {$Lucas->Escolaridade}
";
$Lucas->Formar('Análise de Sistemas');
echo "{$Lucas->Nome} cursa {$Lucas->Escolaridade}
";
echo "{$Lucas->Nome} tem {$Lucas->Idade} anos de idade
";
$Lucas->Envelhecer(3);
echo"{$Lucas->Nome} tem {$Lucas->Idade} anos de idade
";
$conta_lucas = new Conta(6677,"CC.1234.56","10/07/02",$Lucas, 9876, 567.89);
echo "
";
//Aqui ocorre o erro
echo "Manipulando a conta de: {$conta_lucas->Titular->Nome}:";
echo "Agencia {$conta_lucas->Agencia}";
var_dump($conta_lucas->Titular->Nome);
?>
Lucas Costa
Curtir tópico
+ 0
Responder
Posts
21/11/2016
Sergio Mono
Olá Lucas.
Isso esse ocorre porque você está tentando acessar uma propriedade de um não objeto.
Você pode verificar se $conta_lucas->Titular é um objeto mesmo ou se é uma array?
Caso seja uma array você pode pegar o valor do nome assim:
$conta_lucas->Titular["Nome"];
Isso esse ocorre porque você está tentando acessar uma propriedade de um não objeto.
Você pode verificar se $conta_lucas->Titular é um objeto mesmo ou se é uma array?
Caso seja uma array você pode pegar o valor do nome assim:
$conta_lucas->Titular["Nome"];
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)