Statiskt nyckelord: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '== Static Keyword ¶ == {{Tip|Den här sidan beskriver användningen av nyckelordet static för att definiera statiska metoder och egenskaper. static kan också användas för att definiera statiska variabler, definiera statiska anonyma funktioner och för late static bindings. Vänligen se dessa sidor för information om dessa betydelser av static.}} Att deklarera klassegenskaper eller metoder som statiska gör dem tillgängliga utan att en instans av klassen behöver...')
 
Ingen redigeringssammanfattning
 
Rad 1: Rad 1:
== Static Keyword ==
== Static Keyword ==
{{Tip|Den här sidan beskriver användningen av nyckelordet static för att definiera statiska metoder och egenskaper. static kan också användas för att definiera statiska variabler, definiera statiska anonyma funktioner och för late static bindings. Vänligen se dessa sidor för information om dessa betydelser av static.}}
{{Tip|Den här sidan beskriver användningen av nyckelordet static för att definiera statiska metoder och egenskaper. static kan också användas för att definiera statiska variabler, definiera statiska anonyma funktioner och för late static bindings. Vänligen se dessa sidor för information om dessa betydelser av static.}}


Att deklarera klassegenskaper eller metoder som statiska gör dem tillgängliga utan att en instans av klassen behöver skapas. Dessa kan också nås statiskt inom ett instanserat klassobjekt.
Att deklarera klassegenskaper eller metoder som statiska gör dem tillgängliga utan att en instans av klassen behöver skapas. Dessa kan också nås statiskt inom ett instanserat klassobjekt.


=== Statiska metoder ===
=== Statiska metoder ===
Eftersom statiska metoder kan anropas utan att en instans av objektet skapas, är pseudo-variabeln $this inte tillgänglig inuti metoder som deklareras som statiska.
Eftersom statiska metoder kan anropas utan att en instans av objektet skapas, är pseudo-variabeln $this inte tillgänglig inuti metoder som deklareras som statiska.


Rad 26: Rad 26:
</pre>
</pre>


=== Statiska egenskaper ===
=== Statiska egenskaper ===
Statiska egenskaper nås med hjälp av Scope Resolution Operator (::) och kan inte nås genom objektoperatören (->).
Statiska egenskaper nås med hjälp av Scope Resolution Operator (::) och kan inte nås genom objektoperatören (->).



Nuvarande version från 18 augusti 2024 kl. 19.08

Static Keyword

Mall:Tip

Att deklarera klassegenskaper eller metoder som statiska gör dem tillgängliga utan att en instans av klassen behöver skapas. Dessa kan också nås statiskt inom ett instanserat klassobjekt.

Statiska metoder

Eftersom statiska metoder kan anropas utan att en instans av objektet skapas, är pseudo-variabeln $this inte tillgänglig inuti metoder som deklareras som statiska.

Mall:Warning

Före PHP 8.0.0, var det föråldrat att anropa icke-statiska metoder statiskt, och genererade en E_DEPRECATED-varning.

Exempel #1 Statiskt metodexempel

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

Foo::aStaticMethod();
$classname = 'Foo';
$classname::aStaticMethod();
?>

Statiska egenskaper

Statiska egenskaper nås med hjälp av Scope Resolution Operator (::) och kan inte nås genom objektoperatören (->).

Det är möjligt att referera till klassen med en variabel. Variabelns värde kan inte vara ett nyckelord (t.ex. self, parent och static).

Exempel #2 Statiskt egenskapsexempel

<?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";      // Odefinierad "egenskap" my_static 

print $foo::$my_static . "\n";
$classname = 'Foo';
print $classname::$my_static . "\n";

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

Utdata från exemplet ovan i PHP 8 är liknande:

foo
foo

Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23

Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23

foo
foo
foo
foo

Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.oop5.static.php
PHP
Språkreferens
Språkreferens#Klasser_och_Objekt