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/

Reply via email to