WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
функция не описана

Yoast\WP\Lib\Migrations

Adapter::type_to_sql() public Yoast 1.0

Converts a type to sql. Default options: $limit = null, $precision = null, $scale = null

Это метод класса: Adapter{}

Хуков нет.

Возвращает

Строку. The SQL type.

Использование

$Adapter = new Adapter();
$Adapter->type_to_sql( $type, $options );
$type(строка) (обязательный)
The native type.
$options(массив)
The options.
По умолчанию: []

Код Adapter::type_to_sql() Yoast 15.1.1

<?php
public function type_to_sql( $type, $options = [] ) {
	$natives = $this->native_database_types();
	if ( ! \array_key_exists( $type, $natives ) ) {
		$error  = \sprintf( "Error:I dont know what column type of '%s' maps to for MySQL.", $type );
		$error .= "\nYou provided: {$type}\n";
		$error .= "Valid types are: \n";
		$types  = \array_keys( $natives );
		foreach ( $types as $t ) {
			if ( $t === 'primary_key' ) {
				continue;
			}
			$error .= "\t{$t}\n";
		}
		throw new Exception( $error );
	}
	$scale     = null;
	$precision = null;
	$limit     = null;
	if ( isset( $options['precision'] ) ) {
		$precision = $options['precision'];
	}
	if ( isset( $options['scale'] ) ) {
		$scale = $options['scale'];
	}
	if ( isset( $options['limit'] ) ) {
		$limit = $options['limit'];
	}
	if ( isset( $options['values'] ) ) {
		$values = $options['values'];
	}
	$native_type = $natives[ $type ];
	if ( \is_array( $native_type ) && \array_key_exists( 'name', $native_type ) ) {
		$column_type_sql = $native_type['name'];
	}
	else {
		return $native_type;
	}
	if ( $type === 'decimal' || $type === 'float' ) {
		// Ignore limit, use precison and scale.
		if ( $precision === null && \array_key_exists( 'precision', $native_type ) ) {
			$precision = $native_type['precision'];
		}
		if ( $scale === null && \array_key_exists( 'scale', $native_type ) ) {
			$scale = $native_type['scale'];
		}
		if ( $precision !== null ) {
			if ( \is_int( $scale ) ) {
				$column_type_sql .= \sprintf( '(%d, %d)', $precision, $scale );
			}
			else {
				$column_type_sql .= \sprintf( '(%d)', $precision );
			}
		}
		else {
			if ( $scale ) {
				throw new Exception( "Error adding $type column: precision cannot be empty if scale is specified" );
			}
		}
	}
	elseif ( $type === 'enum' ) {
		if ( empty( $values ) ) {
			throw new Exception( 'Error adding enum column: there must be at least one value defined' );
		}
		else {
			$column_type_sql .= \sprintf(
				"('%s')",
				\implode( "','", \array_map( [ $this, 'quote_string' ], $values ) )
			);
		}
	}
	// Not a decimal column.
	if ( $limit === null && \array_key_exists( 'limit', $native_type ) ) {
		$limit = $native_type['limit'];
	}
	if ( $limit ) {
		$column_type_sql .= \sprintf( '(%d)', $limit );
	}

	return $column_type_sql;
}