00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00018 final class Assert extends StaticFactory
00019 {
00020 public static function isTrue($boolean, $message = null)
00021 {
00022 if ($boolean !== true)
00023 self::fail(
00024 $message.', '.self::dumpArgument($boolean)
00025 );
00026 }
00027
00028 public static function isFalse($boolean, $message = null)
00029 {
00030 if ($boolean !== false)
00031 self::fail(
00032 $message.', '.self::dumpArgument($boolean)
00033 );
00034 }
00035
00036 public static function isNull($variable, $message = null)
00037 {
00038 if ($variable !== null)
00039 self::fail(
00040 $message.', '.self::dumpArgument($variable)
00041 );
00042 }
00043
00044 public static function isNotNull($variable, $message = null)
00045 {
00046 if ($variable === null)
00047 self::fail($message);
00048 }
00049
00050 public static function isArray(&$variable, $message = null)
00051 {
00052 if (!is_array($variable))
00053 self::fail(
00054 $message.', '.self::dumpArgument($variable)
00055 );
00056 }
00057
00058 public static function isInteger($variable, $message = null)
00059 {
00060 if (
00061 !(
00062 is_numeric($variable)
00063 && $variable == (int) $variable
00064 )
00065 )
00066 self::fail(
00067 $message.', '.self::dumpArgument($variable)
00068 );
00069 }
00070
00071 public static function isPositiveInteger($variable, $message = null)
00072 {
00073 if (
00074 !self::checkInteger($variable)
00075 || $variable < 0
00076 )
00077 self::fail(
00078 $message.', '.self::dumpArgument($variable)
00079 );
00080 }
00081
00082 public static function isFloat($variable, $message = null)
00083 {
00084 if (
00085 !(
00086 $variable == (float) $variable
00087 && is_numeric($variable)
00088 )
00089 )
00090 self::fail(
00091 $message.', '.self::dumpArgument($variable)
00092 );
00093 }
00094
00095 public static function isString($variable, $message = null)
00096 {
00097 if (!is_string($variable))
00098 self::fail(
00099 $message.', '.self::dumpArgument($variable)
00100 );
00101 }
00102
00103 public static function isBoolean($variable, $message = null)
00104 {
00105 if (!($variable === true || $variable === false))
00106 self::fail(
00107 $message.', '.self::dumpArgument($variable)
00108 );
00109 }
00110
00111 public static function isTernaryBase($variable, $message = null)
00112 {
00113 if (
00114 !(
00115 ($variable === true)
00116 || ($variable === false)
00117 || ($variable === null)
00118 )
00119 )
00120 self::fail($message);
00121 }
00122
00123 public static function brothers(&$first, &$second, $message = null)
00124 {
00125 if (get_class($first) !== get_class($second))
00126 self::fail($message);
00127 }
00128
00129 public static function isEqual($first, $second, $message = null)
00130 {
00131 if ($first !== $second)
00132 self::fail(
00133 $message.', '.self::dumpOppositeArguments($first, $second)
00134 );
00135 }
00136
00137 public static function isInstance($first, $second, $message = null)
00138 {
00139 if (!ClassUtils::isInstanceOf($first, $second))
00140 self::fail(
00141 $message.', '.self::dumpOppositeArguments($first, $second)
00142 );
00143 }
00144
00145 public static function isUnreachable($message = 'unreachable code reached')
00146 {
00147 self::fail($message);
00148 }
00149
00151
00152 public static function checkInteger($value)
00153 {
00154 return (
00155 is_numeric($value)
00156 && ($value == (int) $value)
00157 && (strlen($value) == strlen((int) $value))
00158 );
00159 }
00160
00161 public static function dumpArgument($argument)
00162 {
00163 return 'argument: ['.print_r($argument, true).']';
00164 }
00165
00166 public static function dumpOppositeArguments($first, $second)
00167 {
00168 return
00169 'arguments: ['.print_r($first, true).'] '
00170 .'vs. ['.print_r($second, true).'] ';
00171 }
00173
00174 private static function fail($message = null)
00175 {
00176 throw new WrongArgumentException(
00177 $message
00178 .(
00179 defined('__LOCAL_DEBUG__')
00180 ? "\n\n".print_r(debug_backtrace(), true)
00181 : null
00182 )
00183 );
00184 }
00185 }
00186 ?>