Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, galera! Estou com um problema no PHP Orientado a Objetos, e fiz um exemplo para demostrar meu problema. Tenho uma página, onde dei um include de uma classe, o problema é que nessa classe tem uma simples variável declarada e eu que executar essa variável na minha página.
Exemplo:
Página PHP
<?php
include("nome.class.php"); // Inclui a minha Classe
$nome = new Nome;
$nome -> exemplo;
echo $menunome; // A linha que dá erro
?>
Classe em PHP
<?php
class Nome{
public function exemplo{
$meunome = "Joao Gustavo"; //Invés de dar echo na minha própria classe quero dar echo na página do include
}
}
?>
Alguém pode me ajudar? Existe algum jeito de pegar a variável de uma classe?
Existe, mas depende do que quer fazer. Você não postou a mensagem de erro, mas acredito que seja porque você está dando echo em uma propriedade inexistente: Dentro da sua classe, exemplo é um método, não um atributo. Então, a chamada deveria ser:
echo $nome->exemplo() - Perceba os parenteses que indicam que é um método.
E no método exemplo, acrescente um return:
public function exemplo{
$meunome = "Joao Gustavo";
return $meunome;
}
Você ainda poderia criar um atributo público na sua classe, assim pode acessar a variável de qualquer lugar:
[code]class Nome{
public $meunome = 'João Gustavo';
}
$nome = new Nome;
echo $nome->meunome; //João Gustavo
Mas você teria problemas de encapsulamento aqui, então, poderia trabalhar com getters e setters:
[code]class Nome {
private $meunome;
public function setNome( $nome ) {
$this->nome = $nome;
}
public function getNome() {
return $this->nome;
}
}
$nome = new Nome;
$nome->setNome( 'João Gustavo' );
echo $nome->getNome();
Ou pode até usar o método mágico do PHP e echoar a classe:
class Nome
{
private $nome;
private $sobrenome;
public function __construct( $nome, $sobrenome )$this->nome = $nome;
$this->sobrenome = $sobrenome;
}
public function getNome()return $this->nome;
}
public function getSobrenome()return $this->sobrenome;
}
public function __toString()return $this->getNome() . ' ' . $this->getSobrenome();
}
}
$nome = new Nome( 'João', 'Gustavo' );
echo $nome;[code]
Se falei o que não devia, desconsidere, e reformule a pergunta (poste a mensagem de erro) ;P
Valeu Riberry! Usando o getNome, eu consegui!
Bom estou começando em POO e vou te dar uma orientação, estude bem pois sua lógica está fugindo bem da programação orientada a objeto, vamos ao seu exemplo:
<?php
class Nome{
public function exemplo{
$meunome = "Joao Gustavo"; //Invés de dar echo na minha própria classe quero dar echo na página do include
}
}
class Nome{
public $meunome;
public function exemplo{
Vou mostrar seu mesmo exemplo corretamente pra você analisar:
Exemplo.class.php
class Exemplo {
// Atributo da classe
public $meunome;
// Metodo da classe, irá retornar algo
Exemplo.php
// Chamo a classe Exemplo
include("Exemplo.class.php");
// Instancio a classe Exemplo
$obj = new Exemplo();
$obj->meunome = "Junior"; // Veja que agora estou passando o valor corretamente, não dentro de um metodo e sim no meu objeto criado
echo $obj->MostrarExemplo(); // Para mostrar basta chamar o método MostrarExemplo();
Bom fiz rapidinho aqui pq estou no celular, caso tenha algo errado desculpe mais a lógica é essa.