Suggest new operator like with in c#

php.internals

Ivan Borzenkov

209 days ago
Hello As i read in https://wiki.php.net/rfc/howto write here “concept”. For fill dto and other same objects need assign to many fields of on object, before properties was be use return $this  in setters and code loos like this $item     ->setType(Item::TYPE_CLOUT)     ->setProduct($product)     ->setPrice($price) and it was single operator, but it not work with simple property or get-set function need write $item->type = Item::TYPE_CLOUT; $item->product = $product; $item->price = $price; suggest add operator like with in c# which do action and back context back and use for example :> same assign will be look like this $item     :>type = Item::TYPE_CLOUT     :>product = $product     :>price = $price ;

Larry Garfield

209 days ago
On Wed, Feb 4, 2026, at 9:50 AM, Ivan Borzenkov wrote:
> Hello > > As i read in https://wiki.php.net/rfc/howto write here “concept”. > > For fill dto and other same objects need assign to many fields of on > object, before properties was be use return $this  in setters and code > loos like this > > $item >     ->setType(Item::TYPE_CLOUT) >     ->setProduct($product) >     ->setPrice($price) > > and it was single operator, but it not work with simple property or > get-set function need write > > $item->type = Item::TYPE_CLOUT; > $item->product = $product; > $item->price = $price; > > suggest add operator like with in c# which do action and back context > back and use for example :> > same assign will be look like this > > $item >     :>type = Item::TYPE_CLOUT >     :>product = $product >     :>price = $price > ;
These days, such objects usually have promoted properties in their constructor, and we have named arguments, which allows this already: readonly class Item { public function __construct( public int $type, public Product $product, public float $price, ) {} } $item = new Item( type: Item::TYPE_CLOUT, product: $product, price: $price ); In what way is that insufficient? True it only works on the constructor, but commonly such objects are only assigned to in the constructor. --Larry Garfield

Ben Ramsey

209 days ago
On 2/4/26 10:03, Larry Garfield wrote:
> On Wed, Feb 4, 2026, at 9:50 AM, Ivan Borzenkov wrote: >> Hello >> >> As i read in https://wiki.php.net/rfc/howto write here “concept”. >> >> For fill dto and other same objects need assign to many fields of on >> object, before properties was be use return $this  in setters and code >> loos like this >> >> $item >>     ->setType(Item::TYPE_CLOUT) >>     ->setProduct($product) >>     ->setPrice($price) >> >> and it was single operator, but it not work with simple property or >> get-set function need write >> >> $item->type = Item::TYPE_CLOUT; >> $item->product = $product; >> $item->price = $price; >> >> suggest add operator like with in c# which do action and back context >> back and use for example :> >> same assign will be look like this >> >> $item >>     :>type = Item::TYPE_CLOUT >>     :>product = $product >>     :>price = $price >> ; > > These days, such objects usually have promoted properties in their constructor, and we have named arguments, which allows this already: > > readonly class Item { > public function __construct( > public int $type, > public Product $product, > public float $price, > ) {} > } > > $item = new Item( > type: Item::TYPE_CLOUT, > product: $product, > price: $price > ); > > In what way is that insufficient? True it only works on the constructor, but commonly such objects are only assigned to in the constructor.
I imagine this is desirable when one moves away from defining setters and uses property hooks instead. Cheers, Ben