mirror of
https://github.com/php/doc-es.git
synced 2026-03-25 16:02:13 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@338437 c90b9560-bf6c-de11-be94-00142212c4b1
162 lines
4.6 KiB
XML
162 lines
4.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 7e52ec86851a62d1d00109ccffa5dab5c73e5cc2 Maintainer: seros Status: ready -->
|
|
<!-- Reviewed: no Maintainer: seros -->
|
|
<sect1 xml:id="language.oop5.static" xmlns="http://docbook.org/ns/docbook">
|
|
<title>La palabra reservada 'static'</title>
|
|
|
|
<tip>
|
|
<simpara>
|
|
Esta página describe el uso de la palabra reservada <literal>static</literal> para
|
|
definir métodos y propiedades estáticos. <literal>static</literal> también se
|
|
puede usar para
|
|
<link linkend="language.variables.scope.static">definir variables estáticas</link>
|
|
y para
|
|
<link linkend="language.oop5.late-static-bindings">enlaces estáticos en tiempo de ejecución</link>.
|
|
Por favor, consulte estas páginas para más información sobre estos significados de
|
|
<literal>static</literal>.
|
|
</simpara>
|
|
</tip>
|
|
|
|
<para>
|
|
Declarar propiedades o métodos de clases como estáticos los hacen accesibles
|
|
sin la necesidad de instanciar la clase. Una propiedad declarada como
|
|
static no puede ser accedida con un objeto de clase instanciado (aunque
|
|
un método estático sí lo puede hacer).
|
|
</para>
|
|
|
|
<para>
|
|
Por motivos de compatibilidad con PHP 4, si no se utiliza ninguna
|
|
declaración de <link linkend="language.oop5.visibility">visibilidad</link>,
|
|
se tratará a las propiedades o métodos como si hubiesen sido definidos como
|
|
<literal>public</literal>.
|
|
</para>
|
|
|
|
<sect2 xml:id="language.oop5.static.methods">
|
|
<title>Métodos estáticos</title>
|
|
|
|
<para>
|
|
Debido a que los métodos estáticos se pueden invocar sin tener creada
|
|
una instancia del objeto, la seudovariable <varname>$this</varname>
|
|
no está disponible dentro de los métodos declarados como estáticos.
|
|
</para>
|
|
|
|
<caution>
|
|
<simpara>
|
|
En PHP 5, llamar a métodos no estáticos de forma estática genera una
|
|
advertencia de nivel <constant>E_STRICT</constant>.
|
|
</simpara>
|
|
</caution>
|
|
|
|
<warning>
|
|
<simpara>
|
|
En PHP 7, llamar a métodos no estáticos de forma estática está obsoleto y
|
|
generará una advertencia <constant>E_DEPRECATED</constant>. El soporte para
|
|
las llamadas a métodos no estáticos de forma estática podría ser eliminado en el futuro.
|
|
</simpara>
|
|
</warning>
|
|
|
|
<example>
|
|
<title>Ejemplo de método estático</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
class Foo {
|
|
public static function unMétodoEstático() {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
Foo::unMétodoEstático();
|
|
$nobmre_clase = 'Foo';
|
|
$nobmre_clase::unMétodoEstático(); // A partir de PHP 5.3.0
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="language.oop5.static.properties">
|
|
<title>Propiedades estáticas</title>
|
|
|
|
<para>
|
|
A las propiedades estáticas no puede acceder a través del objeto utilizando el
|
|
operador flecha (->).
|
|
</para>
|
|
|
|
<para>
|
|
Como cualquier otra variable estática de PHP, las propiedades estáticas
|
|
sólo pueden ser inicializadas utilizando un string literal o una constante;
|
|
las expresiones no están permitidas. Por tanto, se puede inicializar una propiedad
|
|
estática con enteros o arrays (por ejemplo), pero no se puede hacer con
|
|
otra variable, con el valor de devolución de una función, o con un objeto.
|
|
</para>
|
|
|
|
<para>
|
|
A partir de PHP 5.3.0, es posible hacer referencia a una clase usando una
|
|
variable. El valor de la variable no puede ser una palabra reservada (p.ej.,
|
|
<literal>self</literal>, <literal>parent</literal> y <literal>static</literal>).
|
|
</para>
|
|
|
|
<example>
|
|
<title>Ejemplo de propiedad estática</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
class Foo
|
|
{
|
|
public static $mi_static = 'foo';
|
|
|
|
public function valorStatic() {
|
|
return self::$mi_static;
|
|
}
|
|
}
|
|
|
|
class Bar extends Foo
|
|
{
|
|
public function fooStatic() {
|
|
return parent::$mi_static;
|
|
}
|
|
}
|
|
|
|
|
|
print Foo::$mi_static . "\n";
|
|
|
|
$foo = new Foo();
|
|
print $foo->valorStatic() . "\n";
|
|
print $foo->mi_static . "\n"; // "Propiedad" mi_static no definida
|
|
|
|
print $foo::$mi_static . "\n";
|
|
$nombreClase = 'Foo';
|
|
print $nombreClase::$mi_static . "\n"; // A partir de PHP 5.3.0
|
|
|
|
print Bar::$mi_static . "\n";
|
|
$bar = new Bar();
|
|
print $bar->fooStatic() . "\n";
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
--> |