'%d', 'decimal' => '%f', default => '%s', }; } // ───────────────────────────────────────────────────────── // 工具方法 // ───────────────────────────────────────────────────────── private static function to_bool( $value ): bool { if ( is_bool( $value ) ) { return $value; } if ( is_numeric( $value ) ) { return (int) $value !== 0; } $str = strtolower( trim( (string) $value ) ); return in_array( $str, array( 'true', 'yes', 'y', '1', 'on' ), true ); } private static function format_date( $value, string $format ): ?string { if ( $value === '' || $value === null ) { return null; } // 接受 Unix timestamp if ( is_numeric( $value ) ) { return gmdate( $format, (int) $value ); } $ts = strtotime( (string) $value ); if ( $ts === false ) { return null; } return gmdate( $format, $ts ); } }