Ver Mensaje Individual
  #14 (permalink)  
Antiguo 29/12/2004, 10:18
Avatar de Calisco
Calisco
 
Fecha de Ingreso: marzo-2004
Ubicación: Neuquen
Mensajes: 732
Antigüedad: 20 años, 10 meses
Puntos: 4
Encapsulamiento

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
?>
__________________
| Cabeza De Raton |

Última edición por Calisco; 29/12/2004 a las 11:03