Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom noite pessoa,
alguém poderia me explixar uma coisa?
Tenho uma classe com um cálculo de um produto para realizar o tal polimorfismo..rs
Porém não compreendo como um $this->$propriedade funciona e um $this->propriedade não funcionada!!!
Vejam abaixo, quem puder ajudar! abs
<?php
class Produto{
var $Codigo;
var $Descricao;
var $Quantidade;
private $Preco;
const MARGEM = 10;
// Método __construct de um Produto
function __construct($Codigo,$Descricao,$Quantidade,$Preco){
$this->Codigo = $Codigo;
$this->Descricao = $Descricao;
$this->Quantidade = $Quantidade;
$this->Preco = $Preco;
}
// Intercepta a obtenção de propriedades.
function __get($propriedade){
$this->propriedade = $propriedade;
// echo "Obter o valor de {$this->propriedade}";
if($this->propriedade=='Preco'){
// return ( $this->$propriedade * ( 1 + (self::MARGEM / 100)) ); // Funciona
return ( $this->propriedade * ( 1 + (self::MARGEM / 100)) ); // Não funciona
};
}
}
// Incluir classe de Produto;
include_once("classes/Produto2.class.php");
// Cria novo produto
$produto = new Produto(1,'Pendrive 2 GB',1,345.67);
echo $produto->Preco;
?>
>
Leonardo,
Quando você referencia uma propriedade utilizando diretamente o nome dela, espera-se que você a tenha declarado, por exemplo:
<?php
class Example {
Se tentarmos recuperar o valor de uma propriedade não existente, $test por exemplo, um E_NOTICE será exibido:
Saída:
>
[neto@localhost ~]$ php teste.php
Tentando recuperar o valor da propriedade test
PHP Notice: Undefined property: Example::$test in /home/neto/teste.php on line 8
Já, se tentarmos recuperar o valor de uma propriedade existente:
A saída será:
>
[neto@localhost ~]$ php teste.php
Tentando recuperar o valor da propriedade someProperty
string(22) "Uma variável qualquer"
Se você fizer apenas: $this->property, como não existe uma propriedade chamada $property, você cairá no primeiro caso, de propriedade não existente.
Para mais informações sobre variáveis variáveis, veja o manual do PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://php.net/manua...es.variable.php