On 13/07/2014 16:56, Andrea Faulds wrote:
Somewhat off-topic, but maybe we should make StdClass be the actual base class?
I mean, it’s already used as a generic object, and you could then put StdClass
as a type hint if you’re using an object as a key/value store but want to allow
sophisticated objects to be passed.
Also, we don’t have a mechanism to cast between classes mostly because we don’t
need it; if Bar extends Foo and a function takes a Foo, it can also take a Bar.
It's an interesting thought, but we currently have the object keyword
for that particular use case. In some languages, having a base object is
useful because functionality can be defined there, but PHP provides no
way of altering existing classes, limiting that use too.
Personally, I'm too much of a fan of PHP's arrays to bother with
stdClass at all; if you want to future-proof things, it's not that hard
to write placeholders ready for later implementation:
class MyValueObject {
/** @todo Declare public properties */
}
or:
interface UsefulObject {
/** @todo Not sure what to enforce yet */
}
Allowing an array to specific-class cast would be a useful short-hand
initialiser in that case (although you'd then want an __castFromArray
override when you did flesh out the class):
$foo = (MyValueObject)['id' => 42, 'name' => 'The Answer'];
--
Rowan Collins
[IMSoP]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php