1: <?php
2:
3: namespace Teto\Object;
4:
5: use function is_array;
6:
7: /**
8: * Interface for array compatible object
9: *
10: * @author USAMI Kenta <tadsan@zonu.me>
11: * @copyright 2016 Baguette HQ
12: * @license http://www.apache.org/licenses/LICENSE-2.0
13: */
14: class Helper
15: {
16: /**
17: * Convert object to array recursive
18: *
19: * @param mixed $ary_or_obj
20: * @return array|null
21: */
22: public static function toArray($ary_or_obj, $is_toplevel = true)
23: {
24: if ($ary_or_obj instanceof ToArrayInterface) {
25: return $ary_or_obj->toArray();
26: }
27:
28: if (!is_array($ary_or_obj) && !$ary_or_obj instanceof \Traversable) {
29: return $is_toplevel ? null : $ary_or_obj;
30: }
31:
32: $array = [];
33: foreach ($ary_or_obj as $i => $elm) {
34: $array[$i] = Helper::toArray($elm, false);
35: }
36:
37: return $array;
38: }
39: }
40: