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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
<?php namespace amekusa\plz; main::required;
/**
* Operator utilities
*
* To get started, place the following line around top of your code.
* ```php
* use amekusa\plz\op;
* ```
*/
abstract class op {
/**
* Returns whether or not `$X` equals `$Y`
* @param mixed $X
* @param mixed $Y
* @return boolean
*/
static function eq($X, $Y) {
if (is_array($X)) return arr::eq($X, $Y);
if (is_object($X)) return obj::eq($X, $Y);
return $X === $Y;
}
/**
* Returns whether any one of conditions supplied is *truthy*
*
* If only 1 argument is passed and it is *iterable*,
* checks whether any one of its elements is *truthy*.
*
* @example Demonstration
* ```php
* $var1 = 0; // Falsy
* $var2 = null; // Falsy
* $var3 = 'string'; // Truthy
* var_dump( op::any($var1, $var2) );
* var_dump( op::any($var1, $var2, $var3) );
* ```
* ```php
* bool(false)
* bool(true)
* ```
* @example Checking iterable elements
* ```php
* $var1 = array (
* 0, // Falsy
* null, // Falsy
* 'string' // Truthy
* );
* $var2 = array (
* 0, // Falsy
* null, // Falsy
* false // Falsy
* );
* var_dump( op::any($var1) );
* var_dump( op::any($var2) );
* ```
* ```php
* bool(true)
* bool(false)
* ```
* @param mixed[*] $Conditions
* @return boolean
*/
static function any($Conditions) {
if (func_num_args() == 1 && type::is_iterable($Conditions)) {
foreach ($Conditions as $iCond) {
if (type::bool($iCond)) return true;
}
return false;
}
foreach (func_get_args() as $iArg) {
if (type::bool($iArg)) return true;
}
return false;
}
/**
* Returns whether all of conditions supplied is *truthy*
*
* If only 1 argument is passed and it is *iterable*,
* checks whether all of its elements is *truthy*.
*
* @example Demonstration
* ```php
* $var1 = 1; // Truthy
* $var2 = true; // Truthy
* $var3 = null; // Falsy
* var_dump( op::all($var1, $var2) );
* var_dump( op::all($var1, $var2, $var3) );
* ```
* ```php
* bool(true)
* bool(false)
* ```
* @example Checking iterable elements
* ```php
* $var1 = array (
* 1, // Truthy
* true, // Truthy
* null // Falsy
* );
* $var2 = array (
* 1, // Truthy
* true, // Truthy
* 'string' // Truthy
* );
* var_dump( op::all($var1) );
* var_dump( op::all($var2) );
* ```
* ```php
* bool(false)
* bool(true)
* ```
* @param mixed[*] $Conditions
* @return boolean
*/
static function all($Conditions) {
if (func_num_args() == 1 && type::is_iterable($Conditions)) {
foreach ($Conditions as $iCond) {
if (!type::bool($iCond)) return false;
}
return true;
}
foreach (func_get_args() as $iArg) {
if (!type::bool($iArg)) return false;
}
return true;
}
}