Вход Регистрация
Файл: vendor/doctrine/dbal/src/Types/JsonType.php
Строк: 93
<?php

namespace DoctrineDBALTypes;

use 
DoctrineDBALPlatformsAbstractPlatform;
use 
DoctrineDeprecationsDeprecation;
use 
JsonException;

use function 
is_resource;
use function 
json_decode;
use function 
json_encode;
use function 
stream_get_contents;

use const 
JSON_PRESERVE_ZERO_FRACTION;
use const 
JSON_THROW_ON_ERROR;

/**
 * Type generating json objects values
 */
class JsonType extends Type
{
    
/**
     * {@inheritDoc}
     */
    
public function getSQLDeclaration(array $columnAbstractPlatform $platform)
    {
        return 
$platform->getJsonTypeDeclarationSQL($column);
    }

    
/**
     * {@inheritDoc}
     *
     * @param T $value
     *
     * @return (T is null ? null : string)
     *
     * @template T
     */
    
public function convertToDatabaseValue($valueAbstractPlatform $platform)
    {
        if (
$value === null) {
            return 
null;
        }

        try {
            return 
json_encode($valueJSON_THROW_ON_ERROR JSON_PRESERVE_ZERO_FRACTION);
        } catch (
JsonException $e) {
            throw 
ConversionException::conversionFailedSerialization($value'json'$e->getMessage(), $e);
        }
    }

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

        if (
is_resource($value)) {
            
$value stream_get_contents($value);
        }

        try {
            return 
json_decode($valuetrue512JSON_THROW_ON_ERROR);
        } catch (
JsonException $e) {
            throw 
ConversionException::conversionFailed($value$this->getName(), $e);
        }
    }

    
/**
     * {@inheritDoc}
     */
    
public function getName()
    {
        return 
Types::JSON;
    }

    
/**
     * {@inheritDoc}
     *
     * @deprecated
     */
    
public function requiresSQLCommentHint(AbstractPlatform $platform)
    {
        
Deprecation::triggerIfCalledFromOutside(
            
'doctrine/dbal',
            
'https://github.com/doctrine/dbal/pull/5509',
            
'%s is deprecated.',
            
__METHOD__,
        );

        return ! 
$platform->hasNativeJsonType();
    }
}
Онлайн: 0
Реклама