Example #1
0
 /**
  * Create a serialized string from arguments.
  * Used to hash and index keys.
  * @param array $args
  * @return string
  */
 private static function remSerializeArgs($args)
 {
     $stringify = function (&$value, $index) {
         if (is_array($value)) {
             $value = self::remSerializeArgs($value);
         } elseif (!is_string($value) && method_exists($value, 'remId')) {
             $id = $value->remId();
             if (null === $id || "" === $id) {
                 throw new \Exception("remId() must be non-null and non-empty.");
             }
             $reflection = new \ReflectionClass($value);
             $value = new Id($reflection->getName(), $value->remId());
         }
     };
     // deep copy
     $args_copy = unserialize(serialize($args));
     array_walk_recursive($args_copy, $stringify);
     return serialize($args_copy);
 }