2012-04-10 6 views
0

So habe ich ein Objekt, das eine Zeichenfolge enthalten könnte, die einige Daten enthält, muss ich das Objekt oder die Zeichenfolge überprüfen, aber ich kann nicht denken, warum ich es in die Methode und nicht den Konstruktor übergeben würde gibt es bestimmte Fälle, in denen ich es lieber durch den Konstruktor als durch die Methode oder durch die Methode und nicht durch den Konstruktor leiten sollte?Übergeben Objekt durch Konstruktor oder Methode

Dies ist PHP-Code.

+0

Könnten Sie etwas Code eingeben? Ich nehme an, Sie sprechen über PHP. – Tei

+0

Ich habe wirklich keinen Code, es ist nur eine allgemeine Frage wirklich –

+0

Die Frage war mir unklar, weil ich nicht in der Lage war zu sagen, ob eine Javascript-Frage mit dem falschen Tag gepostet wurde. – Tei

Antwort

2

Konstruktor ist auch Methode Unterschiede ist nur in seiner Verwendung. Es gibt einige Dinge, die wir bei der Erstellung eines Objekts einer Klasse tun müssen. Für diese Dinge übergeben wir Object/Setting-Argumente an Konstruktor und wenn wir einige Daten im Kontext dieser Klasse verarbeiten müssen, verwenden wir method. Ich denke, das war, was Sie fragen wollten "Unterschied b/w Verwendung von Methode und Konstruktor". Wenn Sie ein Coding-Problem haben, sagen Sie mir das Szenario.

+0

Danke dafür :) –

0

Übergeben Sie ein Objekt in einen Konstruktor, wenn Sie es zur späteren Verwendung mit einer oder mehreren Methoden im Objekt speichern möchten. Wenn Sie es dann oder einer Kopie einer Membervariablen zuweisen, wird es Teil des "Status" des Objekts.

Wenn das zu übergebende Objekt vorübergehend ist und Sie es nur für die Lebensdauer der Methode benötigen, können Sie es als Argument an die Methode übergeben.

+0

Ich sehe, also wäre es falsch, es einer Eigenschaft zuzuordnen, die mit mehreren Methoden verwendet werden soll, wenn es eine Methode durchlaufen hat? –

+0

Es wäre überflüssig, es durch eine Methode zu übergeben, wenn es bereits während der Konstruktion in einer Eigenschaft gespeichert ist. Es bleibt in der Objektinstanz für den Zugriff von jeder Methode jederzeit. Es würde funktionieren, aber es bricht den "Einkapselungsteil" der objektorientierten Programmierung. – tamboril

+0

Eigentlich gibt es ein Oop-Konzept, das als Setter-Injektion bekannt ist, bei dem ein Objekt mit einer anderen Methode als einem Konstruktor festgelegt wird. Es ist nützlich, wenn Sie nicht mit dem Konstruktor herumhantieren wollen. So zu sagen, dass es "Einkapselung bricht" ist nicht immer richtig. – Cerad

0

Das Übergeben eines Arguments durch einen Objektkonstruktor hat nur einen nominellen Vorteil, und das ist, dass Sie den zusätzlichen Schritt des direkten Aufrufs der Setter entfernen.

$foo = new Foo($dbo); 

// Same thing as 
$foo = new Foo(); 

$foo->setDbo($dbo); 

Ich persönlich ziehe Setter explizit zu nennen, anstatt übergeben sie an den Konstruktor durch, weil ich mag mit 15 Unterschrift Argumenten nicht am Ende, und ich kann sehen, wie der aufrufende Code das Objekt verwendet wird.

Von Zeit zu Zeit verwende ich Konstruktoren für die Vorbereitung verwandter Objekte, aber niemals für die Übergabe von Argumenten.

Verwandte Themen