A definição de variável de uma classe no php5 oop segue um controle de acesso, que é:
public significa global, e pode ser acessado por subclasses dentro e fora da classe
private significa private, e só pode ser usado dentro desta classe
; somente esta classe ou Pode ser acessada em subclasses ou classes pai
<?php;
classe ClasseBase {
público $público = 'público';
privado $privado = 'privado';
protegido $protegido = 'protegido';
função __construct(){
}
função imprimir_var(){
imprima $this->public;echo '<br />';
imprima $this->privado; echo '<br />';
imprima $this->protegido; echo '<br />';
}
}
class Subclasse estende BaseClass {
// public $public = 'public2';
protegido $protegido ='protegido2';
função __construir(){
echo $this->protected;//Pode ser acessado, pois a classe está definida como protegida, então pode estar nesta classe ou subclasse, e o valor pode ser repetido em subclasses
eco '<br />';
echo $this->private;//error porque é privado e só pode ser usado na classe baseclass em que está definido.
}
}
$obj1 = new BaseClass();
$obj1->print_var();
//echo $obj1->protected;//error Por ser protegido, só pode ser chamado dentro desta classe ou em subclasses e classes pai.
//echo $obj1->private;//erro private como acima, só pode ser chamado dentro desta classe
echo $obj1->público;
echo "<hr />";
$obj2 = nova Subclasse();
eco '<br />';
echo $obj2->public;echo '<br />';
echo $obj2->protegido;
//echo $obj2->private;//erro
//echo $obj2->protegido;
?>