<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>freakcommander.de &#187; Typisierung</title>
	<atom:link href="http://www.freakcommander.de/tag/typisierung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.freakcommander.de</link>
	<description>Kann alles. Weiß alles. Macht alles.</description>
	<lastBuildDate>Thu, 29 Jul 2010 09:04:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>PHP: Foreach Variablen Typ definieren</title>
		<link>http://www.freakcommander.de/2603/computer/php-foreach-variablen-typ-definieren/</link>
		<comments>http://www.freakcommander.de/2603/computer/php-foreach-variablen-typ-definieren/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 14:34:50 +0000</pubDate>
		<dc:creator>crille</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Typisierung]]></category>

		<guid isPermaLink="false">http://www.freakcommander.de/?p=2603</guid>
		<description><![CDATA[Ja, die Welt ist leider nicht so ganz einfach. Nachdem ich in diesem Beitrag &#252;ber die Typisierung von Klassenattributen etwas geschrieben habe, dachte ich, dass man Variablen in der foreach-Schleife ebenfalls so typisieren kann. Felix&#8217; IDE kann das wohl auch mit folgender Methode foreach($this-&#62;kunden as $kundeData) { /** @var Kunde */ $kunde = $kundeData[&#039;kunde&#039;]; [...] [...]]]></description>
			<content:encoded><![CDATA[<p>Ja, die Welt ist leider nicht so ganz einfach. Nachdem ich in <a href="http://www.freakcommander.de/2585/computer/frage-an-die-php-oop-experten-attribut-als-instanz-einer-anderen-klasse/">diesem Beitrag &#252;ber die Typisierung von Klassenattributen</a> etwas geschrieben habe, dachte ich, dass man Variablen in der foreach-Schleife ebenfalls so typisieren kann. Felix&#8217; IDE kann das wohl auch mit folgender Methode</p>
<pre class="brush: php">foreach($this-&gt;kunden as $kundeData)
{
    /**
    @var Kunde
    */
    $kunde = $kundeData[&#039;kunde&#039;];
    [...]
}
</pre>
<p>NetBeans kriegt es allerdings so nicht hin, dort muss man diesen Code verwenden:</p>
<pre class="brush: php">foreach($this-&gt;kunden as $kundeData)
{
    /* @var $kunde Kunde */
    $kunde = $kundeData[&#039;kunde&#039;];
    [...]
}
</pre>
<p>Und zwar genau mit oben angegebenen Format. Sobald eine Abweichung drin ist (ein Slash zu viel), geht&#8217;s schon nicht mehr. Sehr entwicklerfreundlich! :)</p>
<p>[via <a href="http://blogs.sun.com/netbeansphp/entry/defining_variable_type_in_a">NetBeans Blog</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freakcommander.de/2603/computer/php-foreach-variablen-typ-definieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frage an die PHP OOP-Experten: Typisierung von Klassenattributen</title>
		<link>http://www.freakcommander.de/2585/computer/frage-an-die-php-oop-experten-attribut-als-instanz-einer-anderen-klasse/</link>
		<comments>http://www.freakcommander.de/2585/computer/frage-an-die-php-oop-experten-attribut-als-instanz-einer-anderen-klasse/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 12:28:01 +0000</pubDate>
		<dc:creator>crille</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Klasse]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Typisierung]]></category>

		<guid isPermaLink="false">http://www.freakcommander.de/?p=2585</guid>
		<description><![CDATA[Die &#220;berschrift h&#246;rt sich komplizierter an als sie ist. Veranschaulichen wir das Problem mal an einem Beispiel. Ich habe eine Klasse Erde, Mars, Venus etc. Diese Klassen sehen so aus: class Erde{ var $name; var $groesse; var $avgEntfernungZurSonne; var $bevoelkerung; ... function __construct(...) { ... } function eineFkt(...) { ... } } Nun habe ich [...]]]></description>
			<content:encoded><![CDATA[<p>Die &#220;berschrift h&#246;rt sich komplizierter an als sie ist. Veranschaulichen wir das Problem mal an einem Beispiel. Ich habe eine Klasse Erde, Mars, Venus etc. Diese Klassen sehen so aus:</p>
<pre class="brush: php">
class Erde{
var $name;
var $groesse;
var $avgEntfernungZurSonne;
var $bevoelkerung;
...

function __construct(...) {
...
}

function eineFkt(...) {
...
}
}
</pre>
<p>Nun habe ich noch eine Klasse Sonnensystem. Und diese Klasse soll als Attribute die einzelnen Planeten beinhalten, also:</p>
<pre class="brush: php">
class Sonnensystem{
var $erde;
var $venus;
var $mars;
...

function __construct($erde, $venus,...) {
$this-&gt;erde = $erde;
$this-&gt;venus = $venus;
...
}

function gebReihenfolgeDerPlanetenAbSonne() {
$arrayEntfernung =
($this-&gt;erde-&gt;name =&gt; $this-&gt;erde-&gt;avgEntfernungZurSonne,
$this-&gt;venus-&gt;name =&gt; $this-&gt;venus-&gt;avgEntfernungZurSonne,
...) ;
...
}
}
</pre>
<p>Das Problem ist jetzt, dass NetBeans in Sonnensystem::gebReihenfolgeDerPlanetenAbSonne() nicht wei&#223;, von welchem Typ die Variablen $this-&gt;erde und $this-&gt;venus sind. Denn die werden ja nirgendwo genauer in der Klasse Sonnensystem spezifiziert. Folglich kann mir NetBeans auch nicht vorschlagen, welche Attribute/Methoden ich bei $this-&gt;erde aufrufen m&#246;chte. Das finde ich allerdings extrem schwach, denn genau deswegen setze ich ja ein IDE ein.</p>
<p>Mir sind zwar bei Recherchen Schlagw&#246;rter wie z.B. <a href="http://php.net/manual/de/language.oop5.typehinting.php">Typehinting</a> &#252;ber den Weg gelaufen, aber das k&#246;nnte ich ja nur im Konstruktor einsetzen und dann w&#228;re nur dort sicher gestellt, dass $erde eine Instanz der Klasse Erde ist und hilft folglich nicht wirklich weiter.</p>
<p>Also, mal konkretisiert: Wie kann ich in PHP festlegen, dass ein Attribut von einem bestimmten Typ ist. So zumindest nicht:</p>
<pre class="brush: php">
class Sonnensystem{
var Erde $erde;
...
</pre>
<p><strong>Update + Update + Update + Update</strong><br />
Damit die IDE NetBeans wei&#223;, von welchem Typ ein Klassen-Attribut ist, muss man PHPDoc-Kommentare verwenden:</p>
<pre class="brush: php">
class Sonnensystem{
/**
* @var Erde
**/
private $erde;
...
</pre>
<p>Felix schlug dann noch vor, das Attribut auf &#8220;private&#8221; zu setzen und dann im Konstruktor mit TypeHinting zu arbeiten. Das funktionierte bei mir in NetBeans allerdings nicht. Da scheint es also Unterschiede zwischen den IDEs zu geben.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freakcommander.de/2585/computer/frage-an-die-php-oop-experten-attribut-als-instanz-einer-anderen-klasse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
