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.

My proposal is to set the instruction `return $this;` as optional for
non-static class methods with `self` declared as return type.

Example:
```
class Counter {

public function __construct(private int $counter = 0) {}

public function hit(): self { $this->counter++; }
public function print(): self { echo $this->counter; }

public function split(): self { return new self($this->counter); }

}

$main = (new Counter)->hit()->hit()->hit()->print()
// 3
$sub = $main->split()->hit()->print()
// 4
```

Thank you for reading my proposal,
please let me know if you like it or if there are any issues with this.

Regards,

Daniele

Reply via email to