AgelxNash /
functions
| 1 | <?php |
||
| 2 | if (! function_exists('value')) { |
||
| 3 | /** |
||
| 4 | * Если аргумент это замыкание, то вычисляется его значение и отдается в виде результата |
||
| 5 | * В противном случае возвращается сам аргумент |
||
| 6 | * |
||
| 7 | * @param mixed $value |
||
| 8 | * @return mixed |
||
| 9 | */ |
||
| 10 | function value($value) |
||
| 11 | { |
||
| 12 | return $value instanceof Closure ? $value() : $value; |
||
| 13 | } |
||
| 14 | } |
||
| 15 | |||
| 16 | if (! function_exists('is_serialized')) { |
||
| 17 | /** |
||
| 18 | * Проверка переменной на предмет наличия в ней сериализованных данных |
||
| 19 | * |
||
| 20 | * @param mixed $data данные которые необходимо проверить |
||
| 21 | * @return bool |
||
| 22 | */ |
||
| 23 | function is_serialized($data) |
||
| 24 | { |
||
| 25 | if (! is_string($data)) { |
||
| 26 | return false; |
||
| 27 | } |
||
| 28 | $data = trim($data); |
||
| 29 | if ('N;' == $data) { |
||
| 30 | return true; |
||
| 31 | } |
||
| 32 | $length = strlen($data); |
||
| 33 | if ($length < 4) { |
||
| 34 | return false; |
||
| 35 | } |
||
| 36 | if (':' !== $data[1]) { |
||
| 37 | return false; |
||
| 38 | } |
||
| 39 | $lastc = $data[$length - 1]; |
||
| 40 | if (';' !== $lastc && '}' !== $lastc) { |
||
| 41 | return false; |
||
| 42 | } |
||
| 43 | $token = $data[0]; |
||
| 44 | switch ($token) { |
||
| 45 | case 's': |
||
| 46 | return ('"' === $data[$length - 2]); |
||
| 47 | case 'a': |
||
| 48 | case 'O': |
||
| 49 | return (bool)preg_match("/^{$token}:[0-9]+:/s", $data); |
||
| 50 | case 'b': |
||
| 51 | case 'i': |
||
| 52 | case 'd': |
||
| 53 | return (bool)preg_match("/^{$token}:[0-9.E-]+;\$/", $data); |
||
| 54 | } |
||
| 55 | |||
| 56 | return false; |
||
| 57 | } |
||
| 58 | } |
||
| 59 | |||
| 60 | if (! function_exists('var_switch')) { |
||
| 61 | /** |
||
| 62 | * Поменять местами значения двух переменных |
||
| 63 | * |
||
| 64 | * @param $var1 |
||
| 65 | * @param $var2 |
||
| 66 | * @return void |
||
| 67 | */ |
||
| 68 | function var_switch(&$var1, &$var2) |
||
| 69 | { |
||
| 70 | list($var2, $var1) = [$var1, $var2]; |
||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
Loading history...
|
|||
| 71 | } |
||
| 72 | } |
||
| 73 | |||
| 74 | if (! function_exists('arity')) { |
||
| 75 | /** |
||
| 76 | * Сколько параметров принимает данное замыкание |
||
| 77 | * |
||
| 78 | * @param Closure $callback |
||
| 79 | * @return int |
||
| 80 | */ |
||
| 81 | function arity(Closure $callback) |
||
| 82 | { |
||
| 83 | $r = new ReflectionObject($callback); |
||
| 84 | $m = $r->getMethod('__invoke'); |
||
| 85 | |||
| 86 | return $m->getNumberOfParameters(); |
||
| 87 | } |
||
| 88 | } |
||
| 89 |