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

namespace DoctrineDBALTypes;

use 
DoctrineDBALPlatformsAbstractPlatform;

use function 
is_resource;
use function 
json_decode;
use function 
json_encode;
use function 
json_last_error;
use function 
json_last_error_msg;
use function 
stream_get_contents;

use const 
JSON_ERROR_NONE;

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

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

        
$encoded json_encode($value);

        if (
json_last_error() !== JSON_ERROR_NONE) {
            throw 
ConversionException::conversionFailedSerialization($value'json'json_last_error_msg());
        }

        return 
$encoded;
    }

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

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

        
$val json_decode($valuetrue);

        if (
json_last_error() !== JSON_ERROR_NONE) {
            throw 
ConversionException::conversionFailed($value$this->getName());
        }

        return 
$val;
    }

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

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