2016-02-12 16:55 GMT+02:00 Rowan Collins <rowan.coll...@gmail.com>: > S.A.N wrote on 12/02/2016 14:39: >> >> 2016-02-12 16:27 GMT+02:00 Rowan Collins <rowan.coll...@gmail.com>: >>> >>> S.A.N wrote on 12/02/2016 13:37: >>>> >>>> Often all keys are unknown, or a very lot keys, use list(...) - is >>>> unreal. >>>> >>>> I would like to, instead <?php >>>> >>>> foreach($params as $key => $value) >>>> { >>>> $this{$key} = $value >>>> } >>>> >>>> Use the short syntax sugar <?php >>>> >>>> $this += $params >>>> >>>> ?> >>>> >>>> It's really do? >>>> >>> If the keys are unknown, then you probably don't want to blindly copy >>> them >>> onto object properties; at that point, you might as well just have >>> $this->data and leave them as an array. It sounds like what you actually >>> want is an object literal syntax - i.e. $params should never have been an >>> array in the first place. >>> >> I would operator (+=) as like to function Object.assign() >> >> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign > > > Sure, but I was thinking more in terms of whether this is a strong use case > for having it. In JS, "Object" is the appropriate type for an arbitrary hash > of key-value pairs. In PHP, the appropriate type for such a structure is > "array", which already supports the + operator and array_merge function. > > Note that the method you linked doesn't copy from an array onto an object, > it copies from one object to another. Doing the same in PHP leaves the > question of how you create the right-hand object, which is why I mentioned > "object literal syntax", i.e. the ability to write something like "{ a => > 42, b => 'Hello' }" or "new Foo { a => 42, b => 'Hello' }" to define an > object with directly-specified property values, rather than running the > constructor. > > The constructor example using list() syntax is deliberately naming the > fields we're interested in, because it's populating an object of a > particular class, with known property names, not dynamically creating > arbitrary property keys. > > Regards, > -- > Rowan Collins > [IMSoP] >
I agree, list() syntax and object literal syntax - is need, +1 But is also necessary and the function or operator like object_assign($target, ...$sources) -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php