Encapsulamiento (Visibility).
EL encapsulamiento de una propiedad o de un metodo puede ser definido por un prefijo en la declaracion con las palabras reservadas:
public (publico),
protected (protegido) o
privated (privado).La propiedad o el metodo declarado como
Publico puede ser accedido desde cualquier lugar.
Protegido limita el acceso a clases heredadas (y no las clases que definen estos items).
Privada limita el acceso solo a las clases que definen estas propiedades y/o metodos.
The visibility of a property or method can be defined by prefixing the declaration with the keywords: public, protected or private. Public declared items can be accessed everywhere. Protected limits access to inherited classes (and to the class that defines the item). Private limits visibility only to the class that defines the item. Acceso a las Propiedades
Las propiedades de las clases deben ser definidas como public, private o protected.
Class members must be defined with public, private, or protected.
Ejemplo 19-8. Declaracion de Propiedades Código PHP:
<?php
/**
* Definicion MiClase
*/
class MiClase
{
public $publica = 'Publica';
protected $protegida = 'Protegida';
private $privada = 'Privada';
function Imprimir()
{
echo $this->publica;
echo $this->protegida;
echo $this->privada;
}
}
$obj = new MiClase();
echo $obj->publica; // Ejecuta
echo $obj->protegida; // Fatal Error
echo $obj->privada; // Fatal Error
$obj->Imprimir(); // Muestra Publica, Protegida y Privada
/**
* Define MiClase2
*/
class MiClase2 extends MiClase
{
// Podemos redeclarar las propiedades Publica y Protegida, pero no Privada
protected $protegida = 'Protegida2';
function Imprimir()
{
echo $this->publica;
echo $this->protejida;
echo $this->privada;
}
}
$obj2 = new MiClase2();
echo $obj->publica; // Ejecuta
echo $obj2->privada; // Indefinida
echo $obj2->protegida; // Fatal Error
$obj2->Imprimir(); // Muestra Publica, Protegida2, y no muestrs Privata
?>
Nota: En PHP 4 el metodo de declaracion de una variable con la palabra reservada
var ya no es valido en Objetos con PHP 5. Para compatibilizar, una variable declarada en PHP sera asumida como de acceso publico, y un warning E_STRICT sera emitido.
Note: The PHP 4 method of declaring a variable with the var keyword is no longer valid for PHP 5 objects. For compatibility a variable declared in php will be assumed with public visibility, and a E_STRICT warning will be issued. Acceso a los Metodos
Los metodos de las clases deben ser definidos como public, private, o protected. Los metodos sin alguna de estas palabras reservadas seran automaticamente definidos como public.
Class methods must be defined with public, private, or protected. Methods without any declaration are defined as public.
Ejemplo 19-9. Declaracion de Metodos Código PHP:
<?php
/**
* Define MiClase
*/
class MiClase
{
// Los constructores deben ser publicos
public function __construct() { }
// Declarando un metodo Publico
public function MiPublico() { }
// Declarando un metodo Protegido
protected function MiProtegido() { }
// Declarando un metodo Privado
private function MiPrivado() { }
// Esto es Publico
function Foo()
{
$this->MiPublico();
$this->MiProtegido();
$this->MiPrivado();
}
}
$miclase = new MiClase;
$miclase->MiPublico(); // Trabaja ...
$miclase->MiProtegido(); // Fatal Error
$miclase->MiPrivado(); // Fatal Error
$miclase->Foo(); // Trabajan Public, Protected y Private
/**
* Define MiClase2
*/
class MiClase2 extends MiClase
{
// Esta es Publico
function Foo2()
{
$this->MiPublico();
$this->MiProtegido();
$this->MiPrivado(); // Fatal Error
}
}
$miclase2 = new MiClase2;
$miclase2->MiPublico(); // Trabaja ...
$miclase2->Foo2(); // Trabaja Public y Protected , Private no
?>