blob: 2091c2c7da09adc866676c8ab32a1252d8bcab6f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<?php
namespace ipl\Stdlib;
use InvalidArgumentException;
use Traversable;
use stdClass;
/**
* Detect and return the PHP type of the given subject
*
* If subject is an object, the name of the object's class is returned, otherwise the subject's type.
*
* @param $subject
*
* @return string
*/
function get_php_type($subject)
{
if (is_object($subject)) {
return get_class($subject);
} else {
return gettype($subject);
}
}
/**
* Get the array value of the given subject
*
* @param array|object|Traversable $subject
*
* @return array
*
* @throws InvalidArgumentException If subject type is invalid
*/
function arrayval($subject)
{
if (is_array($subject)) {
return $subject;
}
if ($subject instanceof stdClass) {
return (array) $subject;
}
if ($subject instanceof Traversable) {
// Works for generators too
return iterator_to_array($subject);
}
throw new InvalidArgumentException(sprintf(
'arrayval expects arrays, objects or instances of Traversable. Got %s instead.',
get_php_type($subject)
));
}
/**
* Get the first key of an iterable
*
* @param iterable $iterable
*
* @return mixed The first key of the iterable if it is not empty, null otherwise
*/
function iterable_key_first($iterable)
{
foreach ($iterable as $key => $_) {
return $key;
}
return null;
}
|