Forum und email

La palabra reservada 'Static'

Declarar miembros de clases o métodos como estáticos, los hace accesibles desde afuera del contexto del objeto. Un miembro o método declarado como estático no puede ser accesado con una variable que es una instancia del objeto y no puede ser redefinido en una extensión de la clase.

La declaración static debe estar después de la declaración de visibilidad. Por compatibilidad con PHP 4, si no se usa la declaración de visibilidad, entonces el miembro o método será tratado tal si como se hubiera declarado como public static.

A causa de que los métodos estáticos son accesibles sin que se haya creado una instancia del objeto, la pseudo variable $this no está disponible dentro de los métodos declarados como estáticos.

De hecho las llamadas a métodos static son resueltas en tiempo de ejecución. Cuando sea explícitamente un nombre de clase, el método ya ha sido identificado completamente y no es necesario aplicar las reglas de herencia. Si la llamada es hecha por self entonces self es traducido a la clase actual, esto es, la clase a la que pertenece el código. Aquí tampoco aplican las reglas de herencia.

Las propiedades estáticas no pueden ser accesadas a través del objeto usando el operador de flecha ->.

Example#1 Ejemplo de miembro Static

<?php
class Foo
{
    public static 
$my_static 'foo';

    public function 
staticValue() {
        return 
self::$my_static;
    }
}

class 
Bar extends Foo
{
    public function 
fooStatic() {
        return 
parent::$my_static;
    }
}


print 
Foo::$my_static "\n";

$foo = new Foo();
print 
$foo->staticValue() . "\n";
print 
$foo->my_static "\n";      // Undefined "Property" my_static 

// $foo::my_static is not possible

print Bar::$my_static "\n";
$bar = new Bar();
print 
$bar->fooStatic() . "\n";
?>

Example#2 Ejmeplo de método Static

<?php
class Foo {
    public static function 
aStaticMethod() {
        
// ...
    
}
}

Foo::aStaticMethod();
?>