2013-03-25 53 views
0

有沒有方法在類函數內定義常量?
例子:在函數內定義一個PHP類常量

class ExampleApp 
{ 
    const FORM = TRUE; 

    public function __construct() 
    { 
     switch(Base::color()) 
     { 
      case 'green': 
       self::FORM = 'G'; 
       break; 
      case 'red': 
       self::FORM = 'R'; 
       break; 
      default: 
       self::FORM = 'W'; 
       break; 
     } 
    } 

    public function process() { return TRUE; } 
} 


上面的示例代碼不會明顯工作!

從我的編程知識你不能重新定義常數,否則他們將是「常量」。但是,如何在函數中定義一個costant?在我的例子中,函數是構造函數,還是完全不可能?

+0

調用它,您可以使用'define'宣佈在運行時間,而不是分析時恆定獲取表單的顏色。我會簡單地使用一個變量,並承諾不會修改它。 – 2013-03-25 17:10:52

+0

似乎有一些混淆'恆定'與'靜態' – Motes 2013-03-25 17:13:24

回答

5

沒有通過保存它的屬性。不是一個靜態屬性,只是一個有getter和setter的屬性。

然後你就可以用$example_app->getFormColor();

7

我想你想的靜態屬性,而不是一個恆定的

public static $form = true;

但是,不要以大寫字母把變量名的話,因爲它不是一個常量,不混淆其他開發商。

您可以asccess像你在你的方法與self::form

+0

- >回覆:我想解決方案將是使用一個「靜態」變量(不是一個真正的常數,但表現爲一個)內的功能或只是一個正常的常量使用define()。 – tfont 2013-03-25 17:45:24

+0

這真的取決於你想要做什麼,但無論哪種方式,我認爲你需要@Hayden在他的回答中建議的內容,或者我的答案與靜態屬性 – 2013-03-25 17:58:25

+1

訪問「靜態」屬性時,您必須包含美元符號。訪問'$ form'屬性的正確方法是'self :: $ form'。 – 2015-07-23 09:01:09