I'm sure I read a while back about a new feature of PHP that was either a new magic method or a new interface so that you could implement Arrayable methods.
eg
interface Arrayable
{
public function toArray();
}
Was I imagining it?
I'm sure I read a while back about a new feature of PHP that was either a new magic method or a new interface so that you could implement Arrayable methods.
eg
interface Arrayable
{
public function toArray();
}
Was I imagining it?
It's not in PHP itself, but Laravel has an interface that is intended for that exact purpose:
<?php namespace Illuminate\Contracts\Support;
interface Arrayable {
/**
* Get the instance as an array.
*
* @return array
*/
public function toArray();
}
Note: In Laravel v4 the namespace was Illuminate\Support\Contracts
and the interface name was ArrayableInterface
.
Was I imagining it?
Yes.
There is no interface (PHP 5.4 or otherwise) within PHP for handling casting to an array.
PHP 5.4.0 introduced the JsonSerializable
interface, perhaps you're thinking of that?
There's also a draft RFC (one of several related) that suggests a __toArray()
method; see Request for Comments: Scalar Type Casting Magic Methods
You are probably thinking of the iterator interface. If you create a class that implements this you can iterate over it as if it is an array. For example, you can use it in a foreach() loop.
Also take a look at the other predefined interfaces.
You can always write your own arrayable interface and then you can type hint for it or check it with instanceof (see example #4) as you indicated you wanted to do in your comment.
There's this (which is fairly useless IMO) http://php.net/manual/en/class.traversable.php
and also this (which does come in handy but always requires a type check before using it)
http://php.net/manual/en/function.iterator-to-array.php
But no way to handle object to array conversion implicitly.