On Thu, Dec 29, 2016 at 2:12 PM, Mathieu Rochette <math...@rochette.cc> wrote:
> Hello internals, > > I find that using the decorator pattern is very verbose and maybe > something could be done about that, > an article[1] I saw proposed a "decorates" keyword to solves this, here is > how it might look like in PHP: > > interface Foo { > public bar(); > public taz(); > } > > class EchoFooBar decorates Foo { > public function bar() { > $this->logger->debug("foo bar"); > return $this->decorated->bar(); > } > } > > class LoggedFooTaz decorates Foo { > private $logger; > > public function __construct(Foo $decorated, Logger $logger) { > $this->logger = $logger; > $this->decorated = $decorated; > } > > public function taz() { > $this->logger->debug("foo taz"); > return $this->decorated->taz(); > } > } > > * the constructor is optional and default to take the first argument and > put it in $decorated > * if the constructor is provided PHP check that $decorated is set and > implements the decorated interface or class > * all public methods not overridden are automatically proxied to the > decorated object > > There is at least a few different ways to go about this, the previous > example was just to give you a preview of what it could be. If there is > interest I'd like to write an RFC for this :) > > What do you think about this ? > > > thank you > > > [1] https://dzone.com/articles/is-inheritance-dead > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > Just my 2 cents: Too much magic syntactic sugar, whereas you are just saving very little time while implementing a few method stubs that take.. Yet, in order to achieve that, you added a huge amount of complexity for all the tooling that relies on the AST, including PHP itself. . Marco Pivetta http://twitter.com/Ocramius http://ocramius.github.com/