Вход Регистрация
Файл: vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ArrayType.php
Строк: 72
<?php

namespace DoctrineDBALTypes;

use 
DoctrineDBALPlatformsAbstractPlatform;

use function 
is_resource;
use function 
restore_error_handler;
use function 
serialize;
use function 
set_error_handler;
use function 
stream_get_contents;
use function 
unserialize;

/**
 * Type that maps a PHP array to a clob SQL type.
 */
class ArrayType extends Type
{
    
/**
     * {@inheritdoc}
     */
    
public function getSQLDeclaration(array $columnAbstractPlatform $platform)
    {
        return 
$platform->getClobTypeDeclarationSQL($column);
    }

    
/**
     * {@inheritdoc}
     */
    
public function convertToDatabaseValue($valueAbstractPlatform $platform)
    {
        
// @todo 3.0 - $value === null check to save real NULL in database
        
return serialize($value);
    }

    
/**
     * {@inheritdoc}
     */
    
public function convertToPHPValue($valueAbstractPlatform $platform)
    {
        if (
$value === null) {
            return 
null;
        }

        
$value is_resource($value) ? stream_get_contents($value) : $value;

        
set_error_handler(function (int $codestring $message): bool {
            throw 
ConversionException::conversionFailedUnserialization($this->getName(), $message);
        });

        try {
            return 
unserialize($value);
        } finally {
            
restore_error_handler();
        }
    }

    
/**
     * {@inheritdoc}
     */
    
public function getName()
    {
        return 
Types::ARRAY;
    }

    
/**
     * {@inheritdoc}
     */
    
public function requiresSQLCommentHint(AbstractPlatform $platform)
    {
        return 
true;
    }
}
Онлайн: 0
Реклама