2013-08-16 11 views
21

W Jave można zdefiniować zmienną public static final w klasie. Czy istnieje odpowiednik tego w PHP?Czy istnieją publiczne statyczne końcowe zmienne klasowe

Chciałbym wykonaj następujące czynności:

<?php 

class MyClass{ 

    public final static $finalVariable = "something"; 
} 

MyClass::$finalVariable 

i nigdy nie trzeba się martwić o $finalVariable zmienia i nie ma nową instancję dla każdej instancji o MyClass

+5

Zmienna * * to * zmienna *. Szukasz stałej *? – deceze

+2

@deceze - nie, oznacza to, że końcowy nie może być nadpisane w Childs, ale mogą być zmieniane (w przeciwieństwie stała) –

+0

przeczytać tutaj: http://stackoverflow.com/questions/2494381/static-classes-in -php-poprzez-streszczenie-słowo kluczowe –

Odpowiedz

35

Od this page w podręczniku PHP:

Uwaga: Właściwości nie mogą zostać uznane za ostateczne, tylko klasy i metody mogą być uznane za ostateczne.

Jednakże, można użyć klasy stałych jak opisano here.

Twój przykład mogłoby wyglądać tak:

<?php 

class MyClass{ 
    const finalVariable = "something"; 
} 

MyClass::finalVariable; 
?> 

wyjątkiem oczywiście, że finalVariable naprawdę nie jest odpowiednia nazwa, ponieważ nie jest zmienna =).

+1

To również nie zapobiega nadpisywaniu jej podklas, jak można się spodziewać po "ostatecznym". Nadal można utworzyć podklasę o treści "const finalVariable = 99;" w instancjach podklasy będzie to 99. – TextGeek

4

Nie ma czegoś takiego jak final lub readonly słowa kluczowe/pojęcia dla zmiennych członkowskich w PHP OOP. final samo w sobie jest dostępne dla samych klas i funkcji zawartych tylko w sobie.

To, co należy rozważyć zamiast tego, to class constant, to zagwarantuje, że wartość nie może się zmienić.

class MyClass 
{ 
    const FINALVARIABLE = "something"; 
} 

// Usage 
MyClass::FINALVARIABLE 
+1

Istnieje słowo kluczowe "final" w PHP (od PHP5), ale dotyczy tylko metod, a nie zmiennych. – brianmearns

+1

@ sh1ftst0rm Tak, dziękuję, właśnie aktualizowałem swoją odpowiedź, aby uzyskać właściwe brzmienie :) –

Powiązane problemy