[英]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.