Horde_Serialize::_serialize PHP Method

_serialize() protected static method

Serialize data.
protected static _serialize ( mixed $data, mixed $mode, mixed $params = null ) : string
$data mixed The data to be serialized.
$mode mixed The mode of serialization. Can be either a single mode or array of modes. If array, will be serialized in the order provided.
$params mixed Any additional parameters the serialization method requires.
return string A serialized string.
    protected static function _serialize($data, $mode, $params = null)
    {
        switch ($mode) {
            case self::NONE:
                break;
                // $params['level'] = Level of compression (default: 3)
                // $params['workfactor'] = How does compression phase behave when given
                //                         worst case, highly repetitive, input data
                //                         (default: 30)
            // $params['level'] = Level of compression (default: 3)
            // $params['workfactor'] = How does compression phase behave when given
            //                         worst case, highly repetitive, input data
            //                         (default: 30)
            case self::BZIP:
                $data = bzcompress($data, isset($params['level']) ? $params['level'] : 3, isset($params['workfactor']) ? $params['workfactor'] : 30);
                if (is_integer($data)) {
                    $data = false;
                }
                break;
            case self::WDDX:
                $data = wddx_serialize_value($data);
                break;
            case self::IMAP8:
                $data = quoted_printable_encode($data);
                break;
            case self::IMAPUTF7:
                $data = Horde_Imap_Client_Utf7imap::Utf8ToUtf7Imap(Horde_String::convertCharset($data, 'ISO-8859-1', 'UTF-8'));
                break;
            case self::IMAPUTF8:
                $data = Horde_Mime::decode($data);
                break;
                // $params['level'] = Level of compression (default: 3)
            // $params['level'] = Level of compression (default: 3)
            case self::GZ_DEFLATE:
                $data = gzdeflate($data, isset($params['level']) ? $params['level'] : 3);
                break;
            case self::BASIC:
                $data = serialize($data);
                break;
                // $params['level'] = Level of compression (default: 3)
            // $params['level'] = Level of compression (default: 3)
            case self::GZ_COMPRESS:
                $data = gzcompress($data, isset($params['level']) ? $params['level'] : 3);
                break;
            case self::BASE64:
                $data = base64_encode($data);
                break;
                // $params['level'] = Level of compression (default: 3)
            // $params['level'] = Level of compression (default: 3)
            case self::GZ_ENCODE:
                $data = gzencode($data, isset($params['level']) ? $params['level'] : 3);
                break;
            case self::RAW:
                $data = rawurlencode($data);
                break;
            case self::URL:
                $data = urlencode($data);
                break;
                // $params = Source character set
            // $params = Source character set
            case self::UTF7:
                $data = Horde_String::convertCharset($data, $params, 'UTF-7');
                break;
                // $params = Source character set
            // $params = Source character set
            case self::UTF7_BASIC:
                $data = self::serialize($data, array(self::UTF7, self::BASIC), $params);
                break;
            case self::JSON:
                $tmp = json_encode($data);
                /* Basic error handling attempts.
                 * TODO: JSON_ERROR_UTF8 = 5; available as of PHP 5.3.3 */
                if (json_last_error() === 5) {
                    $data = json_encode(Horde_String::convertCharset($data, $params, 'UTF-8', true));
                } else {
                    $data = $tmp;
                }
                break;
            case self::LZF:
                $data = lzf_compress($data);
                break;
        }
        if ($data === false) {
            throw new Horde_Serialize_Exception('Serialization failed.');
        }
        return $data;
    }