Trait oder Elternklasse in einer Klassen Gruppe? – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 00:42:22 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1762986#m1762986 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1762986#m1762986 <p>moin,</p> <p>Ich habe eine Klassengruppe, die, per Instanziierung, einen SQL Teilstring erzeugen. Ich nenne z.B. <strong>In</strong>, <strong>Between</strong>, <strong>Cases</strong>, <strong>Arithmetic</strong>, <strong>LogicContainer</strong> aus der Klassengruppe.</p> <p>Die Klassen sind lose gekoppelt. Einige Klassen können sich gegenseitig, per <em>Consrtructor Injection</em>, aufrufen:</p> <pre><code class="block language-php"><span class="token keyword">new</span> <span class="token function">LogicContainer</span><span class="token punctuation">(</span> <span class="token keyword">new</span> <span class="token class-name">Between</span><span class="token punctuation">(</span> <span class="token comment">/* Params */</span><span class="token punctuation">,</span> <span class="token class-name static-context">LogicConstant</span><span class="token operator">::</span><span class="token constant">_AND</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> </code></pre> <p>Jeder Klasse bekommt, per <em>Constructor Injection</em> mit dazugehörigem <em>Interface</em> <em>(z.B. <strong>ExpressionInterface</strong>, <strong>PredicateInterface</strong>, <strong>FunctionInterface</strong>)</em>, Übergabewerte, die sie dann zwischenspeichen und ergänzen <code class="language-php"><span class="token variable">$this</span><span class="token operator">-></span><span class="token function">addString</span><span class="token punctuation">(</span> <span class="token variable">$expression</span><span class="token operator">-></span><span class="token function">getString</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">)</span></code>, um dann diese Zwischengespeicherten Werte, per <em>Constructor Injection</em>, an den nächsten weiter zureichen.</p> <p>Alle Klassen müssen über die selben Methoden verfügen:</p> <pre><code class="block language-php"><span class="token keyword">protected</span> <span class="token keyword">function</span> <span class="token function-definition function">addString</span> <span class="token punctuation">(</span> <span class="token keyword type-hint">string</span> <span class="token variable">$string</span> <span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword return-type">void</span><span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">getString</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword return-type">string</span><span class="token punctuation">;</span> </code></pre> <p>Kann man dieses Klassen Gebildes mit <em>Traits</em> oder mit einer <em>Elternklasse</em> realisieren? Ich sehe da <em>Pros</em> & <em>Cons</em>: Hab ihr erfahrungen?</p> <p>Ich für meinen Teil habs' mit einer abstrakten Elternklasse realisiert, von der alle Klassen erben und dann die Elternklasse mit Traits versehen. So spart man sich gehörig schreibarbeit.</p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 08:20:18 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1762994#m1762994 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1762994#m1762994 <p>Wenn Du beim Programmieren erfolgreich sein willst, musst Du Deinen eigenen Stil finden. Irgendwelche Entwurfsmuster nachzubauen bringt da gar nichts.</p> <p>Schönen Tag.</p> Trait oder Elternklasse in einer Klassen Gruppe? Fri, 17 Jan 20 11:36:02 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763111#m1763111 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763111#m1763111 <blockquote> <p>Ich habe eine Klassengruppe, die, per Instanziierung, einen SQL Teilstring erzeugen. Ich nenne z.B. In, Between, Cases, Arithmetic, LogicContainer aus der Klassengruppe.</p> </blockquote> <p>Das kann auch eine Klasse ganz allein lösen. Mein Ansatz wäre, eine Basisklasse zu entwerfen und die Aufgabe per Vererbung zu spezialisieren.</p> <blockquote> <p>Alle Klassen müssen über die selben Methoden verfügen:</p> </blockquote> <p>Das klingt nach Interface! Also werden diese Methoden in der Basisklasse definiert. Und in der Subklasse die von der Basiklasse erbt spezialisiert.</p> <p>MFG</p> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 07:46:02 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763179#m1763179 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763179#m1763179 <p>Tach!</p> <blockquote> <p>Alle Klassen müssen über die selben Methoden verfügen:</p> <pre><code class="block language-php"><span class="token keyword">protected</span> <span class="token keyword">function</span> <span class="token function-definition function">addString</span> <span class="token punctuation">(</span> <span class="token keyword type-hint">string</span> <span class="token variable">$string</span> <span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword return-type">void</span><span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">getString</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword return-type">string</span><span class="token punctuation">;</span> </code></pre> <p>Kann man dieses Klassen Gebildes mit <em>Traits</em> oder mit einer <em>Elternklasse</em> realisieren? Ich sehe da <em>Pros</em> & <em>Cons</em>: Hab ihr erfahrungen?</p> </blockquote> <p>Wenn etwas zu dem gehört, das eine Klasse ausmacht, dann würde ich es ihr direkt einbauen. Oder über Vererbung mitgeben, wenn der Code wiederverwendet wird. Die Basisklasse wird dabei abstrakt erstellt, wenn sie nicht selbständig verwendet werden kann. Code, der in nicht zusammenhängenden Klassen wiederverwendet werden soll, kommt in Traits. Falls überhaupt und sich kein besseres Konstrukt findet (Service zum Beispiel).</p> <blockquote> <p>Ich für meinen Teil habs' mit einer abstrakten Elternklasse realisiert, von der alle Klassen erben und dann die Elternklasse mit Traits versehen. So spart man sich gehörig schreibarbeit.</p> </blockquote> <p>Schreibarbeit ist nicht das Hauptkriterium, sondern das Veständnis des Codes für Außenstehende, also auch für dich in drei Wochen, und die Wartbarkeit. Damit ergibt sich quasi von selbst, dass man kein Dopplungen einbaut.</p> <p>dedlfix.</p> Dependency Injection, Vorsicht Falle Sun, 19 Jan 20 17:24:27 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763201#m1763201 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763201#m1763201 <p><a href="/users/6368" class="mention registered-user" rel="noopener noreferrer">@MB</a></p> <p>weil DI hier mehrfach angesprochen wurde:</p> <p>Wir haben ein PDO-Objekt erstellt und übergeben das dem Konstruktor der eigenen Klasse:</p> <pre><code class="block language-php"> <span class="token variable">$main</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">main</span><span class="token punctuation">(</span><span class="token variable">$pdo</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Wie wir wissen, ist bei diesem PDO-Objekt das Attribut PDO::ATTR_DEFAULT_FETCH_MODE auf PDO::FETCH_ASSOC gesetzt. Nun schauen wir doch mal was passiert, wenn wir dieses Attribut nach der Übergabe an den Konstruktor ändern:</p> <pre><code class="block language-php"> <span class="token variable">$pdo</span><span class="token operator">-></span><span class="token function">setAttribute</span><span class="token punctuation">(</span><span class="token class-name static-context">PDO</span><span class="token operator">::</span><span class="token constant">ATTR_DEFAULT_FETCH_MODE</span><span class="token punctuation">,</span> <span class="token class-name static-context">PDO</span><span class="token operator">::</span><span class="token constant">FETCH_OBJ</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Hierzu der restliche Code zum Verständnis.</p> <pre><code class="block language-php"><span class="token variable">$mesg</span> <span class="token operator">=</span> <span class="token variable">$main</span><span class="token operator">-></span><span class="token function">fetch_mesg</span><span class="token punctuation">(</span><span class="token number">88</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment"># Array erwartet?</span> <span class="token function">print_r</span><span class="token punctuation">(</span><span class="token variable">$mesg</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment"># wir haben ein Objekt bekommen!</span> <span class="token keyword">class</span> <span class="token class-name-definition class-name">main</span><span class="token punctuation">{</span> <span class="token keyword">function</span> <span class="token function-definition function">__construct</span><span class="token punctuation">(</span><span class="token variable">$pdo</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">PDO</span> <span class="token operator">=</span> <span class="token variable">$pdo</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function-definition function">fetch_mesg</span><span class="token punctuation">(</span><span class="token variable">$mid</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token variable">$sth</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">PDO</span><span class="token operator">-></span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"select * from forum where mesgid=?"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$sth</span><span class="token operator">-></span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token keyword">array</span><span class="token punctuation">(</span><span class="token variable">$mid</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$mesg</span> <span class="token operator">=</span> <span class="token variable">$sth</span><span class="token operator">-></span><span class="token function">fetchAll</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token variable">$mesg</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <p>Es zeigt sich, daß die Änderung am PDO auch dann wirksam werden, wenn diese Änderung nach der sog. Dependency Injection erfolgt. Die Erklärung hierfür ist ganz einfach: Das PDO-Objekt wird in der Eigenschaft $this->PDO referenziert. Das heißt, die Eigenschaft beeinhaltet keine Kopie sondern eine Referenz.</p> <p>Daraus ergibt sich eine wichtige Schlussfolgerung in Sachen Dependency Injection: Das injezierte Objekt kann im Nachhinein geändert werden. Und zwar außerhalb der Kapselung!</p> <p>MFG</p> Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 09:05:41 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763000#m1763000 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763000#m1763000 <p>@@pl</p> <blockquote> <p>Wenn Du beim Programmieren erfolgreich sein willst, musst Du Deinen eigenen Stil finden. Irgendwelche Entwurfsmuster nachzubauen bringt da gar nichts.</p> </blockquote> <p>Am besten unterscheidet sich der eigene Stil deutlich von dem, was alle anderen machen, damit er auch als eigener Stil erkennbar ist.</p> <p><em>Von Hotti lernen heißt programmieren lernen.</em></p> <p></sarcasm></p> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 09:19:10 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763003#m1763003 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763003#m1763003 <p>Hallo,</p> <blockquote> <p>Wenn Du beim Programmieren erfolgreich sein willst, musst Du Deinen eigenen Stil finden.</p> </blockquote> <p>Dann kannste es aber haken, dich bei Unternehmen als Programmierer zu bewerben. Wenn die sich einen Beispielcode von dir schicken lassen, ist kreativer eigener Stil eher nicht so angesagt...</p> <p>Gruß<br> Kalk</p> Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 09:26:43 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763006#m1763006 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763006#m1763006 <p>Lieber pl,</p> <blockquote> <p>Wenn Du beim Programmieren erfolgreich sein willst, musst Du Deinen eigenen Stil finden. Irgendwelche Entwurfsmuster nachzubauen bringt da gar nichts.</p> </blockquote> <p>"nachbauen" klingt nach "nachmachen" oder "nachempfinden" bzw. "nachvollziehen". Das ist der Inbegriff des Lernens. Dein Einwand "bringt da gar nichts" ist also inhaltlich völlig wertlos.</p> <p>Liebe Grüße</p> <p>Felix Riesterer</p> Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 11:18:38 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763015#m1763015 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763015#m1763015 <p>moin,</p> <blockquote> <p>Wenn Du beim Programmieren erfolgreich sein willst, musst Du Deinen eigenen Stil finden. Irgendwelche Entwurfsmuster nachzubauen bringt da gar nichts.</p> </blockquote> <p>Da muss ich den übrigen Kommentatoren recht geben bezogen auf deine Argumentation. Wozu haben wir den Schulen? Und nix anderes is es hier.</p> <p>Natürlich spielen zusätzlich <em>"autodidaktisches Lernen"</em> und <em>"Lerning by doing"</em> auch eine sehr wichtige Rolle. Aber ohne Vorkenntnis des Theroretischen Wissens brings relativ wenig.</p> <p>Und es ist extrem wichtig das man sich eine generelle Konvention erarbeitet, damit Programmiere besser kommunizieren können - <em>musste ich am eigenen Leibe erfahren, da der Code den ich Refactorieren musste, extrem unsauber war und der, der den Code geschrieben hatte, sich keiner Schuld bewusst war</em>. Insofern ist der Eigene Stil Gift für andere Programmierer . Das ist meine Erfahrung und ich denke, die Kommentatoren Teilen meine Erfahrungen.</p> <p>Es sei den Ich hab dich Falsch verstanden oder du hast was anderes gemein als du ausgedrückt hast . Geht mir exakt genauso .</p> <p>Aber zurück zum Thread…</p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 11:37:17 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763016#m1763016 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763016#m1763016 <p>moin,</p> <blockquote> <p>[...] Irgendwelche Entwurfsmuster nachzubauen bringt da gar nichts.</p> </blockquote> <p>Meines Wissens, ist mein SQL Projekt <em>"streng genommen"</em> nach keinem Entwurfsmuster nachempfunden, wenn man mal von der <em>ConstructorInjection</em> absieht, was gefühl jeder Programmierer anwendet, der im <em>OOP</em> unterwegs ist. NICHT <em>"streng genommen"</em> kann man grob ein <em>BuilderPattern</em> und <em>DecoratorPattern</em> ausmachen, weil ich es in der Form strukturiert habe, aber streng genommen sind keins von den beiden in meinem Projekt vorhanden.</p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 09:20:55 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763004#m1763004 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763004#m1763004 <p><a href="/users/20" class="mention registered-user" rel="noopener noreferrer">@Gunnar Bittersmann</a></p> <p>Deine Antwort ist nicht nur arrogant, sie geht auch am Thema vollständig vorbei. Programmieren ist ein Handwerk, das muss man selber lernen. Und das heißt, was man selber lernen muss, kann man gar nicht von jemand Anderem lernen.</p> <p>Meine Erfahrung im Programmieren jedoch, die gebe ich hier gerne weiter. Auch wenn ich die Tatigkeit Programmieren nur noch zu therapeutischen Zwecken betreibe oder auch gerade deswegen: Da bekommt der Begriff "erfolgreich" nämlich eine ganz besondere Bedeutung.</p> <p>Lass Dir das mal durch den Kopf gehen!</p> Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 09:24:09 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763005#m1763005 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763005#m1763005 <p>Hallo,</p> <blockquote> <p>was man selber lernen muss, kann man gar nicht von jemand Anderem lernen.</p> </blockquote> <p>Das ist natürlich Quatsch.</p> <p>Gruß<br> Kalk</p> Trait oder Elternklasse in einer Klassen Gruppe? Wed, 15 Jan 20 09:42:31 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763008#m1763008 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763008#m1763008 <p>Hallo pl,</p> <blockquote> <p>Programmieren ist ein Handwerk, das muss man selber lernen.</p> </blockquote> <p>Unser gesamtes Ausbildungssystem, sowohl im Handwerk als auch im Schulsystem, basiert darauf, dass andere etwas von einem Erfahreneren lernen. Entweder liegt die ganze Welt falsch oder du redest Stuss. Lass Dir das mal durch den Kopf gehen! </p> <p>Freundliche Grüße,<br> Christian Kruse</p> <div class="signature">-- <br> <a href="https://wwwtech.de/about" rel="noopener noreferrer">https://wwwtech.de/about</a> </div> Trait oder Elternklasse in einer Klassen Gruppe? Fri, 17 Jan 20 00:09:50 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763092#m1763092 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763092#m1763092 <p>Lieber pl,</p> <blockquote> <p>Deine Antwort ist nicht nur arrogant, sie geht auch am Thema vollständig vorbei.</p> </blockquote> <p>das hast Du so provoziert.</p> <blockquote> <p>Meine Erfahrung im Programmieren jedoch, die gebe ich hier gerne weiter. Auch wenn ich die Tatigkeit Programmieren nur noch zu therapeutischen Zwecken betreibe oder auch gerade deswegen: Da bekommt der Begriff "erfolgreich" nämlich eine ganz besondere Bedeutung.</p> </blockquote> <p>Das bedeutet im Umkehrschluss, dass Deine Erfahrung im Programmieren für die hier Hilfesuchenden eher einen therapeutischen Wert hat, anstatt zielführende Wege zum Lösen ihrer Programmierprobleme zu bieten.</p> <blockquote> <p>Lass Dir das mal durch den Kopf gehen!</p> </blockquote> <p>Habe ich. Jetzt bist Du dran.</p> <p>Liebe Grüße</p> <p>Felix Riesterer</p> Trait oder Elternklasse in einer Klassen Gruppe? Thu, 16 Jan 20 09:54:17 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763038#m1763038 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763038#m1763038 <p>Hallo Christian,</p> <blockquote> <p>Unser gesamtes Ausbildungssystem...</p> </blockquote> <p>das Verhalten aller sozialen Lebewesen dieses Planeten...</p> <p>Was ich nicht von anderen lerne, muss mir angeboren sein (=Instinkt). Die meisten menschlichen Verhaltensweisen gehören nicht dazu. Insbesondere nicht das Sitzen vor einem rechteckigen Leuchtdings, das Herumklopfen auf gut 100 kleinen Knöpfchen und das Herumschubsen eines kleinen Handschmeichlers. Also gut, so wie beschrieben könnte dieses Verhalten auch ein Schimpanse oder ein Murmeltier zeigen. Aber dabei kommt dann kein Perl-Script heraus. Höchstens nach einer <a href="https://en.wikipedia.org/wiki/Infinite_monkey_theorem" rel="nofollow noopener noreferrer">Million Jahren</a> ein Blatt mit der Aufschrift "To Be Or Not To Be", oder auch nur "This page intentionally left blank".</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Trait oder Elternklasse in einer Klassen Gruppe? Fri, 17 Jan 20 11:31:19 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763110#m1763110 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763110#m1763110 <blockquote> <p>da der Code den ich Refactorieren musste, extrem unsauber war</p> </blockquote> <p>Das ist Dein Ansatz auch. Genauer gesagt, Dein Ansatz ist viel zu kompliziert, Du erstickst Dich selbst in einer Klassenflut. Von daher wäre das Erste was zu tun ist, den Code zu vereinfachen.</p> <p>Natürlich kann man Daten per Instanz einer fremden Klasse in seinen eignen Konstruktor hineinreichen, aber es geht auch anders. D.h., die Daten die Dein Konstruktor benötigt müssen ja keine Instanzen fremder Klassen sein.</p> <p>Etwas weiter ausgeholt: Ein Framework ist abstrakt gesehen nichts weiter als ein Inferface! Denn Du hast Methoden die gleichnamig stets in derselben Reihenfolge aufgerufen werden. Also ist es naheliegend, daß diese Methoden nacheinander von einundderselben Instanz aufgerufen werden. Und diese FW-Instanz bekommt Daten entweder über den Konstruktor oder später.</p> <p>Genauso wie die FW-Instanz auch Instanzen fremder Klassen bekommt, entweder bei der Instanzerstellung oder im Verlauf des Programms.</p> <p>MFG</p> Trait oder Elternklasse in einer Klassen Gruppe? Fri, 17 Jan 20 09:57:06 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763106#m1763106 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763106#m1763106 <p>Aufgrund meiner Erfahrung (ich habe 3 Frameworks entwickelt und zwar selbständig!) ein Hinweis zu Injektionen: Bei einem Interface (IF) steht die Reihenfolge fest in welcher die Methoden des IF aufgerufen werden. So wird man z.B. ein PDO Objekt zweckmäßigerweise in der ersten IF-Methode oder vor dem Aufruf der ersten IF-Methode injezieren damit man dieses Objekt in den nachfolgenden Methoden zur Verfügung hat. Diese Injektion kann später erfolgen, also nachdem die Main-Instanz gebildet wurde.</p> <p>Braucht man jedoch die Methoden einer nichtverwandten Klasse durch die gesamte Anwendung hindurch, wird die Instanz dieser Klasse in den eigenen Konstruktor hineingereicht (injeziert).</p> <p>Und wie gesagt, Deine Erfahrungen musst Du selber machen. Deswegen ja ist Programmieren keine Kunst sondern ein Handwerk was man eben nur selber lernen kann wenn man es selber macht.</p> <p>So wird man auch am Ende eigener Entwicklungen sämtliche Muster der GoF in seinem eigenen Code vorfinden, auch dann wenn man gar nicht vor hatte nach einem bestimmten Muster entwickeln zu wollen.</p> <p>Und siehst Du, genau deswegen sind Traits in PHP und Interfaces in PHP keine Besonderheit von PHP sondern allgemeingültige Dinge die man auch ganz anders umsetzen kann als wie PHP das vorschreibt. Bsw. ist eine externe Methode die erst per __call() aus dem Dateisystem nachgeladen wird bereits ein Trait. Und auch in solchen Methoden kann man Instanzen nicht verwnandter Klassen nachladen oder injezieren.</p> <p>Genausogut kann man auch ein Interface mit Klassen aufsetzen ohne daß man das Schlüsselwort interface dazu braucht.</p> <p>MFG</p> Grundlegende Lernstrategien Thu, 16 Jan 20 10:20:36 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763039#m1763039 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763039#m1763039 <p>Hallo,</p> <blockquote> <blockquote> <p>Unser gesamtes Ausbildungssystem...</p> </blockquote> <p>das Verhalten aller sozialen Lebewesen dieses Planeten...</p> <p>Was ich nicht von anderen lerne, muss mir angeboren sein (=Instinkt).</p> </blockquote> <p>es gibt noch eine dritte Möglichkeit: Den Weg zu einem bestimmten Ziel durch Ausprobieren finden. Ich vermute, vor allem mit dieser Methode haben unsere Vorfahren vor Jahrtausenden <em>gelernt</em>, welche Pflanzen (und welche Teile davon) man gefahrlos essen kann - und wie man sie eventuell vorbehandeln muss (rösten, wässern, ein halbes Jahr vergraben, mit etwas anderem mischen).</p> <p>Diese Trial&Error-Methode kann man natürlich wieder mit Lernen von anderen (oder Lehren von anderen) kombinieren. Dann wird's effizient.</p> <p>Ciao,<br>  Martin</p> <div class="signature">-- <br> Ich stamme aus Ironien, einem Land am sarkastischen Ozean. </div> Grundlegende Lernstrategien Thu, 16 Jan 20 10:25:46 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763041#m1763041 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763041#m1763041 <p>@@Der Martin</p> <blockquote> <p>Diese Trial&Error-Methode kann man natürlich wieder mit Lernen von anderen (oder Lehren von anderen) kombinieren. Dann wird's effizient.</p> </blockquote> <p>Oder genügend Blech hinstellen. Dann wird’s KI.</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> Trait oder Elternklasse in einer Klassen Gruppe? Fri, 17 Jan 20 11:09:16 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763109#m1763109 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763109#m1763109 <p>Hallo pl,</p> <blockquote> <p>Bei einem Interface (IF) steht die Reihenfolge fest in welcher die Methoden des IF aufgerufen werden</p> </blockquote> <p>Das klingt jetzt merkwürdig, aber ich denke, ich weiß was Du meinst: Für eine bestimmte Aufgabe, die man mit Hilfe des Interfaces erledigen will, ist eine bestimmte Reihenfolge von Methodenaufrufen auf diesem Interface erforderlich. Wenn Du sagen wolltest, dass sämtliche Methoden eines Interface stets in einer fixen Reihenfolge zu rufen sind, dann würde das meinen eigenen Erfahrungen im Gebrauch und in der Bereitstellung von Interfaces widersprechen.</p> <p>Injizieren kann man grundsätzlich auf zwei Arten: Bei Konstruktion oder nachher. Unity von Microsoft unterstützt z.B. Injektion im ctor, über Properties oder über Methoden. Es injiziert aber immer alles, wofür es eine Kanüle findet. Deshalb habe ich auch schon Injektionsmethoden gebaut und vor Unity versteckt (bzw. auf eine Bekanntgabe an Unity verzichtet), um sie bedarfsweise nutzen zu können.</p> <p>Dass Traits und Interfaces Ideen sind, die nicht auf PHP beschränkt sind, ist klar - aber nicht jedes Programmierkonzept lässt sich in jeder Sprache elegant umsetzen. Wenn ich ein Konzept nur mit mühsamen Krücken nutzen kann, dann macht das den Code eher schlechter als besser. Traits wären z.B. in C# vor .net 3.0 ohne einen Code-Generator nicht sinnvoll machbar gewesen. Das spricht dann wieder für dein Handwerkskonzept: man muss wissen, was der eigene Werkzeugkasten hergibt, und um man im Zweifelsfall einen Meißel in der Kiste hat, mit dem man auch mal eine Schraube eindrehen kann.</p> <blockquote> <p>So wird man auch am Ende eigener Entwicklungen sämtliche Muster der GoF in seinem eigenen Code vorfinden</p> </blockquote> <p>Sicherlich. Wenn man das vom Pattern gelöste Problem hat, wird man das Pattern im Zweifelsfall selbst entwickeln. Das ist ja keine Raketenwissenschaft. Es ist Handwerk. Sprich: Standardlösungen für Standardprobleme, die der Handwerker ohne langes Nachdenken anwenden kann. Das ist die Idee des GoF Buchs - man lernt diese Standardlösungen kennen. Das spart schlichtweg Zeit, und hilft anderen, die GoF ebenfalls kennen, den eigenen Code zu verstehen. Machmal bringt einen GoF auch auf elegante Lösungen für Probleme, für die man vorher nur eine mühsame Bastellösung hatte. Wenn man andererseits zwanghaft auf GoF Patterns zurückgreift, weil man meint, für alles ein fertiges Pattern nutzen zu müssen, hilft es dem Code überhaupt nicht (ich denke da an einen Klempnerlehrling, der eine 2m Rohrleitung aus 50 Fittings zusammensteckt...).</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 01:02:28 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763129#m1763129 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763129#m1763129 <p>moin,</p> <blockquote> <blockquote> <p>da der Code den ich Refactorieren musste, extrem unsauber war</p> </blockquote> </blockquote> <blockquote> <p>Das ist Dein Ansatz auch. Genauer gesagt, Dein Ansatz ist viel zu kompliziert, Du erstickst Dich selbst in einer Klassenflut.</p> </blockquote> <p>wenn man einfache klassengebundene <strong>SELECT</strong>-Befehle machen will ja, gebe ich dir Recht. Wenn du aber eine sehr komplexe <em>SQL</em> Abfrage hast, mit Subselects usw. braucht man eine Struktur von Klassen die dann verschachtelt den <em>SQL</em> string stück für stück zusammen bauen, dann auf Type, Sequenz, Wohlgeformtheit, usw. validieren und ab dafür. Je weniger Fehler mir passieren können desto besser, und wenn fehler passieren, meckert mein <strong>SQL Builder</strong> System per <em>[Type]Exception</em> was ich doch falsch gemacht haben könnte.</p> <blockquote> <p>Natürlich kann man Daten per Instanz einer fremden Klasse in seinen eignen Konstruktor hineinreichen, aber es geht auch anders. D.h., die Daten die Dein Konstruktor benötigt müssen ja keine Instanzen fremder Klassen sein.</p> </blockquote> <p>Neben bei: Ich hasse <em>Array</em>'s flut. Meiner Erfahrung nach sind <em>Array</em>'s sehr unspezifisch und ich mag sie garnicht! Man muss wissen, welche struktur das <em>Array</em> hat, welchen Datentyp ein Feld hat, obs <em>Key-Value</em>-Paare sind, usw. Mit einer <em>ConstructorInjection</em> hat man das Problem nicht.</p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 19:06:23 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763170#m1763170 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763170#m1763170 <p>moin,</p> <blockquote> <blockquote> <p>Ich habe eine Klassengruppe, [...]</p> </blockquote> </blockquote> <blockquote> <p>Das kann auch eine Klasse ganz allein lösen. [...]</p> </blockquote> <p><a href="https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763152#m1763152" rel="noopener noreferrer">s.o.</a></p> <blockquote> <blockquote> <p>Alle Klassen müssen über die selben Methoden verfügen:</p> </blockquote> <p>Das klingt nach Interface! [...]Also werden diese Methoden in der Basisklasse definiert. Und in der Subklasse di</p> </blockquote> <p><a href="https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763152#m1763152" rel="noopener noreferrer">s.o.</a></p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 03:38:36 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763130#m1763130 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763130#m1763130 <p>Lieber MB,</p> <blockquote> <p>Ich hasse <em>Array</em>'s flut.</p> </blockquote> <p><a href="https://de.wikipedia.org/wiki/Apostroph#Diskussion_%C3%BCber_fehlerhafte_Verwendung" rel="nofollow noopener noreferrer">wozu der Apostroph?</a></p> <p>Liebe Grüße</p> <p>Felix Riesterer</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 06:18:05 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763131#m1763131 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763131#m1763131 <blockquote> <p>Neben bei: Ich hasse Array's flut. Meiner Erfahrung nach sind Array's sehr unspezifisch und ich mag sie garnicht! Man muss wissen, welche struktur das Array hat, welchen Datentyp ein Feld hat, obs Key-Value-Paare sind, usw.</p> </blockquote> <p>Objekte sind Arrays! Und natürlich kommt es auf eine zweckmäßige Strukturierung an, das ist da A und O der Objektorientierten Programmierung! Und diese Objekte sind nicht nur Schlüssel-Werte-Paare sondern können sehr umfangreich sein.</p> <blockquote> <p>Mit einer ConstructorInjection hat man das Problem nicht.</p> </blockquote> <p>Wie bitte? Das ist doch der Sinn und Zweck einer Injektion, Instanzen fremder Klassen als Eigenschaften der eigenen Instanzen zu transportieren. Objekte und Methoden sind das was den wahlfreien Zugriff zum Hauptspeicher vermittelt.</p> <p>Von daher kann es auch nicht das Ziel von OOP sein, möglichst viele Objekte (Arrays) zu haben sondern möglichst Wenige! Und wie schonmal gesagt: Ein Objekt referenziert Daten, und andere Objekte. Damit hat jede Methode auch Zugriff auf die Daten. Datentypen sind völlig nebensächlich, bei Webanwendungen hast Du es eh nur mit Strings zu tun.</p> <p>MFG</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 10:16:11 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763135#m1763135 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763135#m1763135 <blockquote> <p>Neben bei: Ich hasse <em>Array</em>'s flut. Meiner Erfahrung nach sind <em>Array</em>'s sehr unspezifisch und ich mag sie garnicht! Man muss wissen, welche struktur das <em>Array</em> hat, welchen Datentyp ein Feld hat, obs <em>Key-Value</em>-Paare sind, usw. Mit einer <em>ConstructorInjection</em> hat man das Problem nicht.</p> </blockquote> <p>Ich sehe Dein Hauptproblem im richtigen Umgang mit komplexen Datenstrukturen. Da gibts nur Eines: Üben. Also nicht den Hass ausüben sondern den Umgang üben. Das muss sozusagen in Fleisch und Blut übergehen wie Kuppeln, Schalten, Gas geben. Das sind Fertigkeiten die muss man sich selbst aneignen.</p> <p>Viel Erfolg!</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 15:29:25 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763146#m1763146 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763146#m1763146 <p>moin,</p> <blockquote> <blockquote> <p>Ich hasse <em>Array</em>'s flut.</p> </blockquote> </blockquote> <blockquote> <p><a href="https://de.wikipedia.org/wiki/Apostroph#Diskussion_%C3%BCber_fehlerhafte_Verwendung" rel="nofollow noopener noreferrer">wozu der Apostroph?</a></p> </blockquote> <ul> <li>Fachliche Bezeichnung (z.B. Keyword) wird bei mir in englisch <em>fachsprachich</em> in der Einzahl hervorgehoben geschrieben. Rein zur Orientierung im Text und in der Fachlichen Bezeichnung (z.B. <em>Array</em> und nicht <em>Feld</em> zum Flügen, -einer Tabelle oder -eines Schachbretts)</li> <li>Wenn ich mehrere Fachlichen Gegestände bennenen will und sich der in der Mehrzahl Fachterminus ändert hänge ich zur der Einzahl ein <em>"s"</em> dran ohne es hervorzuheben.</li> <li>Problem ist das sich <strong>Kramdown</strong> ander formatier wenn ich _Array_s hintippe. Also schreibe ich <em>Array</em>'s, <em>Array</em>(s) oder <em>Array</em> s.</li> <li>Natürlich könnte ich auch <em>Arrays</em> aber mir ist unwohl dabei. Ich hoffe du verstehst es.</li> </ul> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 06:19:45 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763132#m1763132 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763132#m1763132 <p>Hallo pl,</p> <blockquote> <p>Objekte sind Arrays!</p> </blockquote> <p>Nein. Einfach nein.</p> <p>Freundliche Grüße,<br> Christian Kruse</p> <div class="signature">-- <br> <a href="https://wwwtech.de/about" rel="noopener noreferrer">https://wwwtech.de/about</a> </div> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 07:47:37 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763133#m1763133 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763133#m1763133 <p>Beispiel für Aggregation (Objekte in Objekten)</p> <pre><code class="block language-php"><span class="token keyword">function</span> <span class="token function-definition function">_fetch_mesg</span><span class="token punctuation">(</span><span class="token variable">$mesgid</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span> <span class="token operator">!</span> <span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">STH_FETCH_MESG</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">STH_FETCH_MESG</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">DBH</span><span class="token operator">-></span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"SELECT * FROM <span class="token interpolation"><span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">TABN</span></span> WHERE mesgid=?"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">STH_FETCH_MESG</span><span class="token operator">-></span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token keyword">array</span><span class="token punctuation">(</span><span class="token variable">$mesgid</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$mesg</span> <span class="token operator">=</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">STH_FETCH_MESG</span><span class="token operator">-></span><span class="token function">fetchAll</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span> <span class="token keyword">empty</span><span class="token punctuation">(</span><span class="token variable">$mesg</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token function">dd</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"Diese Nachricht existiert nicht!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token variable">$mesg</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Wobei man die Struktur für die Statements weiter verbessern kann: <code>$this->STATEMENTS</code> was den Vorteil hat, daß man ggf. alle Statements mit einmal löschen kann. Aber das ist ja nur ein Beispiel und wie man sehen kann steckt in <code>$this->DBH</code> ein weiteres Objekt, das PDO Objekt. Letzteres wird zur Laufzeit eingebunden, man könnte es auch über den Konstruktor injezieren sofern es über die gesamte Anwendung benötigt wird.</p> <p>Des Weiteren</p> <pre><code class="block language-php"> <span class="token keyword">function</span> <span class="token function-definition function">param</span><span class="token punctuation">(</span><span class="token variable">$name</span> <span class="token operator">=</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span> <span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">require</span> <span class="token string double-quoted-string">"CGI.php"</span><span class="token punctuation">;</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">CGI</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span><span class="token operator">-></span><span class="token function">param</span><span class="token punctuation">(</span><span class="token variable">$name</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>auch ein typisches Beispiel für eine spätere Aggregation/late Delegation. Das CGI-Objekt wird erst eingebunden wenn die Methode <code>param()</code> aufgerufen wird. In Fakt beim ersten Aufruf dieser Funktion.</p> <p>Das sind nur mal eben 2 Beispiele wie man seine Modells in Arraystrukturen abbilden kann. Deiner Kreativitär sind hier keine Genzen gesetzt.</p> <p>MFG</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 10:16:55 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763136#m1763136 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763136#m1763136 <p>Hallo pl,</p> <blockquote> <p>Von daher kann es auch nicht das Ziel von OOP sein, möglichst viele Objekte (Arrays) zu haben sondern möglichst Wenige!</p> </blockquote> <p>Zur Gleichsetzung von Objekten und Arrays: Da verwechselst Du Implementierung und Konzept. In dynamischen Sprachen wie PHP, Perl und JS wird ein Objekt als ein Dictionary mit spezieller Semantik angesehen (ich strapaziere den Begriff „spezielle Semantik“ jetzt vielleicht etwas arg). Und auch Arrays werden als Dictionary mit spezieller Semantik implementiert. Das ist nicht effizient, und darum wurden gibt es die Das gilt aber in anderen Sprachen wie Java oder C# nicht. Und es bedeutet keinesfalls, dass Objekte, Arrays und Dictionaries konzeptionell das gleiche sind.</p> <p>Das Ziel "möglichst viele Objekte" sollte man nie verfolgen, richtig. "Möglichst wenige" ist aber auch nicht die Leitlinie. Sondern: die richtige Menge. Leitlinie ist das Single Responsibility Prinzip. Das Problem ist: wenn man aus der prozeduralen Welt kommt und dann anfängt „mit Objekten“ zu programmieren, entsteht daraus noch lange keine OOP-Anwendung. Die von Dir vertretene Sichtweise hatte ich auch lange und ein paar Klebefäden werde ich nicht los. Aber sie ist immer noch prozedural, nicht objektorientiert.</p> <blockquote> <p>Datentypen sind völlig nebensächlich, bei Webanwendungen hast Du es eh nur mit Strings zu tun.</p> </blockquote> <p>Integer (Number), Date und Bool kommen zumindest noch hinzu. Typen dienen <em>unter anderem</em> dazu, mit der Runtime eine möglichst effiziente Repräsentation der genutzten Daten zu vereinbaren. Und dann sollte man bedenken, dass jede Klasse ebenfalls ein Typ ist!</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 16:15:34 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763152#m1763152 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763152#m1763152 <p>moin,</p> <blockquote> <blockquote> <p>Neben bei: Ich hasse Array's flut. Meiner Erfahrung nach sind Array's sehr unspezifisch und ich mag sie garnicht! Man muss wissen, welche struktur das Array hat, welchen Datentyp ein Feld hat, obs Key-Value-Paare sind, usw.</p> </blockquote> <p>Objekte sind Arrays!</p> </blockquote> <p>Nein. Es heistes nicht Objekt gleich Array. Du kannst Objekte in <em>PHP</em> zu einem <em>Array</em> casten und umgekehrt.</p> <blockquote> <p>[…] Und natürlich kommt es auf eine zweckmäßige Strukturierung an, das ist da A und O der Objektorientierten Programmierung!</p> </blockquote> <p>Sage mir etwas was ich noch nicht weis. Ich <em>"fühle"</em> mich irgendwie verarscht. Ich fühle mich so behandelst, als ob mir nicht klar wäre, wie man ein mal eins rechnet. Sorry aber so fühle ich mich von Dir behandelt.</p> <p>Sie dir meinen exemplarischen <em>Code</em> im <em>Thread</em> an. Da weist du, wo du mich fachtechnisch abholen kannst. Übrigens das viel mir extreeem häufig auf, das du deiner Arguimentation so aufbaust.</p> <blockquote> <blockquote> <p>Mit einer ConstructorInjection hat man das Problem nicht.</p> </blockquote> </blockquote> <blockquote> <p>Wie bitte? Das ist doch der Sinn und Zweck einer Injektion, Instanzen fremder Klassen als Eigenschaften der eigenen Instanzen zu transportieren. Objekte und Methoden sind das was den wahlfreien Zugriff zum Hauptspeicher vermittelt.</p> </blockquote> <p>Nichts anderes habe ich gesagt. Liest du eigentlich was ich geschrieben habe? Es sei den ich habe dich wie so oft falsch vertstanden. Sorry</p> <blockquote> <p>Von daher kann es auch nicht das Ziel von OOP sein, möglichst viele Objekte (Arrays) zu haben sondern möglichst Wenige!</p> </blockquote> <p>s.o.</p> <blockquote> <p>Und wie schonmal gesagt […]</p> </blockquote> <p>s.o.</p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 09:03:18 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763134#m1763134 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763134#m1763134 <p>PS</p> <blockquote> <p>Des Weiteren</p> <pre><code class="block language-php"> <span class="token keyword">function</span> <span class="token function-definition function">param</span><span class="token punctuation">(</span><span class="token variable">$name</span> <span class="token operator">=</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span> <span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">require</span> <span class="token string double-quoted-string">"CGI.php"</span><span class="token punctuation">;</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">CGI</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span><span class="token operator">-></span><span class="token function">param</span><span class="token punctuation">(</span><span class="token variable">$name</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>auch ein typisches Beispiel für eine spätere Aggregation/late Delegation. Das CGI-Objekt wird erst eingebunden wenn die Methode <code>param()</code> aufgerufen wird. In Fakt beim ersten Aufruf dieser Funktion.</p> </blockquote> <p>Eine solche Vorgehensweise wird auch Lazy Delegation genannt. Lazy weil die Aggregation (Instanz einer fremden Klasse als Eigenschaft der eigenen Klasseninstanz einbinden) später erfolgt also nicht als Injektion über den Konstruktor. Delegation weil die Methode der CGI-Instanz delegiert und damit zu einer eigenen Methode gemacht wird. D.h., die param()-Funktion die eine Methode der CGI-Instanz ist, wird so aufgerufen als wäre sie eine eigene Funktion.</p> <p>Natürlich könnte man genau das auch per Vererbung erreichen, da erbt man jedoch sämtliche Methoden der Basisklasse.</p> <p>Und natürlich kann man Lazy Delegation auch über Traits abwickeln. Man borgt sich sozusagen Methoden fremder Klassen (fremd heißt hier NICHT verwandt) und erstellt hierzu auch die entsprechenden Instanzen. Wie die Datenstrukturen im Inneren dieser Instanzen aussehen ist uninteressant, dafür gibt es eine API die man nutzt.</p> <p>MFG</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 19:32:19 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763174#m1763174 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763174#m1763174 <p>moin,</p> <p>Ich nehme an, das deine Beispiele speziell aus deinem <em>Framework</em> sind. Ok, schön und gut. Wenn man deinen Beispielen folgen will, müsste man - so denke ich - dein <em>Framework</em> verstehen und deinen eigenen Stil kennen, der, wie du zu verstehen gegeben hast, keiner Konvention folgt, was du ja in diesem Thread geschrieben hast. Man säße da Wochen lang dran, und wenn du mich kennst - mittlerweile müsstest du das - dann säße ich vierfach solange dran um deinen Weg zu verstehen. Und wie du selbst in diesem <em>Thread</em> gesagt hast hast du deinen eigenen Stil Das ist meine Einschätzung von deinem konkreten Beispiel.</p> <p>Generalisiere doch deine Beispiele in Foren.</p> <p>lgmb</p> <p><em>PS: Ich habe gelesen das du ja ein Manual zu deinem Framwork gemacht hast. Vorbildlich!</em>.</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 15:36:18 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763147#m1763147 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763147#m1763147 <blockquote> <p>Ich sehe Dein Hauptproblem [...]</p> </blockquote> <p>Deines sehe ich ich unbändiger Ignoranz. Arbeite dran.</p> <blockquote> <p>Viel Erfolg!</p> </blockquote> <p>Dir auch!</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 19:08:00 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763171#m1763171 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763171#m1763171 <p>moin,</p> <blockquote> <blockquote> <p>Neben bei: Ich hasse <em>Array</em>'s flut [...]</p> </blockquote> </blockquote> <blockquote> <p>Ich sehe Dein Hauptproblem im richtigen Umgang mit komplexen Datenstrukturen. [...]</p> </blockquote> <p><a href="https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763152#m1763152" rel="noopener noreferrer">s.o.</a></p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 15:41:53 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763148#m1763148 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763148#m1763148 <p>Hallo,</p> <blockquote> <ul> <li>Natürlich könnte ich auch <em>Arrays</em> aber mir ist unwohl dabei.</li> </ul> </blockquote> <p>Unwohlsein ist in diesem Fall fehl am Platz. „Arrays“ ist hier korrekt.</p> <p>Gruß<br> Kalk</p> Plural-s und Schriftformatierung Sat, 18 Jan 20 16:00:11 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763149#m1763149 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763149#m1763149 <p>Hallo,</p> <blockquote> <blockquote> <blockquote> <p>Ich hasse <em>Array</em>'s flut.</p> </blockquote> <p><a href="https://de.wikipedia.org/wiki/Apostroph#Diskussion_%C3%BCber_fehlerhafte_Verwendung" rel="nofollow noopener noreferrer">wozu der Apostroph?</a></p> </blockquote> <ul> <li>Wenn ich mehrere Fachlichen Gegestände bennenen will und sich der in der Mehrzahl Fachterminus ändert hänge ich zur der Einzahl ein <em>"s"</em> dran ohne es hervorzuheben.</li> </ul> </blockquote> <p>okay, das wäre richtig. Naja, nicht immer: Vor allem bei Fachbegriffen aus dem Lateinischen weicht der Plural oft vom einfachen Anhängen eines <em>s</em> ab, z.B. <em>Index</em>, <em>Indices</em> (wobei die Pluralform <em>Indexe</em> auch gelegentlich vorkommt).</p> <blockquote> <ul> <li>Problem ist das sich <strong>Kramdown</strong> ander formatier wenn ich _Array_s hintippe. Also schreibe ich <em>Array</em>'s, <em>Array</em>(s) oder <em>Array</em> s.</li> <li>Natürlich könnte ich auch <em>Arrays</em> aber mir ist unwohl dabei. Ich hoffe du verstehst es.</li> </ul> </blockquote> <p>Nein. Nimm einfach den Stern anstatt des Unterstrichs, dann klappt der Wechsel auch mitten im Wort.</p> <p>Ciao,<br>  Martin</p> <div class="signature">-- <br> Ich stamme aus Ironien, einem Land am sarkastischen Ozean. </div> Trait oder Elternklasse in einer Klassen Gruppe? Sat, 18 Jan 20 16:06:35 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763151#m1763151 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763151#m1763151 <p>moin,</p> <p>Nur ein exemplarisches Beispiel. Meinetwegen ein schlechtes beispiel</p> <p>lgmb</p> Plural-s und Schriftformatierung Sat, 18 Jan 20 16:05:14 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763150#m1763150 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763150#m1763150 <p>moin,</p> <blockquote> <p>[...] Naja, nicht immer: Vor allem bei Fachbegriffen aus dem Lateinischen weicht der Plural oft vom einfachen Anhängen eines <em>s</em> ab, z.B. <em>Index</em>, <em>Indices</em> (wobei die Pluralform <em>Indexe</em> auch gelegentlich vorkommt).</p> </blockquote> <p>Wir sind hier nicht im Lateinunterricht ;-). Um dein beispiel auf zu greifen würde ich sowas schreiben: <em>Index</em>'s</p> <p>lgmb</p> Plural-s und Schriftformatierung Sat, 18 Jan 20 17:44:57 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763162#m1763162 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763162#m1763162 <p>Hi,</p> <p>noch einen zur Ergänzung:</p> <blockquote> <p>Vor allem bei Fachbegriffen aus dem Lateinischen weicht der Plural oft vom einfachen Anhängen eines <em>s</em> ab, z.B. <em>Index</em>, <em>Indices</em> (wobei die Pluralform <em>Indexe</em> auch gelegentlich vorkommt).</p> </blockquote> <p>ein sehr häufig auftretendes Beispiel für falsche Pluralbildung ist das aus dem Lateinischen stammende Wort <em>Status</em>. Nur zu oft sieht man, wie Leute sich für gebildet halten und als Plural <em>Stati</em> schreiben. Und sogar <em>Statusse</em> habe ich schon gelesen.<br> Nein! Der Plural von <em>Status</em> ist <em>Status</em>. Und zwar mit langem u, deshalb auch manchmal als <em>Statūs</em> geschrieben (waagrechter Strich über dem u).</p> <p>Und wer sich unsicher ist, sollte lieber "Zustände" schreiben. ;-)</p> <p>Schönes Wochenende,<br>  Martin</p> <div class="signature">-- <br> Ich stamme aus Ironien, einem Land am sarkastischen Ozean. </div> Plural-s und Schriftformatierung Sat, 18 Jan 20 16:27:01 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763154#m1763154 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763154#m1763154 <p>Hallo,</p> <blockquote> <p>Um dein beispiel auf zu greifen würde ich sowas schreiben: <em>Index</em>'s</p> </blockquote> <p>Und damit bescherst du einer Reihe von Lesern Unwohlsein. Möchtest du das?</p> <p>Gruß<br> Kalk</p> Plural-s und Schriftformatierung Sat, 18 Jan 20 16:28:45 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763156#m1763156 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763156#m1763156 <p>Hallo MB,</p> <blockquote> <p>Wir sind hier nicht im Lateinunterricht ;-).</p> </blockquote> <p>Aber im SELF-Forum. Hier erhält man häufig ergänzende Informationen. Ich habe mich zum Beispiel gefragt, warum es „ultim<strong>a</strong> rati<strong>o</strong>“ heißt.</p> <p>Bis demnächst<br> Matthias</p> <div class="signature">-- <br> Du kannst das Projekt SELFHTML unterstützen,<br> indem du bei Amazon-Einkäufen <a href="https://smile.amazon.de/ch/314-570-45498" rel="nofollow noopener noreferrer">Amazon smile</a> (<a href="https://www.amazon.de/gp/help/customer/display.html?ie=UTF8&nodeId=202035970%5D" rel="nofollow noopener noreferrer">Was ist das?</a>) nutzt. </div> Plural-s und Schriftformatierung Sat, 18 Jan 20 17:05:01 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763159#m1763159 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763159#m1763159 <p>Hallo,</p> <blockquote> <blockquote> <p>[...] Naja, nicht immer: Vor allem bei Fachbegriffen aus dem Lateinischen weicht der Plural oft vom einfachen Anhängen eines <em>s</em> ab, z.B. <em>Index</em>, <em>Indices</em> (wobei die Pluralform <em>Indexe</em> auch gelegentlich vorkommt).</p> </blockquote> <p>Wir sind hier nicht im Lateinunterricht ;-).</p> </blockquote> <p>das spielt keine Rolle. Wer Fremdworte verwenden will, sollte sie bitte <em>richtig</em> verwenden.</p> <blockquote> <p>Um dein beispiel auf zu greifen</p> </blockquote> <p>Meintest du: <em>aufzugreifen</em>?</p> <blockquote> <p>würde ich sowas schreiben: <em>Index</em>'s</p> </blockquote> <p>Autsch. Da rollen sich meine Zehennägel auf.</p> <p>Ciao,<br>  Martin</p> <div class="signature">-- <br> Ich stamme aus Ironien, einem Land am sarkastischen Ozean. </div> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 08:23:34 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763182#m1763182 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763182#m1763182 <p>moin,</p> <blockquote> <blockquote> <blockquote> <p>Neben bei: Ich hasse Array's flut. Meiner Erfahrung nach sind Array's sehr unspezifisch und ich mag sie garnicht! Man muss wissen, welche struktur das Array hat, welchen Datentyp ein Feld hat, obs Key-Value-Paare sind, usw.</p> </blockquote> <p>Objekte sind Arrays!</p> </blockquote> <p>Nein.</p> </blockquote> <p>Siehst Du, Diese Antwort zeugt von einem fehlenden Abstraktionsvermögen. Genau das ist aber beim Programmieren wichtig. Und was Objekte betrifft, natürlich stecken da Arrays drin</p> <pre><code class="block language-php"><span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span><span class="token operator">-></span><span class="token constant">PARAM</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'action'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">BIN</span><span class="token punctuation">[</span><span class="token variable">$url</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'title'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> </code></pre> <p>Und ein Dumper zeigt die ganze Baum-Struktur. Jeder Programmierer weiß was eine Baumstruktur ist und käme niemals auf die Idee, daß es sich dabei um ein Naturprodukt handelt.</p> <p>Schönen Sonntag</p> Plural-s und Schriftformatierung Sat, 18 Jan 20 18:55:56 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763168#m1763168 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763168#m1763168 <p>moin,</p> <blockquote> <p>Hallo,</p> <blockquote> <p>Um dein beispiel auf zu greifen würde ich sowas schreiben: <em>Index</em>'s</p> </blockquote> <p>Und damit bescherst du einer Reihe von Lesern Unwohlsein. Möchtest du das?</p> </blockquote> <p>Sorry, an alle Lateiner. Ich drück mich nun mal so aus und kann es nicht besser. Ich selbst orientiere mich an diesen von mir definierten hervorgehobenen Markern. Und ich hoffe sehr, das diejenigen die meinen <em>Thread</em> lesen, den Sachverhalt besser verstehen können eben durch diese Textauszeichnungen. Mir jedenfalls geht es so. Unter anderem dafür habe ich die Auszeichnung ja vorgenommen. Ich hoffe du verstehst mein Anliegen für das <em>Forum</em></p> <p>lgmb</p> Plural-s und Schriftformatierung Sat, 18 Jan 20 17:08:50 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763160#m1763160 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763160#m1763160 <p>Hallo Matthias,</p> <blockquote> <p>Ich habe mich zum Beispiel gefragt, warum es „ultim<strong>a</strong> rati<strong>o</strong>“ heißt.</p> </blockquote> <p>weil - auch wenn die Endung das nicht vermuten lässt - auf -io endende Wörter im Lateinischen grundsätzlich (?) weiblich sind, wie eben <em>ratio</em>, <em>conclusio</em> oder <em>conditio</em>.</p> <p>Schönen Abend noch,<br>  Martin</p> <div class="signature">-- <br> Ich stamme aus Ironien, einem Land am sarkastischen Ozean. </div> Plural-s und Schriftformatierung Sat, 18 Jan 20 18:47:38 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763167#m1763167 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763167#m1763167 <p>moin,</p> <blockquote> <blockquote> <p>Wir sind hier nicht im Lateinunterricht ;-).</p> </blockquote> <p>das spielt keine Rolle. Wer Fremdworte verwenden will, sollte sie bitte <em>richtig</em> verwenden.</p> </blockquote> <p>bin da ganz bei dir!</p> <blockquote> <blockquote> <p>Um dein beispiel auf zu greifen</p> </blockquote> <p>Meintest du: <em>aufzugreifen</em>?</p> </blockquote> <p>jepp. Sorry dafür und Dankeschön </p> <blockquote> <blockquote> <p>würde ich sowas schreiben: <em>Index</em>'s</p> </blockquote> <p>Autsch. Da rollen sich meine Zehennägel auf.</p> </blockquote> <p>Wenn man aus der Lateinecke kommt, würden sich bei mir auch die Zehennägel hoch rollen. Außerdem ist mein Beispiel <em>index</em> ja auch exemplarisch, mehr nicht.</p> <p>lgmb</p> Plural-s und Schriftformatierung Sat, 18 Jan 20 18:23:12 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763164#m1763164 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763164#m1763164 <p>Hallo Der Martin,</p> <blockquote> <p>Nein! Der Plural von <em>Status</em> ist <em>Status</em>. Und zwar mit langem u, deshalb auch manchmal als <em>Statūs</em> geschrieben (waagrechter Strich über dem u).</p> </blockquote> <p>Passus ebenso.</p> <p>Bis demnächst<br> Matthias</p> <div class="signature">-- <br> Du kannst das Projekt SELFHTML unterstützen,<br> indem du bei Amazon-Einkäufen <a href="https://smile.amazon.de/ch/314-570-45498" rel="nofollow noopener noreferrer">Amazon smile</a> (<a href="https://www.amazon.de/gp/help/customer/display.html?ie=UTF8&nodeId=202035970%5D" rel="nofollow noopener noreferrer">Was ist das?</a>) nutzt. </div> Plural-s und Schriftformatierung Sat, 18 Jan 20 18:47:34 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763166#m1763166 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763166#m1763166 <p>Hallo,</p> <blockquote> <p>Passus ebenso.</p> </blockquote> <p>Nicht Passagen?</p> <p>Gruß<br> Kalk</p> Plural-s und Schriftformatierung Sat, 18 Jan 20 19:20:22 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763172#m1763172 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763172#m1763172 <p>Guten Abend,</p> <blockquote> <blockquote> <blockquote> <p>Um dein beispiel auf zu greifen würde ich sowas schreiben: <em>Index</em>'s</p> </blockquote> <p>Und damit bescherst du einer Reihe von Lesern Unwohlsein. Möchtest du das?</p> </blockquote> <p>Sorry, an alle Lateiner.</p> </blockquote> <p>nur um das nochmal klarzustellen: Es geht gar nicht primär um Latein, sondern um Deutsch. Das Wort <em>Index</em> existiert im Deutschen als Fremdwort (Lehnwort) aus dem Lateinischen, soweit okay. Nun ist das Wort aber noch nicht so weit eingedeutscht, dass es auch eine deutsche Pluralform gibt. Also benutzt man ersatzweise die lateinische Pluralform - oder man ist kreativ ("Indexe"), fällt damit aber möglicherweise als Sprach-Revoluzzer auf. Ähnlich übrigens mit dem Wort <em>Atlas</em> und dem Plural <em>Atlanten</em><sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p> <p>Aber das Zehennägel-Aufrollen, das ich im anderen Beitrag beklagt habe, stellt sich auch bei penetranten, hartnäckigen Fehlern in reinem Deutsch ein. Wenn etwa jemand behauptet, er habe ein Plural-s <em>angehangen</em><sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>, läuft mir jedesmal ein Schauer den Rücken runter. Oder wenn <em>Standard</em> immer wieder mit t am Ende geschrieben wird.</p> <blockquote> <p>Ich selbst orientiere mich an diesen von mir definierten hervorgehobenen Markern. Und ich hoffe sehr, das diejenigen die meinen <em>Thread</em> lesen, den Sachverhalt besser verstehen können eben durch diese Textauszeichnungen. Mir jedenfalls geht es so.</p> </blockquote> <p>Was mich angeht, erreichst du genau das Gegenteil. Jedesmal, wenn eine vom gewohnten Schriftbild oder vom Standard abweichende Schreibweise auftaucht (ich vermeide absichtlich das Adjektiv <em>falsch</em>), stockt der Lesefluss, man stutzt einen Moment: Äh halt, was war das? Deswegen brauche ich zum Lesen eines derart "kreativ" geschriebenen Textes deutlich länger.</p> <blockquote> <p>Ich hoffe du verstehst mein Anliegen für das <em>Forum</em></p> </blockquote> <p>Dem Forum bzw. seinen Lesern wäre vermutlich mehr geholfen, wenn du dich an allgemeine Konventionen halten würdest.</p> <p>Schönes Wochenende,<br>  Martin</p> <div class="signature">-- <br> Ich stamme aus Ironien, einem Land am sarkastischen Ozean. </div> <hr class="footnotes-sep"> <section class="footnotes"> <ol class="footnotes-list"> <li id="fn1" class="footnote-item"><p>Die Rechtschreibdeform erlaubt mittlerweile auch <em>Atlasse</em>. Grauenhaft! <a href="#fnref1" class="footnote-backref">↩︎</a></p> </li> <li id="fn2" class="footnote-item"><p>Es heißt ange<em>hängt</em>! <a href="#fnref2" class="footnote-backref">↩︎</a></p> </li> </ol> </section> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 09:45:19 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763184#m1763184 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763184#m1763184 <p>moin,</p> <blockquote> <blockquote> <blockquote> <p>Neben bei: Ich hasse <em>Array</em>'s flut [...]</p> </blockquote> </blockquote> <blockquote> <p>Ich sehe Dein Hauptproblem im richtigen Umgang mit komplexen Datenstrukturen. [...]</p> </blockquote> <p><a href="https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763152#m1763152" rel="noopener noreferrer">s.o.</a></p> </blockquote> <p>Ok, da lag ich ja richtig. Abstraktion ist auch wichtig, wenn es darum geht, bestimmte Entwurfsmuster in trivialen Code (siehe mein Beispiel Delegation) zu erkennen. Oder anders ausgedrückt: Anhand von Code erkennen daß der Code ein Interface implementiert ohne daß <code>Interface</code> davorsteht. Dasselbe gilt natürlich auch für Traits, die konnte man auch mit PHP schon bauen ohne daß man <code>Trait</code> davorschreiben musste.</p> <p>Und natürlich ist eine abstrakte Denkweise auch notwendig wenn man bestimmte Entwurfsmuster selbst umsetzen will.</p> <p>Objekte, Instanzen von Klassen, können in der Praxis auf den ersten Blick mächtig gewaltig aussehen und bspw. mehrere Megabyte an Daten transportieren. Ich habe solch ein Aggregat (Perl) mal einem Kollegen (PHP) gezeigt der war zunächst erschrocken. Hat aber letztendlich keine 5 Minuten gebraucht um damit selbstständig weiterzumachen. Am Ende war er sogar begeistert und meinte daß es eben genau diese Dinge sind die man nicht in der Schule lernt. Eben, weil es Fertigkeiten sind.</p> <p>Schönen Sonntag</p> Plural-s und Schriftformatierung Sat, 18 Jan 20 19:56:05 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763175#m1763175 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763175#m1763175 <p>moin,</p> <blockquote> <p>nur um das nochmal klarzustellen: [...]</p> </blockquote> <p>Ist mir bewusst.</p> <blockquote> <blockquote> <p>Ich selbst orientiere mich an diesen von mir definierten hervorgehobenen Markern. Und ich hoffe sehr, das diejenigen die meinen <em>Thread</em> lesen, den Sachverhalt besser verstehen können eben durch diese Textauszeichnungen. Mir jedenfalls geht es so.</p> </blockquote> </blockquote> <blockquote> <p>Was mich angeht, erreichst du genau das Gegenteil. [...]</p> </blockquote> <p>Sorry. Ich habs hier und da auf Grund der Reaktionen geahnt.</p> <p>Ein konkretes Beispiel um meine Absicht zu verdeutlichen: Wenn ich <em>"Klassen"</em> schreibe und meine <em>"Instanzen"</em> und ich verwende Ausdrücke wie <code class="language-php"><span class="token keyword">new</span> Foobar</code>, dann passt da in meiner Ausführung für den Leser etwas nicht - ich glaube @pl oder du hast Nachgehackt. Wenn ich das nicht veranschaulicht hätte, dann hätte es bestimmt lange gedauert, bis das Forum verstanden hat, das ich <em>"Instanzen"</em> meine, aber <em>"Klassen"</em> geschrieben habe.</p> <blockquote> <blockquote> <p>Ich hoffe du verstehst mein Anliegen für das <em>Forum</em></p> </blockquote> <p>Dem Forum bzw. seinen Lesern wäre vermutlich mehr geholfen, wenn du dich an allgemeine Konventionen halten würdest.</p> </blockquote> <p>Sorry. Ich nehm' ja fleißig und konsequent an Logo teil .</p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 08:09:12 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763181#m1763181 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763181#m1763181 <p>Meine Beispiele sind trivialer Code. Eigenschaften von Objekten verwenden, das ist in der OOP etwas sehr Grundlegendes. Es hängt jedoch von Deinem handwerklichen Geschick ab, was Du damit machst und zwar so, daß Dein Code reproduzierbar ist. MFG</p> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 19:56:23 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763206#m1763206 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763206#m1763206 <p>moin,</p> <blockquote> <p>Code, der in nicht zusammenhängenden Klassen wiederverwendet werden soll, kommt in Traits. Falls überhaupt und sich kein besseres Konstrukt findet (Service zum Beispiel).</p> </blockquote> <p>Ich hab zu erst diesen Code als Service Klassen verwendet.</p> <blockquote> <blockquote> <p>Ich für meinen Teil habs' mit einer abstrakten Elternklasse realisiert, von der alle Klassen erben und dann die Elternklasse mit Traits versehen. So spart man sich gehörig schreibarbeit.</p> </blockquote> <p>Schreibarbeit ist nicht das Hauptkriterium, sondern das Veständnis des Codes für Außenstehende, also auch für dich in drei Wochen, und die Wartbarkeit.</p> </blockquote> <p>Ja, auch, Sorry. Wollte ich im <em>Thread</em> hingeschrieben haben, habs aber vergessen .</p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 14:20:55 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763189#m1763189 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763189#m1763189 <p>moin,</p> <blockquote> <blockquote> <blockquote> <blockquote> <p>Neben bei: [...]</p> </blockquote> <p>Objekte sind Arrays!</p> </blockquote> <p>Nein.</p> </blockquote> <p>Siehst Du, Diese Antwort zeugt von einem fehlenden Abstraktionsvermögen. [...]</p> </blockquote> <p>Weißt du das? Hast du meinen Code Haarklein Untersucht, um mir das zu Attestieren? Ich denke du pauschalisierst extrem.</p> <p>Versteh mich Bitte nicht falsch. Ich bin mir sicher, das du mit deiner Aussage keine böswillige Absicht hegst. Aber du bist auf negative weise extrem überschwenglich. Mir machst du auf alle Fälle den Eindruck, weil du lehrenderweise alles runterbetest, was sehr oft nicht zum <em>Thread</em> passt. Und du machst diesbezüglich Stur weiter, obwohl andere Kommentatoren versuchen Dir Einhalt zu gebieten.</p> <p>Und das was du Runterbetest ist manchmal einfach Falsch - nicht immer. Ich bin mir Sicher, das du manche falsche Lehrinhalte anders meinst, als wie du es schreibst, ohne Frage und möglicherweise ist das was du meinst Korrekt. Aber du verstehst das einige Profis deine falsch Lehrinhalte in der Luft zerreißen.</p> <blockquote> <p>Schönen Sonntag</p> </blockquote> <p>Wünsche ich Dir auch @pl</p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 14:23:40 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763190#m1763190 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763190#m1763190 <p>moin,</p> <blockquote> <p>moin,</p> <blockquote> <blockquote> <blockquote> <p>Neben bei: Ich hasse <em>Array</em>'s flut [...]</p> </blockquote> </blockquote> <blockquote> <p>Ich sehe Dein Hauptproblem im richtigen Umgang mit komplexen Datenstrukturen. [...]</p> </blockquote> <p><a href="https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763152#m1763152" rel="noopener noreferrer">s.o.</a></p> </blockquote> <p>Ok, da lag ich ja richtig.</p> </blockquote> <p><a href="https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763189#m1763189" rel="noopener noreferrer">Hier</a></p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 14:29:10 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763193#m1763193 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763193#m1763193 <p>@@MB</p> <p>Du hast 20 Jahre Forumsgeschichte sehr treffend zusammengefasst.</p> <p>Nur beim letzten Satz bin ich mir nicht sicher:</p> <blockquote> <p>Aber du verstehst das einige Profis deine falsch Lehrinhalte in der Luft zerreißen.</p> </blockquote> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 16:12:37 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763198#m1763198 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763198#m1763198 <p>moin,</p> <p>Ein Anmerkung noch von mir:</p> <p>Es passiert hier häuftig das man sich bekriegt um seien festgefahrenen Standpunkt zu vetreten von dem man nicht weicht. Das passiert uns allen, bei dem einen mehr bei anderen weniger. Und das allein nur durch verdammte Missverständnisse!</p> <p>Wenn man einen zusammenhanglose Kommentar-Reaktion auf seinen Kommentar bekommt, und das sofort als Angriff oder unprofessionalität abtun, wäre es ratsam, nochmal auf diese Kommentar-Reaktion in sachlicher Form einzugehen und zu fragen. So können Missverständnisse die auftreten sofort ausgeräumt und im Keim erstickt werden. Es wäre echt wünschenswert. Diese Bitte geht an alle, auch an mich, da ich manchmal der Selben <em>"sch**ße"</em> unterliege wie je jeder der Atmet und sich als Mensch schimpft.</p> <p>Schönes Wochenende </p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 17:56:48 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763202#m1763202 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763202#m1763202 <p>Es kommt immer darauf an, das Wesentliche zu erkennen. Genau daran lasse ich mich auch hier im Forum leiten. Also es kommt darauf an zu erkennen wo das eigentliche Problem liegt. Und hier noch einmal ein trivialer Code:</p> <pre><code class="block language-php"><span class="token keyword">function</span> <span class="token function-definition function">param</span><span class="token punctuation">(</span><span class="token variable">$name</span> <span class="token operator">=</span> <span class="token string single-quoted-string">''</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span> <span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">require</span> <span class="token string double-quoted-string">"CGI.php"</span><span class="token punctuation">;</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">CGI</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token variable">$this</span><span class="token operator">-></span><span class="token constant">CGI</span><span class="token operator">-></span><span class="token function">param</span><span class="token punctuation">(</span><span class="token variable">$name</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Welcher eine interessant Altenative zu <a href="https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763201#m1763201" rel="noopener noreferrer">Dependency Injection</a> zeigt.</p> <p>Das Problem in DI: Eingepflanzte Objekte sind außerhalb der Kapselung veränderbar, der Grund dafür ist, sie sind keine Kopien sondern Referenzen.</p> <p>Og. trivialer Code löst diess Problem. Und zwar ohne daß die Objektstruktur geändert werden muss. Und natürlich kann man eine solche Methoden (Stichwort Factory) auch in Traits auslagern.</p> <p>Du siehst also, hier fallen eine ganze Menge Fachbegriffe. Es kommt darauf an zu verstehen was sich dahinter verbirgt. Kein Astronom der Welt würde die Milchstraße für ein Molkereiprodukt halten (Danke Hoimar von Ditfurth)</p> <p>MFG</p> Dependency Injection, Vorsicht Falle Sun, 19 Jan 20 23:09:08 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763210#m1763210 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763210#m1763210 <p>Tach!</p> <blockquote> <p>Wie wir wissen, ist bei diesem PDO-Objekt das Attribut PDO::ATTR_DEFAULT_FETCH_MODE auf PDO::FETCH_ASSOC gesetzt.</p> </blockquote> <p>Das stört uns aber nicht weiter, weil beim Aufruf von PDOStatement::fetch() der Fetch-Style individuell angegeben werden kann.</p> <blockquote> <p>Nun schauen wir doch mal was passiert, wenn wir dieses Attribut nach der Übergabe an den Konstruktor ändern:</p> </blockquote> <p>Wenn man trotz der Möglichkeit der individuellen Angabe auf den Defaultwert setzt, und diesen - bezogen auf das PDO-Objekt - globalen Wert ändert, dann kann das durchaus ein Problem werden. Ist dann aber persönliches Pech, weil vermeidbar.</p> <blockquote> <p>Es zeigt sich, daß die Änderung am PDO auch dann wirksam werden, wenn diese Änderung nach der sog. Dependency Injection erfolgt. Die Erklärung hierfür ist ganz einfach: Das PDO-Objekt wird in der Eigenschaft $this->PDO referenziert. Das heißt, die Eigenschaft beeinhaltet keine Kopie sondern eine Referenz.</p> </blockquote> <p>Dass bei Objekten Referenzen übergeben werden, ist das übliche Verhalten.</p> <blockquote> <p>Daraus ergibt sich eine wichtige Schlussfolgerung in Sachen Dependency Injection: Das injezierte Objekt kann im Nachhinein geändert werden. Und zwar außerhalb der Kapselung!</p> </blockquote> <p>Ist nur kein spezielles Problem der DI.</p> <p>dedlfix.</p> Trait oder Elternklasse in einer Klassen Gruppe? Sun, 19 Jan 20 19:46:56 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763205#m1763205 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763205#m1763205 <p>moin,</p> <p><a href="https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763189#m1763189" rel="noopener noreferrer">Hier</a></p> <p>lgmb</p> Trait oder Elternklasse in einer Klassen Gruppe? Fri, 24 Jan 20 16:11:15 Z https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763474#m1763474 https://forum.selfhtml.org/self/2020/jan/15/trait-oder-elternklasse-in-einer-klassen-gruppe/1763474#m1763474 <p>Hallo pl,</p> <blockquote> <p>Es kommt immer darauf an, das Wesentliche zu erkennen.</p> </blockquote> <p>was in diesem Fall ist: Du faselst.</p> <p>Was Du zeigst, ist keine Alternative zu DI, sondern die in grellen Farben gezeichnete Darstellung des Problems, das DI lösen will: Festgebackene Abhängigkeiten, die Unit-Tests verhindern und Flexibilität nehmen. In deinem Fall ist es ein Zwieback: außer zur CGI Klasse gibt's auch noch die Abhängigkeit zum Sourcefile, d.h. das Unterschieben einer CGI-Klasse aus CGI_Emulator.php ist auch nicht mehr möglich.</p> <p>Eigentlich ist es in deinem FW ja eine großartige Idee, die HTTP Request/Response Themen auszulagern. So kann man die Controllerklasse über automatisierte Tests laufen lassen und das CGI Umfeld simulieren. Aber genau dafür muss man das CGI Objekt injizieren können. Da ein Controller es vermutlich in 99% aller Fälle brauchen wird, dürfte es wenig sinnvoll sein, dieses Objekt so wie oben gezeigt lazy zu beschaffen. Das Beschaffen der CGI Instanz gehört in den Konstruktor. Man KANN es so bauen, dass eine fehlende CGI Injektion bewirkt, dass der Controller sich das CGI Objekt aus einer Default-Implementation holt. Aber niemals nicht so wie in deiner Methode. Die ist ein perfektes Beispiel für ignoriertes SRP.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - clusi </div>