2013-08-16 61 views
21

在Jave中,您可以在類中定義一個public static final變量。在PHP中有這樣的等價物嗎?是否存在公共靜態最終類變量

我想做到以下幾點:

<?php 

class MyClass{ 

    public final static $finalVariable = "something"; 
} 

MyClass::$finalVariable 

,而不是以往任何時候都不必擔心$finalVariable變化,沒有爲MyClass

+5

A *變量*是*變量*。你在尋找一個*常數*嗎? – deceze

+2

@deceze - 不,最終意味着它不能在孩子的被重寫,但可以改變的(不像常數) –

+0

這裏閱讀: http://stackoverflow.com/questions/2494381/static-classes-in -php-via-abstract-keyword –

回答

35

從PHP手冊this page

注:屬性不能被聲明爲final,只有類和方法可以被聲明爲final。

但是,您可以使用類常量描述here

你的例子是這個樣子:

<?php 

class MyClass{ 
    const finalVariable = "something"; 
} 

MyClass::finalVariable; 
?> 

當然除了finalVariable是不是真的合適的名稱,因爲它不是變量=)。

+1

這也不會阻止子類重寫它,正如人們可能期望的「最終」。你仍然可以創建一個說「const finalVariable = 99;」的子類在子類中它將是99。 – TextGeek

4

每個實例化一個新的實例有沒有這樣的東西finalreadonly PHP OOP中成員變量的關鍵字/概念。 final本身僅適用於課程本身和功能。

你應該考慮使用的是class constant,這將保證值不能改變。

class MyClass 
{ 
    const FINALVARIABLE = "something"; 
} 

// Usage 
MyClass::FINALVARIABLE 
+1

PHP中有一個'final'關鍵字(來自PHP5),但僅適用於方法,而不適用於變量。 – brianmearns

+1

@ sh1ftst0rm是的謝謝,只是更新我的答案,需要得到措辭的權利:) –

相關問題