Documentación oficial

Funciones globales

Referencia técnica de Funciones globales — Joss language and Joss Red ecosystem.

Funciones globales

Índice · Antes: funciones · Clases nativas

Estas funciones están integradas en el runtime, sin imports ni instalación. La firma de esta página describe el uso admitido por el dispatcher; no todos los parámetros están publicados al analizador. [x] indica un argumento opcional y ... varios argumentos. No son caracteres que debas copiar.

Las familias comparten ejemplos al final. Los aliases de funciones como doubleval siguen existiendo; esto no restaura el tipo fuente eliminado double. Los retornos declarados para tooling se pueden consultar en el catálogo generado; abajo se describe el resultado runtime.

Conversión y consultas de tipo

Firma Resultado y límites Ejemplo
intval(valor) Entero; trunca float/decimal, bool pasa a 0/1; inválido o ausente da 0. intval("12") → 12
floatval(valor), doubleval(valor) Float aproximado; inválido da 0. floatval("1.5")
decimal([valor]) Decimal desde número/texto/bool; inválido o null da cero. Sufijos textuales m/M/d/D se recortan. decimal("1.25")
strval(valor) Texto por formato Go, null da texto vacío. No es JSON. strval(12)
boolval(valor) Bool según verdad runtime. Float cero y map vacío tienen diferencias respecto a otros lenguajes. boolval("") → false
is_numeric(valor) Bool: número o texto interpretable como float/decimal. No valida un dominio como “edad”. is_numeric("12")
is_int(valor), is_integer(valor) Bool; entero, sin convertir strings. is_int("12") → false
is_float(valor), is_double(valor) Bool; float, sin convertir. is_float(1.5)
is_decimal(valor) Bool; decimal concreto. is_decimal(1m)
is_string(valor) Bool; texto concreto. is_string("a")
is_array(valor) Bool; array/slice, no map. is_array([1])
is_null(valor) Bool; ausencia de valor; sin argumento también true. is_null(nil)
isset(expresiones...) Forma especial del parser: consulta existencia sin error por variable ausente. Una variable ligada a null cuenta como existente; no sirve como comprobación general de claves map. isset($nombre)
empty(expresion) Forma especial: true si no existe o si el valor es falso según las reglas runtime. empty($ausente)

Las conversiones explícitas son permisivas; no sustituyen la validación. Para condiciones exactas compara contra 0, null o "" según lo que necesites. Véase tipos y sintaxis.

Arrays y mapas

Firma Resultado, mutación y errores Ejemplo
len(valor), count(valor) Longitud array/map; bytes de string; otros valores dan 0. count([2,3]) → 2
keys(map), array_keys(map) Array de claves sin orden garantizado; inválido da []. keys({"a":1})
values(map), array_values(map) Array de valores sin orden garantizado; inválido da []. values({"a":1})
explode(separador, texto) Array de segmentos; requiere dos strings, inválido da null. explode(",", "a,b")
append(array, elemento) Retorna array ampliado; reasigna el resultado. Inválido da null. $a = append($a, 2)
merge(array1, array2) Nuevo contenedor con ambas secuencias; inválido da null. merge([1],[2])
array_merge(primero, otros...) Array concatenado o map combinado según primer argumento; últimas claves ganan. Ignora siguientes de otro tipo; inválido da []. array_merge({"a":1},{"a":2})
array_push(array, elementos...) Array ampliado; no devuelve longitud. Reasigna. Inválido da null. $a = array_push($a,2,3)
end(array), array_pop(array) Último elemento o null. No reducen el array. array_pop([1,2]) → 2
array_shift(array) Primer elemento o null. No reduce el array. array_shift([1,2]) → 1
array_slice(array,inicio,[longitud]) Vista superficial; negativos relativos al final; fuera da []. Comparte almacenamiento. array_slice([1,2,3],1)
array_unique(array) Array nuevo, igualdad por representación textual; puede fusionar valores de tipos diferentes. array_unique([1,1,2])
array_reverse(array) Array nuevo invertido; inválido da []. array_reverse([1,2])
array_column(array,clave) Valores de esa clave en elementos map; omite otros elementos/claves ausentes. array_column([{"id":1}],"id")
in_array(valor,array) Bool; en arrays Joss admite igualdad profunda o textual. in_array(1,["1"]) → true
array_key_exists(clave,map) Bool de existencia; no confundir con valor no nulo. array_key_exists("a",{"a":null})

Texto y formato

Firma Resultado y límites Ejemplo
print(valores...), echo(valores...) Imprimen cada argumento con salto de línea; retorno null. print("Hola")
printf(formato,valores...) Formato Go, sin salto implícito; retorno null. printf("%s: %d\\n","Edad",20)
strlen(texto) Cantidad de puntos Unicode; null da 0. strlen("é") → 1
str_contains(texto,parte), contains(texto,parte) Bool; argumentos se convierten a texto. contains("casa","as")
str_starts_with(texto,prefijo), starts_with(...) Bool de prefijo. starts_with("abc","a")
str_ends_with(texto,sufijo), ends_with(...) Bool de sufijo. ends_with("abc","c")
str_replace(buscar,reemplazo,texto) Sustituye todas las coincidencias. El orden difiere de Str::replace. str_replace("a","o","casa")
strtolower(texto), to_lower(texto) Minúsculas Unicode. to_lower("HOLA")
strtoupper(texto), to_upper(texto) Mayúsculas Unicode. to_upper("hola")
ucfirst(texto), lcfirst(texto) Cambian primer punto Unicode a mayúscula/minúscula. ucfirst("hola")
ucwords(texto) Capitalización según strings.Title de Go; no análisis lingüístico. ucwords("hola mundo")
trim(texto,[conjunto]) Quita espacios Unicode o caracteres del conjunto en extremos. trim(" hola ")
ltrim(texto,[conjunto]), rtrim(texto,[conjunto]) Recorte por un extremo; predeterminado espacios ASCII. ltrim(" hola")
substr(texto,inicio,[longitud]) Puntos Unicode; negativos relativos al final; fuera da “”. substr("abc",-2) → bc
strpos(texto,parte) Posición en puntos Unicode o false si falta. Cero es una coincidencia válida. strpos("abc","a") → 0
implode(separador,array), join(separador,array) Convierte elementos a texto y une; inválido da “”. join("-",[1,2])
str_pad(texto,longitud,[relleno]) Añade relleno a la derecha por bytes, por defecto espacio. Relleno vacío puede provocar panic; no usar. str_pad("7",3,"0") → 700
str_repeat(texto,cantidad) Texto repetido; negativo equivale a cero. str_repeat("a",3)
html_escape(valor) Escapa &, <, > y comillas para HTML; null da “”. html_escape("<b>")
md5(texto), sha1(texto), sha256(texto) Digest hexadecimal de bytes; no cifrado ni hash de contraseña. sha256("dato")
base64_encode(texto) Texto Base64, sin secreto criptográfico. base64_encode("a") → YQ==
base64_decode(texto) String de bytes o false si inválido. base64_decode("YQ==")

Para contraseñas utiliza el contrato de Auth. Para caracteres percibidos como emojis compuestos, consulta unidades de texto.

Números y tiempo

Firma Resultado y límites Ejemplo
round(numero,[precision]) Float redondeado; precision predeterminada 0. No procesa decimal.Decimal. round(1.25,1)
floor(numero), ceil(numero) Entero hacia abajo/arriba; aceptan float/int, no decimal. floor(1.9) → 1
abs(numero) Magnitud int/float. El mínimo int64 puede desbordar sin diagnóstico aquí. abs(-2)
min(valores...), max(valores...) También aceptan un array no vacío; sin argumentos null. Un único array vacío se devuelve como tal. max([1,3,2])
rand([min,max]) Entero inclusivo; sin dos límites usa 0..MaxInt32. max<=min devuelve min. No criptográfico. rand(1,6)
time() Segundos Unix como entero. time()
microtime([comoFloat]) Con true, float en segundos; por defecto texto “fraccion segundos”. microtime(true)
date([formato,timestamp]) Texto; por defecto Y-m-d H:i:s y hora actual. Timestamp admite número, texto o valor time.Time del host. date("Y-m-d",0)
now([formato]) Texto de fecha actual; mismo formato predeterminado. now("H:i:s")
strtotime(texto,[base]) Entero Unix o null si no reconoce el texto. Parser limitado de fechas y desplazamientos. strtotime("+1 day",0)
sleep(segundos), usleep(microsegundos) Bloquean la tarea actual; retorno null. sleep admite fracciones float. sleep(0.01)

Los tokens de fecha y expresiones relativas admitidos están implementados en date_utils.go. No se incorpora toda la gramática de fechas de PHP. La zona horaria depende del proceso; evita salidas de fecha local en pruebas que deban ser idénticas en cualquier máquina.

Archivos, serialización y procesos

Firma Resultado y errores Ejemplo
file_exists(ruta) Bool; incluye directorios; false ante error de stat. file_exists("datos.json")
is_dir(ruta), is_file(ruta) Bool; is_file significa existente y no directorio. is_dir("storage")
file_get_contents(ruta) String de bytes o null al fallar. Sólo archivos locales. file_get_contents("datos.json")
file_put_contents(ruta,texto) Sobrescribe/crea archivo; true o false. No crea padres. file_put_contents("nota.txt","Hola")
unlink(ruta), file_delete(ruta) Elimina archivo o directorio vacío; bool de éxito. unlink("nota.txt")
mkdir(ruta) Crea directorios incluidos padres; bool. mkdir("storage/informes")
json_encode(valor) JSON con indentación según JsonEncode; “” ante error. json_encode({"ok":true})
json_decode(texto) Valor nativo o null por error (también JSON null). Números se decodifican a float. json_decode("[1,2]")
json_verify(texto) Bool de sintaxis JSON, no de estructura del negocio. json_verify("{}")
toon_encode(valor) Formato textual simplificado de registros; no binario ni escape completo. toon_encode([{"a":"b"}])
toon_decode(texto) Array de registros del subconjunto o null. Valores textuales. Usar salida compatible del encoder.
toon_verify(texto) Comprobación limitada de cabecera/estructura; no integridad criptográfica. No usar para validar datos hostiles.
hive_read_box(ruta) Array de entradas o null; imprime error. Lector parcial de formato Hive. Requiere archivo Hive compatible.
run(ruta,args...) Ejecuta .py con python o .php con php; salida combinada. Requiere ALLOW_SYSTEM_RUN=true y ejecutable instalado. Fallo imprime y retorna salida/“”; no lanza siempre. run("script.py","dato")

Las rutas son relativas al directorio de trabajo. Las operaciones no tienen sandbox de archivos. El ejemplo completo está en informe de compras.

Contexto web y concurrencia

Firma Contrato y disponibilidad
env(clave,[default]), config(clave,[default]) Consulta r.Env; devuelve string o default arbitrario si ausente/vacío. No vuelve a leer .env.
view(nombre,[datos]) Delega View::render; contexto de plantillas del proyecto.
json(datos,[status]) Delega Response::json y devuelve WebResponse; no es serialización a string.
response(cuerpo,[status,mime,headers]) Delega Response::raw.
redirect(url,[status]), back() WebResponse de redirección; back usa contexto de petición.
request([clave,default]) Sin clave obtiene Request::all; con clave Request::input.
session([clave]) Sin clave objeto de sesión o null; con clave Session::get. No incorpora una sesión en consola.
__(clave) Traducción usando locale actual y gestor i18n.
csrf_field() HTML del campo _token usando sesión; sin ella token vacío.
async { instrucciones } Sintaxis que crea Future y ejecuta una closure en fork/goroutine.
await(future) Espera y devuelve resultado; propaga fallo.
make_chan([capacidad]) Channel; capacidad 0 sincroniza emisor y receptor.
send(channel,valor) Envía; puede bloquear, canal cerrado provoca fallo. También channel << valor.
recv(channel) Recibe; bloquea hasta dato/cierre; cierre agotado produce null.
close(channel) Cierra; cerrar dos veces o enviar después produce fallo.

Consulta HTTP y clases nativas, vistas y concurrencia para ejemplos con el contexto necesario.

Ejemplo ejecutable de utilidades

print(ucfirst(trim(" ana ")))
print(strlen("sol"))
print(join("-", ["a", "b"]))
print(array_key_exists("id", {"id": null}))
print(base64_decode(base64_encode("Hola")))
print(floor(2.8))

Diferencias entre metadata e implementación

Se han observado retornos publicados incompletos: boolval anuncia int pero devuelve bool; json anuncia string pero devuelve WebResponse; microtime anuncia float aunque sin true devuelve string; strpos y base64_decode pueden devolver false; array_merge también devuelve map. No atribuyas esos errores al usuario ni fuerces anotaciones incompatibles para satisfacer el catálogo. El informe de auditoría registra esta deuda.

Fuentes: catálogo, arrays y conversiones, textos, I/O, tiempo, async.