{"id":1169,"date":"2011-02-25T19:00:34","date_gmt":"2011-02-25T18:00:34","guid":{"rendered":"http:\/\/lloc.de\/?p=1169"},"modified":"2025-09-12T13:46:04","modified_gmt":"2025-09-12T11:46:04","slug":"genericdecorator-mit-durchschlag","status":"publish","type":"post","link":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/","title":{"rendered":"GenericDecorator mit Durchschlag"},"content":{"rendered":"<p>Gleich eines vorweg: Das ist wieder einmal ein Artikel zu einem sehr speziellen Detail der Implementierung eines Design Patterns in PHP, was unter Umst\u00e4nden furchtbar langweilig sein kann, wenn man mit der Materie eher wenig zu tun hat. Wer sich f\u00fcr solche Sachen eher nicht interessiert, ist mit diesem Artikel also schlecht bedient. Nachdem ich das nun losgeworden bin, will ich gleich mal durchstarten und die Eckdaten der Umgebung kurz beschreiben, f\u00fcr die ich in letzter Zeit fast ausschlie\u00dflich entwickle.<!--more--><\/p>\n<p>Ich selbst bevorzuge schon seit l\u00e4ngerer Zeit <a href=\"https:\/\/www.ubuntu.com\/\">Ubuntu<\/a> auf meinen Entwicklungsmaschinen. Falls ich das Zielsystem selbst ausw\u00e4hlen kann, entscheide ich mich in der Regel auch hier f\u00fcr die Linux-Distribution, allerdings lade ich dann die Server-Version, weil ich auf den Overhead des X-Servers verzichten will. Mittlererweile sind wir bei Ubuntu 10.10 angekommen, die zum heutigen Zeitpunkt Apache 2.2.16, MySQL 5.1.49 und PHP 5.3.3 installiert, wenn man die \u00fcblichen Metapakete aus dem Task LAMP-Server angew\u00e4hlt hat.<\/p>\n<p>Vor der PHP-Version 5 war es fast unm\u00f6glich, einen Decorator zu implementieren, welcher der <a href=\"https:\/\/de.wikipedia.org\/wiki\/Decorator\">Definition<\/a> auch wirklich gerecht werden konnte. Von der Umsetzung einer schmalen und generischen L\u00f6sung durfte bestenfalls getr\u00e4umt werden. Eine Anwendung, die ich k\u00fcrzlich umgesetzt habe, verwendet Decorator-Klassen, welche von einem generischen Decorator erben, um entsprechende Problematiken mit der landesspezifischen Ausgabe von Zahlen und Zeichenketten zu vermeiden. Allerdings gibt es auch hier wieder einmal einen Haken, wenn man unvorsichtig wird.<\/p>\n<p>Diese schlanke und &#8211; je nach Standpunkt sogar recht ansprechende &#8211; L\u00f6sung l\u00e4sst sich auch recht einfach in bestehende Strukturen einbinden und birgt, trotz des Einsatzes von <a href=\"https:\/\/php.net\/manual\/de\/function.call-user-func-array.php\">call_user_func_array<\/a>, deren Einsatz ja h\u00e4ufig diskutiert wird, keinen nennenswerten Geschwindigkeitsprobleme. \u00dcbernimmt ein Decorator einer abgeleiteten Klasse ein beliebiges Objekt, ist er in der Lage, sich genauso wie selbiges zu verhalten. F\u00fcr meinen Geschmack passiert hier aber schon fast zu viel des Guten.<\/p>\n<p>In meinem Beispiel beginnen eventuell die Probleme in dem Moment, wenn die set-Methoden \u00fcber den Decorator $b und nicht direkt \u00fcber $a ausf\u00fchrt werden. $b wird automatisch auch das Objekt $a \u00e4ndern, was eventuell nicht erwartet wird. call_user_func_array arbeitet aber mit einer Referenz auf das Objekt, womit wieder einmal eine ganz alte Geschichte aufgew\u00e4rmt wurde &#8230;<\/p>\n<p>Have Fun!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gleich eines vorweg: Das ist wieder einmal ein Artikel zu einem sehr speziellen Detail der Implementierung eines Design Patterns in PHP, was unter Umst\u00e4nden furchtbar langweilig sein kann, wenn man mit der Materie eher wenig zu tun hat. Wer sich f\u00fcr solche Sachen eher nicht interessiert, ist mit diesem Artikel also schlecht bedient. Nachdem ich &hellip; <a href=\"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eGenericDecorator mit Durchschlag\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"wpf_show_in_dewp_planet_feed":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[3],"tags":[21],"class_list":["post-1169","post","type-post","status-publish","format-standard","hentry","category-code","tag-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>GenericDecorator mit Durchschlag - realloc&#039;s asylum<\/title>\n<meta name=\"description\" content=\"Gleich eines vorweg: Das ist wieder einmal ein Artikel zu einem sehr speziellen Detail der Implementierung eines Design Patterns in PHP, was unter Umst\u00e4nden furchtbar langweilig sein kann, wenn man mit der Materie eher wenig zu tun hat.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GenericDecorator mit Durchschlag - realloc&#039;s asylum\" \/>\n<meta property=\"og:description\" content=\"Gleich eines vorweg: Das ist wieder einmal ein Artikel zu einem sehr speziellen Detail der Implementierung eines Design Patterns in PHP, was unter Umst\u00e4nden furchtbar langweilig sein kann, wenn man mit der Materie eher wenig zu tun hat.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/\" \/>\n<meta property=\"og:site_name\" content=\"realloc&#039;s asylum\" \/>\n<meta property=\"article:published_time\" content=\"2011-02-25T18:00:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-12T11:46:04+00:00\" \/>\n<meta name=\"author\" content=\"realloc\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"realloc\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/genericdecorator-mit-durchschlag\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/genericdecorator-mit-durchschlag\\\/\"},\"author\":{\"name\":\"realloc\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\"},\"headline\":\"GenericDecorator mit Durchschlag\",\"datePublished\":\"2011-02-25T18:00:34+00:00\",\"dateModified\":\"2025-09-12T11:46:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/genericdecorator-mit-durchschlag\\\/\"},\"wordCount\":375,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\"},\"keywords\":[\"PHP\"],\"articleSection\":[\"Code\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ploetner.io\\\/de\\\/genericdecorator-mit-durchschlag\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/genericdecorator-mit-durchschlag\\\/\",\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/genericdecorator-mit-durchschlag\\\/\",\"name\":\"GenericDecorator mit Durchschlag - realloc&#039;s asylum\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#website\"},\"datePublished\":\"2011-02-25T18:00:34+00:00\",\"dateModified\":\"2025-09-12T11:46:04+00:00\",\"description\":\"Gleich eines vorweg: Das ist wieder einmal ein Artikel zu einem sehr speziellen Detail der Implementierung eines Design Patterns in PHP, was unter Umst\u00e4nden furchtbar langweilig sein kann, wenn man mit der Materie eher wenig zu tun hat.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/genericdecorator-mit-durchschlag\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ploetner.io\\\/de\\\/genericdecorator-mit-durchschlag\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/genericdecorator-mit-durchschlag\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ploetner.io\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GenericDecorator mit Durchschlag\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/\",\"name\":\"realloc's asylum\",\"description\":\"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.\",\"publisher\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ploetner.io\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\",\"name\":\"realloc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\",\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\",\"contentUrl\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\",\"width\":847,\"height\":848,\"caption\":\"realloc\"},\"logo\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\"},\"description\":\"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.\",\"sameAs\":[\"https:\\\/\\\/ploetner.io\\\/\"],\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/author\\\/realloc\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GenericDecorator mit Durchschlag - realloc&#039;s asylum","description":"Gleich eines vorweg: Das ist wieder einmal ein Artikel zu einem sehr speziellen Detail der Implementierung eines Design Patterns in PHP, was unter Umst\u00e4nden furchtbar langweilig sein kann, wenn man mit der Materie eher wenig zu tun hat.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/","og_locale":"de_DE","og_type":"article","og_title":"GenericDecorator mit Durchschlag - realloc&#039;s asylum","og_description":"Gleich eines vorweg: Das ist wieder einmal ein Artikel zu einem sehr speziellen Detail der Implementierung eines Design Patterns in PHP, was unter Umst\u00e4nden furchtbar langweilig sein kann, wenn man mit der Materie eher wenig zu tun hat.","og_url":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/","og_site_name":"realloc&#039;s asylum","article_published_time":"2011-02-25T18:00:34+00:00","article_modified_time":"2025-09-12T11:46:04+00:00","author":"realloc","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"realloc","Gesch\u00e4tzte Lesezeit":"2\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/#article","isPartOf":{"@id":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/"},"author":{"name":"realloc","@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8"},"headline":"GenericDecorator mit Durchschlag","datePublished":"2011-02-25T18:00:34+00:00","dateModified":"2025-09-12T11:46:04+00:00","mainEntityOfPage":{"@id":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/"},"wordCount":375,"commentCount":0,"publisher":{"@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8"},"keywords":["PHP"],"articleSection":["Code"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/","url":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/","name":"GenericDecorator mit Durchschlag - realloc&#039;s asylum","isPartOf":{"@id":"https:\/\/ploetner.io\/de\/#website"},"datePublished":"2011-02-25T18:00:34+00:00","dateModified":"2025-09-12T11:46:04+00:00","description":"Gleich eines vorweg: Das ist wieder einmal ein Artikel zu einem sehr speziellen Detail der Implementierung eines Design Patterns in PHP, was unter Umst\u00e4nden furchtbar langweilig sein kann, wenn man mit der Materie eher wenig zu tun hat.","breadcrumb":{"@id":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ploetner.io\/de\/genericdecorator-mit-durchschlag\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ploetner.io\/de\/"},{"@type":"ListItem","position":2,"name":"GenericDecorator mit Durchschlag"}]},{"@type":"WebSite","@id":"https:\/\/ploetner.io\/de\/#website","url":"https:\/\/ploetner.io\/de\/","name":"realloc's asylum","description":"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.","publisher":{"@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ploetner.io\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8","name":"realloc","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg","url":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg","contentUrl":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg","width":847,"height":848,"caption":"realloc"},"logo":{"@id":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg"},"description":"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.","sameAs":["https:\/\/ploetner.io\/"],"url":"https:\/\/ploetner.io\/de\/author\/realloc\/"}]}},"_links":{"self":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts\/1169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/comments?post=1169"}],"version-history":[{"count":3,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts\/1169\/revisions"}],"predecessor-version":[{"id":6776,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts\/1169\/revisions\/6776"}],"wp:attachment":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/media?parent=1169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/categories?post=1169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/tags?post=1169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}