簡體   English   中英

使用PHP中的對象函數調用鏈接構造函數

[英]Chaining a constructor with an object function call in PHP

有誰知道在PHP的下一個版本中是否可以使用以下表達式?

(new A())->a();    // Causes a syntax error

我覺得非常討厭,目前必須寫2行而不是1行:

$c = new A();
$c->a();

第一個版本不會導致解析錯誤,它完全有效。 第二個,實際上是不可能的,但你可以用一些編碼標准輕松克服這個問題。

如果每個團隊成員為每個定義的類創建一個與該類同名的函數,以及一個類似於類構造函數簽名的簽名,那么您將不會遇到第二個問題。 例:

class Foo
{
    public function __construct($param)
    {}

    public function bar()
    {}
}

/**
 * @return Foo
 */
function Foo($param)
{
    return new Foo($param);
}

Foo()->bar();

當然,您仍然會遇到庫代碼問題。

new-expression可以用作函數參數。 函數調用可以用作成員訪問運算符的左側。 因此,您只需要定義一個函數:

function with($object) { return $object; }

with(new A()) -> a();

每班不需要額外的努力。

這可以從PHP 5.4+開始

已添加實例化的類成員訪問權限,例如(new Foo) - > bar()。

暫無
暫無

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

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