Ir para conteúdo

POWERED BY:

Arquivado

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

ozzyvegeta

nova class herdando valores de outra...

Recommended Posts

olá...

 

eu tenho uma classe onde nela existe varias variaveis ja configuradas...

 

bom, só q uq eu quero eh fazer com q uma variavel "herde" os valores dessa class ja configurada, só q essa herança não pode mudar o valor da primeira variavel, ex:

 

class a {  var var = 0;  function a($var) {	$this->var = $var;  }}$a = new a(1);$b = var;$b->var = 10;echo $a->var;

esse teste vai mostrar o valor 10 mesmo, mas eu queria q mostrasse o valor 1 que foi o valor definido quando eu criei a class "$a", a class $b não é para ser uma referencia de "$a" e sim uma nova classe q somente herda os valores de $a...

 

se alguem souber como fazer..valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Te juro que eu não entendi nada dessa "lógica"!!!

 

Exemplo PHP5:

class Exemplo {

  private $valor = 0;
  
  function Exemplo($var) {
	$this->valor = $var;
  }
 
  function setValor($var) {
	$this->valor = $var;
  }
  
  funtion getValor() {
	return $this->valor;
  }
}

$a = new Exemplo(10);
$b = new Exemplo(20);
echo $a->getValor();
echo "<br>";
echo $b->getValor();

Exemplo PHP4:

class Exemplo {

  var $valor = 0;
  
  function Exemplo($var) {
	$this->valor = $var;
  }
 
  function setValor($var) {
	$this->valor = $var;
  }
  
  funtion getValor() {
	return $this->valor;
  }
}

$a = new Exemplo(10);
$b = new Exemplo(20);
echo $a->getValor();
echo "<br>";
echo $b->getValor();

No seu exemplo não existe herança, apenas 1 classe e desta podem ser criados vários objetos, talvez, o que você esteja querendo seja:

 

$a = new Exemplo(10);
$b = $a;
echo $a->getValor();
echo "<br>";
echo $b->getValor();

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que nesta linha:

$b = var;

você quiser fazer:

$b = $a;

certo?

 

Bom, vamos lá... em primeiro lugar, não é uma prática recomendada alterar o valor de uma variável do objeto diretamente. É melhor você criar métodos pra definir e pra retornar esses valores... assim você pode tratar esses dados. Se você usa PHP 5, pode utilizar modificadores de acessos a propriedades e métodos da classe. Por exemplo, você pode utilizar um "protected" ou "private", que vão impedir que o valor da propriedade seja alterado diretamente.

 

Fora isso, quando você faz:

$a = "string";

$b = $a;

O PHP vai criar duas variáveis diferentes... por se tratarem de strings. Mas quando você faz:

$a = new Class();

$b = $a;

O PHP simplesmente cria um ponteiro... ou seja, cria um novo nome para a variável $a. Na realidade, você tem uma variável com 2 nomes... isto acontece pq é um objeto. Pra criar um novo, você teria que fazer uma nova instância da classe.

 

beleza? Qualquer dúvida, posta aí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

era isso mesmo Illidan...eu errei ali $b = var; era $b = $a;foi mal...mas entaum..você disse q eu crio um ponteiro para a classe neh...entaum tem mesmo um modo de eu criar uma classe só q herdando os valores de outra class, mas sem ser um ponteiro?...valew...

Compartilhar este post


Link para o post
Compartilhar em outros sites

explica melhor o que você quer, porque dependendo você pode criar uma classe extendendo de outra

 

http://br.php.net/extends

 

Herança (extend)

Uma classe pode herdar métodos e membros de uma outra classe usando a palavra-chave extend na declaração. Não é possível herdar classes múltiplas, uma classe só pode herdar de uma classe base.

Os métodos e membros herdados podem ser sobrecarregados, a menos que a classe pai tenha definido o método como final, redeclarando-os usando o mesmo nome definido na classe pai. É possível acessar o método ou membro sobrecarregado referenciando-os comparent::

Exemplo 19-4. Herança Simples
<?php
class ClasseHerdeira extends ClasseSimples {
 /* Redefine o método pai */
 function mostraVar() {
  echo "Classe Herdeira\n";
  parent::mostraVar();
 }
}

$herdeira = new ClasseHerdeira();
$herdeira->mostraVar();
?>

O exemplo acima irá imprimir:

Class Herdeira
um valor padrão

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi bem, você poderia clonar o objeto tb!

<?phpclass Herda { private $val = 0; function __construct($val){ $this->val = $val; } public function getVal(){ return $this->val; } public function setVal($val){ $this->val = $val; }}$a = new Herda(10);$b = clone $a;$b->setVal(20);echo($a->getVal());echo($b->getVal())?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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