<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: Fluently self-contained Factory Method</title>
	<atom:link href="http://blog.ebene7.com/2010/09/29/fluently-self-contained-factory-method/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ebene7.com/2010/09/29/fluently-self-contained-factory-method/</link>
	<description></description>
	<lastBuildDate>Wed, 19 Dec 2018 08:31:45 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>Von: Daniel</title>
		<link>https://blog.ebene7.com/2010/09/29/fluently-self-contained-factory-method/comment-page-1/#comment-933</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Wed, 29 Sep 2010 11:11:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ebene7.com/?p=1510#comment-933</guid>
		<description>Mit __CLASS__ bekommst du nur den Namen der Klasse in der die jeweilige Methode definiert wurde. Hilft bei Vererbung dann leider auch nicht weiter.</description>
		<content:encoded><![CDATA[<p>Mit __CLASS__ bekommst du nur den Namen der Klasse in der die jeweilige Methode definiert wurde. Hilft bei Vererbung dann leider auch nicht weiter.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Jan Markmann</title>
		<link>https://blog.ebene7.com/2010/09/29/fluently-self-contained-factory-method/comment-page-1/#comment-932</link>
		<dc:creator>Jan Markmann</dc:creator>
		<pubDate>Wed, 29 Sep 2010 08:31:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ebene7.com/?p=1510#comment-932</guid>
		<description>Wie wäre es statt &quot;self&quot; &quot;__CLASS__&quot; zu nutzen. Schau dir mal die Singleton Factories in symfony 1.4 z.B. bei sfContext an.
In etwa:
public function createInstance($class = __CLASS__)
{
  return new $class();
}

soweit ich weiß macht das bei Vererbung keine Probleme und ist auch nochmal was flexibler.</description>
		<content:encoded><![CDATA[<p>Wie wäre es statt &#8220;self&#8221; &#8220;__CLASS__&#8221; zu nutzen. Schau dir mal die Singleton Factories in symfony 1.4 z.B. bei sfContext an.<br />
In etwa:<br />
public function createInstance($class = __CLASS__)<br />
{<br />
  return new $class();<br />
}</p>
<p>soweit ich weiß macht das bei Vererbung keine Probleme und ist auch nochmal was flexibler.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: David</title>
		<link>https://blog.ebene7.com/2010/09/29/fluently-self-contained-factory-method/comment-page-1/#comment-931</link>
		<dc:creator>David</dc:creator>
		<pubDate>Wed, 29 Sep 2010 08:20:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ebene7.com/?p=1510#comment-931</guid>
		<description>Ein netter Ansatz, der mir auch schon hin und wieder die eine oder andere Code-Zeile erspart hat. Was man damit übrigens auch relativ elegant machen kann, ist unterschiedliche Konstruktoren (&quot;Pseudo-Polymorphismus&quot;) zu generieren, in etwa so:

 MeineKlasse::createWithA(A $a);
 MeineKlasse::createWithBC(B $b, C $c);
 MeineKlasse::createWithAC(A $a, C $c);

Im Normalfall sollten so unterschiedliche Konstruktoren ja gar nicht notwendig sein, von Fall zu Fall könnte man sich damit aber einiges an Code (und vor allem an optionalen Konstruktor-Argumenten) sparen.

Will man übrigens erzwingen, dass eine Klasse nur über diese create()-Methode instanziiert werden kann, so kann man ganz einfach den Konstruktor auf private oder protected setzen:

protected function __construct() {}</description>
		<content:encoded><![CDATA[<p>Ein netter Ansatz, der mir auch schon hin und wieder die eine oder andere Code-Zeile erspart hat. Was man damit übrigens auch relativ elegant machen kann, ist unterschiedliche Konstruktoren (&#8220;Pseudo-Polymorphismus&#8221;) zu generieren, in etwa so:</p>
<p> MeineKlasse::createWithA(A $a);<br />
 MeineKlasse::createWithBC(B $b, C $c);<br />
 MeineKlasse::createWithAC(A $a, C $c);</p>
<p>Im Normalfall sollten so unterschiedliche Konstruktoren ja gar nicht notwendig sein, von Fall zu Fall könnte man sich damit aber einiges an Code (und vor allem an optionalen Konstruktor-Argumenten) sparen.</p>
<p>Will man übrigens erzwingen, dass eine Klasse nur über diese create()-Methode instanziiert werden kann, so kann man ganz einfach den Konstruktor auf private oder protected setzen:</p>
<p>protected function __construct() {}</p>
]]></content:encoded>
	</item>
</channel>
</rss>
