[PHP-DEV] Suggest new operator like with in c#

Hello

As i read in PHP: 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
;

On Wed, Feb 4, 2026, at 9:50 AM, Ivan Borzenkov wrote:

Hello

As i read in PHP: 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

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 PHP: 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