Overview

Namespaces

  • Peach
    • DF
    • DT
    • Http
      • Body
      • Header
    • Markup
    • Util

Classes

  • Peach\DF\Base64Codec
  • Peach\DF\CodecChain
  • Peach\DF\JsonCodec
  • Peach\DF\SerializationCodec
  • Peach\DF\Utf8Codec
  • Peach\DT\AbstractTime
  • Peach\DT\Clock
  • Peach\DT\Date
  • Peach\DT\Datetime
  • Peach\DT\DefaultClock
  • Peach\DT\FixedClock
  • Peach\DT\FormatWrapper
  • Peach\DT\HttpDateFormat
  • Peach\DT\OffsetClock
  • Peach\DT\ShiftFormat
  • Peach\DT\SimpleFormat
  • Peach\DT\TimeEquator
  • Peach\DT\Timestamp
  • Peach\DT\TimeWrapper
  • Peach\DT\UnixTimeFormat
  • Peach\DT\Util
  • Peach\DT\W3cDatetimeFormat
  • Peach\Http\Body
  • Peach\Http\Body\CodecRenderer
  • Peach\Http\Body\StringRenderer
  • Peach\Http\DefaultEndpoint
  • Peach\Http\Header\CookieItem
  • Peach\Http\Header\CookieOptions
  • Peach\Http\Header\HttpDate
  • Peach\Http\Header\NoField
  • Peach\Http\Header\QualityValues
  • Peach\Http\Header\Raw
  • Peach\Http\Header\SetCookie
  • Peach\Http\Header\Status
  • Peach\Http\Request
  • Peach\Http\Response
  • Peach\Http\Util
  • Peach\Markup\AbstractHelper
  • Peach\Markup\AbstractRenderer
  • Peach\Markup\BaseHelper
  • Peach\Markup\BreakControlWrapper
  • Peach\Markup\Builder
  • Peach\Markup\Code
  • Peach\Markup\Comment
  • Peach\Markup\ContainerElement
  • Peach\Markup\Context
  • Peach\Markup\DebugBuilder
  • Peach\Markup\DebugContext
  • Peach\Markup\DefaultBreakControl
  • Peach\Markup\DefaultBuilder
  • Peach\Markup\DefaultContext
  • Peach\Markup\Element
  • Peach\Markup\EmptyElement
  • Peach\Markup\HelperObject
  • Peach\Markup\HtmlHelper
  • Peach\Markup\Indent
  • Peach\Markup\MinimalBreakControl
  • Peach\Markup\NameBreakControl
  • Peach\Markup\NameValidator
  • Peach\Markup\NodeList
  • Peach\Markup\None
  • Peach\Markup\SgmlRenderer
  • Peach\Markup\Text
  • Peach\Markup\XmlRenderer
  • Peach\Util\AbstractMapEntry
  • Peach\Util\ArrayMap
  • Peach\Util\ArrayMapEntry
  • Peach\Util\Arrays
  • Peach\Util\DefaultComparator
  • Peach\Util\DefaultEquator
  • Peach\Util\HashMap
  • Peach\Util\HashMapEntry
  • Peach\Util\Strings
  • Peach\Util\Values

Interfaces

  • Peach\DF\Codec
  • Peach\DT\Format
  • Peach\DT\Time
  • Peach\Http\BodyRenderer
  • Peach\Http\Endpoint
  • Peach\Http\HeaderField
  • Peach\Http\MultiHeaderField
  • Peach\Http\SingleHeaderField
  • Peach\Markup\BreakControl
  • Peach\Markup\Component
  • Peach\Markup\Container
  • Peach\Markup\Helper
  • Peach\Markup\Node
  • Peach\Markup\Renderer
  • Peach\Util\Comparable
  • Peach\Util\Comparator
  • Peach\Util\Equator
  • Peach\Util\Map
  • Peach\Util\MapEntry
  • Overview
  • Namespace
  • Class
  1: <?php
  2: /*
  3:  * Copyright (c) 2014 @trashtoy
  4:  * https://github.com/trashtoy/
  5:  * 
  6:  * Permission is hereby granted, free of charge, to any person obtaining a copy of
  7:  * this software and associated documentation files (the "Software"), to deal in
  8:  * the Software without restriction, including without limitation the rights to use,
  9:  * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
 10:  * Software, and to permit persons to whom the Software is furnished to do so,
 11:  * subject to the following conditions:
 12:  * 
 13:  * The above copyright notice and this permission notice shall be included in all
 14:  * copies or substantial portions of the Software.
 15:  * 
 16:  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 17:  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 18:  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 19:  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 20:  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 21:  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 22:  */
 23: /**
 24:  * PHP class file.
 25:  * @auhtor trashtoy
 26:  * @since  2.0.0
 27:  */
 28: namespace Peach\Util;
 29: 
 30: /**
 31:  * デフォルトの Equator です.
 32:  */
 33: class DefaultEquator implements Equator
 34: {
 35:     /** このクラスはインスタンス化できません. */
 36:     private function __construct() {}
 37:     
 38:     /**
 39:      * このクラスの唯一のインスタンスを返します.
 40:      * 
 41:      * @return DefaultEquator
 42:      * @codeCoverageIgnore
 43:      */
 44:     public static function getInstance()
 45:     {
 46:         static $instance = null;
 47:         if (!isset($instance)) {
 48:             $instance = new self();
 49:         }
 50:         return $instance;
 51:     }
 52:     
 53:     /**
 54:      * 引数 $var1 と $var2 が等価かどうか調べます.
 55:      * 
 56:      * 引数の少なくともいずれか一方がオブジェクトまたは配列の場合は
 57:      * print_r() の結果を比較します.
 58:      * (hashCode が print_r() の結果を使ってハッシュコードを生成するためです.)
 59:      * 
 60:      * 引数の少なくともいずれか一方が文字列の場合は両引数を文字列として比較します.
 61:      * 引数が両方とも数値の場合は == で,
 62:      * それ以外の場合は === で比較した結果を返します.
 63:      * 
 64:      * @param  mixed $var1
 65:      * @param  mixed $var2
 66:      * @return bool
 67:      */
 68:     public function equate($var1, $var2)
 69:     {
 70:         if ($var1 === $var2) {
 71:             return true;
 72:         }
 73:         if (is_object($var1) || is_object($var2) || is_array($var1) || is_array($var2)) {
 74:             $str1 = print_r($var1, true);
 75:             $str2 = print_r($var2, true);
 76:             return $str1 === $str2;
 77:         }
 78:         if (is_string($var1) || is_string($var2)) {
 79:             return strcmp($var1, $var2) === 0;
 80:         }
 81:         if (is_numeric($var1) && is_numeric($var2)) {
 82:             return $var1 == $var2;
 83:         }
 84:         
 85:         return $var1 === $var2;
 86:     }
 87:     
 88:     /**
 89:      * 指定された値のハッシュ値を返します.
 90:      * ハッシュ値の計算規則は以下のとおりです.
 91:      * 
 92:      * - boolean 型にキャストした結果 FALSE となるような引数については 0
 93:      * - 引数が数値表現の場合はその絶対値
 94:      * - それ以外の値の場合は, 引数の文字列表現の {@link http://www.php.net/manual/function.md5.php md5()} ハッシュの一部
 95:      * 
 96:      * @param  mixed $var
 97:      * @return int   引数のハッシュ値
 98:      */
 99:     public function hashCode($var)
100:     {
101:         if (empty($var)) {
102:             return 0;
103:         }
104:         if (is_numeric($var)) {
105:             return abs(intval($var));
106:         }
107:         
108:         $str = (is_object($var) || is_array($var)) ? print_r($var, true) : strval($var);
109:         return hexdec(substr(md5($str), 22));
110:     }
111: }
112: 
PEACH2 API documentation generated by ApiGen