Statiskt nyckelord: Skillnad mellan sidversioner
Admin (diskussion | bidrag) (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...') |
Admin (diskussion | bidrag) 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
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.
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