'PHPStan Extension: Dynamic Return Types with Value Objects
Some libraries (like Doctrine) use simple stringable value-objects, like Func:
<?php
class Func {
protected $name;
protected $arguments;
public function __construct($name, $arguments) {
$this->name = $name;
$this->arguments = $arguments;
}
public function __toString() {
return $this->name . '(' . implode(', ', $this->arguments) . ')';
}
}
$min = new Func('MIN', ['my_field']);
echo $min; // MIN(my_field)
Would it be possible for PHPStan to use a Conditional Return Type for the __toString() method, something like:
/**
* @return ($this->value is literal-string ? literal-string : string)
*/
If not, maybe a Dynamic Return Type could work? I have used DynamicMethodReturnTypeExtension::getTypeFromMethodCall() before, but I'm not sure if it can remember the values that have gone into the object, either during __construct() or via other methods.
This relates to the PHPStan Doctrine Extension, where my intention is for __toString() to return the literal-string type when all the inputs to the value-object are literal-string, otherwise return a string.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
