2009-12-22 6 views
59

Ich habe immer angenommen, dass - in Ermangelung von Konstruktor-Parametern - die Klammern (geschweifte Klammern) beim Erstellen einer Klasseninstanz dem Klassennamen folgen, optional sind und dass Sie sie nach eigenem Belieben ein- oder ausschließen können.PHP Klasseninstanziierung. Um die Klammern zu verwenden oder nicht?

Dass diese beiden Aussagen waren gleich:

$foo = new bar; 
$foo = new bar(); 

Bin ich richtig? Oder gibt es eine Bedeutung für die Klammern, die mir nicht bekannt sind?

Ich weiß, das klingt wie eine RTM-Frage, aber ich habe eine Weile gesucht (einschließlich der gesamten PHP OOP-Abschnitt) und ich kann nicht scheinen, eine klare Antwort zu finden.

Antwort

47

Sie sind gleichwertig. Wenn Sie nicht mit einer code convention Codierung arbeiten, verwenden Sie, was Ihnen besser gefällt. Persönlich lasse ich es lieber weg, da es mir wirklich nur Krempel ist.

+2

Einverstanden. Wenn der Konstruktor keine Parameter annimmt, lasse ich sie auch – AntonioCS

+1

Danke. Ich hatte gehofft, dass dies der Fall war. - Ich persönlich nehme sie gerne immer mit. Schlechte Angewohnheit von meinen Java/C# -Tagen :) – Atli

+20

..auch der Endteil sieht aus wie ein grinsender singender Affe(); laaaa-la – 0scar

4

$foo = new bar() wäre nützlich über $foo = new bar, wenn Sie Argumente an den Konstruktor übergeben. Zum Beispiel:

class bar { 

    public $user_id; 

    function __construct($user_id) { 
     $this->user_id = $user_id 
    } 
} 

-

$foo = new bar($user_id); 

Abgesehen davon, und wie bereits in der akzeptierten Antwort erwähnt, gibt es keinen Unterschied.