Full description https://wiki.php.net/rfc/code_free_constructor
Draft realisation
https://github.com/php/php-src/compare/master...rjhdby:constructor"Code free" constructor is constructor with only purpose to directly
set
object properties from received parameters and, optionally, call parent
constructor.Main idea is to move such constructor declaration inside class
declaration.
I don't like the approach but I can change my mind. Currently, I see an
issue with your RFC: How do you add types with this syntax? Given this
syntax from the RFC:class MotorCycle($vendor, $cc){
public $whells = 2;
};class MyCustomMotorCycle($cc, $whells) extends MotorCycle("Custom", $cc){
};How do you say that
public $cc
can be an integer for instance, so
expressing thispublic int $cc
?
My realization simply add "__construct" method into class via AST
injection.
Another words, code "($cc, $whells)" considered as zend_ast node
"parameter_list" and
accordingly processed by standart way. You can declare property type
like you declare them inside standard method.
Also you can declare defaults for parameters, use "..." notation (there is
a nuance)
and do everything else.
class MyCustomMotorCycle(int $cc, int $whells = 3, ...$otherParams)
extends MotorCycle("Custom", $cc){ };