Daniel Segovia

Blog personal

Archive for the ‘4.6 Visibilidad’ Category

Métodos estáticos

Hacer un comentario

Similar a las propiedades estáticas PHP soporta métodos estáticos. Significa que son parte de la clase pero no serán parte del objeto cuando sea construido. Por esto no podremos acceder con $this a éstos métodos pero sí accederemos con self

<?php
class Estados {
    const ACTIVO = 1;
    const PENDIENTE = 2;
    const ERROR = 3;
 
    static function getActivo(){
	return "Activo" . self::separador();
    }
 
    static function separador(){
	return "<hr />";
    }
 
    public function getActivoFromPublicMethod(){
	return $this->getActivo();
    }
 
}
 
echo Estados::getActivo();
$ob = new Estados;
$ob->getActivoFromPublicMethod(); //ERROR
?>

Written by Daniel Segovia

abril 13th, 2011 at 3:08 pm

Posted in 4.6 Visibilidad

Propiedades estáticas

Hacer un comentario

Cómo ya hemos visto tenemos propiedades public, private y protected pero tenemos una más, las propiedades estáticas.
La palabra reservada para éstas es: static

Las propiedades o métodos de clases como estáticos los hacen accesibles sin necesidad de una instanciación de la clase, esto se hace con el nombre de la clase :: nombre_de_propiedad_o_metodo. Una propiedad declarada como static no puede ser accedida con un objeto de clase instanciado (pero si se puede con métodos estáticos).

El acceso a la propiedad static

<?php
class MiClase {
    static $miVariableEstatica = 0;
}
echo MiClase::$miVariableEstatica;
?>

El acceso a la propiedad static por medio de un método

<?php
class MiClase {
    static $miVariableEstatica = 0;
    function miMetodo(){
        print self::$miVariableEstatica;
    }
}
$obj = new MiClase();
$obj->miMetodo();
?>

Written by Daniel Segovia

abril 12th, 2011 at 5:35 pm

Métodos public, private y protected

Hacer un comentario

Los niveles de acceso y visibilidad son los mismos para los métodos que para las propiedades.

Public son accesibles de cualquier lugar.

<?php
class miClase
{
    public function getMensaje(){
        return "Bienvenido";
    }
 
}
 
 
$ob = new miClase();
echo $ob->getMensaje(); // Funciona
?>

Protected son accesibles sólo de la clase donde fue declarada, por herencia y clases parent

<?php
class miClase
{
    protected function getMensaje(){
	return "Bienvenido";
    }
 
}
 
class miClase2 extends miClase
{
    protected function getMensaje2(){
	return "si";
    }
 
    public function showProtected(){
	$mensajes = $this->getMensaje2() . " - " . $this->getMensaje();
	return $mensajes;
 
    }
}
 
 
$ob = new miClase2();
echo $ob->getMensaje(); // ERROR
echo $ob->getMensaje2(); // ERROR
echo $ob->showProtected(); // FUNCIONA
?>

Private pueden accederse solamente desde la clase donde fueron definidas.

<?php
class miClase
{
    private function getMensaje(){
	return "Bienvenido";
    }
 
    public function showPrivate(){
	return $this->getMensaje();
    }
 
}
 
class miClase2 extends miClase
{
    private function getMensaje2(){
	return "Si si si";
    }
 
    public function showPrivate2(){
	return $this->getMensaje2();
    }
 
    public function showAllPrivate(){
	$mensajes = $this->getMensaje2() . " - " . $this->getMensaje(); //el llamado a getMensaje producirá error
	return $mensajes;
 
    }
}
 
 
$ob = new miClase2();
echo $ob->getMensaje(); // ERROR
echo $ob->getMensaje2(); // ERROR
echo $ob->showPrivate(); // FUNCIONA
echo $ob->showPrivate2(); // FUNCIONA
echo $ob->showAllPrivate(); // ERROR
?>

Written by Daniel Segovia

abril 12th, 2011 at 4:04 pm

Propiedades public, private y protected

Hacer un comentario

Public son accesibles de cualquier lugar.

<?php
class miClase
{
    public $propiedad = 'Public';
 
    function getProperty(){
        return $this->propiedad;
    }
 
}
 
 
$ob = new miClase();
echo $ob->propiedad; // Funciona
echo $ob->getProperty(); // Funciona
?>

Protected son accesibles sólo de la clase donde fue declarada, por herencia y clases parent

<?php
class miClase
{
    protected $propiedad = 'protected';
 
    function getProperty(){
        return $this->propiedad;
    }
 
}
 
class miClase2 extends miClase
{
	function getProperty2(){
		return $this->propiedad;
	}
}
 
 
$ob = new miClase2();
echo $ob->propiedad; // ERROR
echo $ob->getProperty(); // Funciona
echo $ob->getProperty2(); // Funciona
?>

Private pueden accederse solamente desde la clase donde fueron definidas.

<?php
class miClase
{
    private $propiedad = 'protected';
 
    function getProperty(){
        return $this->propiedad;
    }
 
}
 
class miClase2 extends miClase
{
	function getProperty2(){
		return $this->propiedad;
	}
}
 
 
$ob = new miClase2();
echo $ob->propiedad; // ERROR
echo $ob->getProperty(); // Funciona
echo $ob->getProperty2(); // ERROR
 
?>

Visibilidad

Hacer un comentario

Para acceder a métodos y propiedades tenemos disponibles 3 diferentes tipos de acceso

  1. Publico: La palabra reservada es public: Los miembros declarados como public serán accesibles de cualquier lugar
  2. Protegido: La palabra reservada es protected: Los miembros declarados como protect serán accesibles sólo de la clase misma, por herencia y clases parent
  3. Privado: La palabra reservada es private: Los miembros declarados como private serán accesibles solamente desde la clase que fueron definidos

Written by Daniel Segovia

abril 4th, 2011 at 12:11 pm

Posted in 4.6 Visibilidad