*/ public static function to_string( array $context ): string { $context = array_merge( static::get_default(), $context ); $context = wp_json_encode( $context ); return false === $context ? '' : $context; } /** * Returns array of data from a `Translation_entry` context. * * @since 3.6 * * @param string $context Raw context from a `Translation_Entry`. * @return array Extracted array of data. * * @phpstan-return array<'encoding'|'field'|'id', string> */ public static function to_array( string $context ): array { $context = json_decode( $context, true ); $context = is_array( $context ) ? $context : array(); $context = array_filter( $context, 'is_string' ); $default = static::get_default(); return array_merge( $default, array_intersect_key( $context, $default ) ); } /** * Returns allowed context keys with empty values. * * @since 3.6 * * @return array Context array keys with empty values. * * @phpstan-return array<'encoding'|'field'|'id', string> */ public static function get_default(): array { return array( self::FIELD => '', self::ID => '', self::ENCODING => '', ); } /** * Returns field context. * * @since 3.6 * * @param Translation_Entry $entry Entry to get field from. * @return string */ public static function get_field( Translation_Entry $entry ): string { $context = self::to_array( $entry->context ); return $context[ static::FIELD ]; } /** * Returns id context. * * @since 3.6 * * @param Translation_Entry $entry Entry to get id from. * @return string */ public static function get_id( Translation_Entry $entry ): string { $context = self::to_array( $entry->context ); return $context[ static::ID ]; } /** * Returns encoding context. * * @since 3.6 * * @param Translation_Entry $entry Entry to get encoding from. * @return string */ public static function get_encoding( Translation_Entry $entry ): string { $context = self::to_array( $entry->context ); return $context[ static::ENCODING ]; } }