我覺得最好使用圓括號實例化類,即使構造函數不需要任何參數。雖然你的例子做同樣的事情,但如果構造函數改變了,他們不會。這是品味和風格的問題。
這是你的第一個例子:
<?php
class foo
{
public function __construct()
}
$foo1 = new foo;
這樣的作品,但如果我們這樣做了什麼?
public function __construct($db = null) {}
..好,那麼它將仍然工作,因爲這些論點有默認值。
但是,如果我們這樣做?
public function __construct($db) {}
..它會由於缺少參數而中斷,並且您需要括號才能傳遞參數。如果你回頭去讓foo構造函數更有趣,那麼你只需添加括號和所有參數。
最後,語言做演變。我從來沒有看到PHP抱怨,當你使用括號時,但如果你不這樣做,它會有一天變得脾氣暴躁。一些做使用無括號的方式說我們正在實例化這個類沒有構造函數。這是個人的品味。您可以使用有意義的缺席:
$f = new foo; // class has no constructor, or constructor has no arguments
$f = new foo(); // class has a constructor with default arguments we can set later
$f = new foo($bar) // class has a constructor, and it needs arguments
如果在整個大型代碼庫中一致地進行操作,上面的操作可以節省時間。我不再那麼肯定了,因爲人們在測試中變得更好 - 但這只是我的看法。
但是,目前,沒有,給出您的示例兩者之間沒有區別。
它們本質上是一樣的,都會調用'__construct()'方法。但是,如果在實例化對象時需要一些參數,則需要使用括號。 – Crackertastic 2014-10-17 15:47:06
謝謝..你鏈接的問題看起來像重複。完美地回答我的問題。 – oliakaoil 2014-10-17 15:49:49
如果你的構造函數不接受任何參數,那麼調用你的,沒有beacess的類,或者無論你的首選項是什麼,如果你有構造函數參數,然後使用大括號來解析vvalues – 2014-10-17 16:10:13