public static function __string($value, $glue = ', ')
    {
        if (is_object($value)) {
            if (method_exists($value, '__toString')) {
                return $value->__toString();
            }
            if ($value instanceof ArrayAccess) {
                return implode($glue, $value);
            }
            return get_class($value);
        } elseif (is_array($value)) {
            return implode($glue, $value);
        } elseif (is_bool($value)) {
            return (true===$value ? 'true' : 'false');
        } elseif (is_callable($value)) {
            return self::__closurable($value);
        }
        return (string) $value;
    }