簡體   English   中英

無法在數組中調用函數

[英]Can't call function in array

我試圖像這樣調用數組內的函數:

protected $settings = array(
        'prefix' => $this->getPrefix(),
    );

表達式不允許作為默認值的字段

getPrefix()

public function getPrefix()
{
    return "hello world";
}

我不能這樣做?

根據受protected關鍵字判斷,您正在嘗試設置對象屬性。 根據PHP 手冊

它們通過使用public,protected或private之一,然后是普通變量聲明來定義。 此聲明可能包括初始化,但此初始化必須是常量值 - 也就是說,它必須能夠在編譯時進行評估,並且必須不依賴於運行時信息才能進行評估。

為了設置你的值,把它放到構造函數中:

class Settings
{
    protected $settings;

    public function __constructor() {
        $this->settings = array(
            'prefix' => $this->getPrefix(),
        );
    }

    public function getPrefix() {
        return "Hello, World!";
    }
}

PHP編譯時必須定義您的對象屬性。 但是,您可以簡單地初始化構造函數中的值。

class MyClass
{
    protected $settings = array();

    public function __construct()
    {
        $this->settings['prefix'] => $this->getPrefix()
    }

    public function getPrefix()
    {
        return "hello world";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM