Ámbito de clases PHP

From Wiki de Caballero
Jump to navigation Jump to search

Tipo Public

Los miembros de clases declarados como public pueden ser accedidos desde cualquier lado.Si se declaran usando var, serán definidas como public.

Tipo Private

Aquellos miembros definidos como private, únicamentede pueden ser accedidos desde la clase que los definió.

Tipo Protected

Los miembros declarados como protected, sólo desde la misma clase, desde las clases que hereden de ella y desde las clases parent.

Ejemplo

<?php
/**
 * Definición de MyClass
 */
class MyClass
{
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';

    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj = new MyClass();
echo $obj->public;    // Funciona bien
echo $obj->protected; // Error Fatal
echo $obj->private;   // Error Fatal
$obj->printHello();   // Muestra Public, Protected y Private


/**
 * Definición de MyClass2
 */
class MyClass2 extends MyClass
{
    // Se puede redeclarar los métodos public y protected, pero no el private
    protected $protected = 'Protected2';

    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj2 = new MyClass2();
echo $obj2->public;    // Funciona bien
echo $obj2->protected; // Error Fatal
echo $obj2->private;   // Undefined
$obj2->printHello();   // Muestra Public, Protected2, Undefined

?>