Re: Methods which auto-return the class instance

From: Date: Fri, 23 Dec 2022 11:20:49 +0000
Subject: Re: Methods which auto-return the class instance
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-119204@lists.php.net to get a copy of this message
Hi Daniele and Claude, pt., 23 gru 2022 o 10:33 Claude Pache <claude.pache@gmail.com> napisał(a): > > > Le 23 déc. 2022 à 01:08, joke2k <joke2k@gmail.com> a écrit : > > > > Hi folks, > > > > What do you think about having a method which returns the class instance > > $this by default only IF its return type is set as > > self? > > > > It is very common for fluent class methods to have a verbose `return > > $this;` ending in their body. > > But If you have declared self as return type into a > > non-static class > > method you have only two options to return: > > > > - the $this object > > - another instance of the same class or subclass > > > > ... in order to avoid a return type error. > > It is still two options, and it is not clear in general which one to pick.. > You could also say that, if you have object as return type, > there are two > options to avoid a return type error: either return the $this > object, or > return another object. > > > > > My proposal is to set the instruction return $this; as > > optional for > > non-static class methods with self declared as return > > type. > > > I’d rather have a syntax saying explicitly that you want to return $this, > rather than letting the interpreter guess what you meant. The obvious one > is: > > ```php > public function hit(): $this { $this->counter++; } > ``` > > Here, there is only one possible return value, and therefore the > return > instruction might be reasonably omitted. > I like the idea of $this as a return type but also strongly believe that the use of return $this; should be forbidden, eventually for control flow use of return; might be justified. Cheers, Michał Marcin Brzuchalski

« previous php.internals (#119204) next »