Documentação oficial

Classes nativas

Referência técnica de Classes nativas — Joss language and Joss Red ecosystem.

Classes nativas e serviços integrados

Índice · Funções globais · Catálogo completo

Uma classe nativa fornece operações implementadas em Go. Registrado ao preparar o tempo de execução; não requer importações. Uma fachada usa Clase::metodo(...); um objeto com estado use $objeto->metodo(...). O catálogo lista cada nome registrado, seu retorno publicado e o manipulador de origem. Este guia explica os contratos e o contexto; Os aliases de catálogo herdam o contrato de seu nome principal, a menos que seja indicada dívida.

Os parâmetros entre colchetes são opcionais na notação de referência. Muitas APIs retornam nulo/falso ou imprimem um erro em vez de lançar uma exceção. O fato de o analisador aceitar uma chamada nativa não demonstra aridade correta: faltando metadados de parâmetro em parte da biblioteca.

Utilitários sem serviços externos

Classe e assinatura Resultado, erros e exemplo
Math::random(min,max) inteiro inclusivo; requer dois inteiros e intervalos válidos; Faixa invertida pode causar pânico. Não criptográfico. Ex.: Matemática::aleatório(1,6).
Math::floor(n), ceil(n), abs(n) resultado flutuante para entradas numéricas conversíveis; Eles não são equivalentes em tipo aos auxiliares globais de piso/teto.
Str::length(texto) Bytes UTF-8, 0 para argumento inválido.
Str::random([longitud]) Texto alfanumérico, padrão 16, matemática/rand; não use como token secreto. O comprimento negativo falha.
Str::startsWith(texto,prefijo), contains(texto,parte) Bool; requer cordas.
Str::substring(texto,inicio,[longitud]) Pontos Unicode; o início negativo é definido como zero. O comprimento negativo pode falhar.
Str::indexOf(texto,parte) Índice em pontos Unicode ou -1.
Str::trim(texto), replace(texto,buscar,nuevo) Corda. A ordem de substituição difere de str_replace.
UUID::generate(), v4() Identificador UUID textual.
JSON::parse(texto), decode(texto) Valor decodificado ou nulo; Os números JSON são flutuantes, e não números inteiros arbitrariamente precisos.
JSON::stringify(valor), encode(valor) JSON compacto ou “” em caso de falha.
Markdown::toHtml(texto), readFile(ruta) HTML renderizado; readFile requer capacidade de sistema de arquivos. Não substitui a autorização de rota nem a higienização de conteúdo não confiável.
new Stack()push(valor), pop(), peek() Pilha: último a entrar, primeiro a sair. pop remove; vazio retorna nulo.
new Queue()enqueue(valor), dequeue(), peek() Fila: primeiro a entrar, primeiro a sair. desenfileirar remove; nulo nulo.
new Exception(mensaje,[codigo])getMessage(), getCode() Objeto de erro com campos; código padrão 0. Não gera um diagnóstico JOSS.
FileStream::open(ruta, modo) Fluxo de arquivo binário ou de texto (read, write, seek, size, close); requer capacidade de sistema de arquivos.
StreamReader::open(fuente) Leitor de streams por linhas ou completo (readLine, readToEnd, close); requer capacidade de sistema de arquivos.
StreamWriter::open(destino, append) Escritor bufferizado de streams (write, writeLine, flush, close); requer capacidade de sistema de arquivos.
Socket::tcp(host, puerto), listen(...) Sockets de rede TCP cliente/servidor (connect, listen, accept, send, receive, close); requerem capacidade de rede.
DateTime::now(), parse(texto), create(...) Datas e horas orientadas a objetos (format, timestamp, iso, add, sub, diff).
DateInterval::days(n), hours(n), … Intervalos de tempo para operações aritméticas em DateTime.
new Mutex(), new RWMutex(), new WaitGroup() Primitivas de sincronização concorrente seguras (lock, unlock, add, done, wait).
print(Str::trim(" abc "))
print(Str::indexOf("casa", "a"))
$pila = new Stack()
$pila->push("uno")
$pila->push("dos")
print($pila->pop())
print($pila->peek())

HTTP de saída

Um cliente HTTP solicita informações de outro servidor; O roteador responde às solicitações que chegam à sua aplicação. Não os confunda.

Assinatura HTTP Retorno e comportamento
get(url,[headers]), delete(url,[headers]) Corda corporal; o erro pode ser semelhante a “”. Tempo limite de 15 segundos.
post/put/patch(url,[datos,headers]) Corpo de corda. O mapa é serializado para JSON ou formulário, se Content-Type indicar.
head(url,[headers]), options(url,[headers]) Mapa dos primeiros cabeçalhos por nome; vazio diante de certos erros.
json(metodo,url,[datos,headers]) Valor JSON decodificado; erros podem ser convertidos para mapear error.message. Tempo limite de 30 segundos. Um HTTP 4xx com JSON válido ainda retorna esse JSON.
request(metodo,url,[opciones]) mapa de status, status_text, corpo, cabeçalhos, sucesso; pode incluir json ou erro. o sucesso requer 2xx.

Opções de solicitação: headers e query como mapas; órgão prioritário body, depois json, depois form; timeout em segundos (15 se <=0); follow_redirects bool, verdadeiro por padrão. A chave json é decodificada automaticamente somente quando o corpo começa com { ou [. Uma falha de rede fornece status 0 e erro, não uma resposta HTTP bem-sucedida.

Fragmento Contextual: Requer um servidor escutando nesse endereço.

$respuesta = Http::request("GET", "http://127.0.0.1:8080/saludo/Ana", {"timeout": 3})
$respuesta["success"] ? {
    print($respuesta["body"])
} : {
    print("No se pudo consultar el servicio")
}

Http::query possui código interno mas não está registrado. Usar Http::request("QUERY", url, opciones) se o servidor suportar esse método.

Servidor, solicitação e resposta

Classe Contratos
Router get/post/put/patch/delete/head/options/query(caminho,manipulador); qualquer(caminho,manipulador); match(métodos, caminho, manipulador); api(caminho,manipulador); ws(caminho, manipulador). Cadastrar rotas; não faz solicitações de saída. group(name,callback), middleware(name), RegisterMiddleware(name,callback), end() gerencia middleware. Consulte HTTP e middleware.
Request input/post(key,[default]) obtém dados combinados; all() e except(arrayClaves) retornam um mapa filtrado por uma lista específica de campos internos. Eles não são uma validação ou uma lista de campos permitidos.
Request arquivo(chave) → mapear com conteúdo ou nulo; hasFile/hasfile(chave) → bool; has(key) requer valor diferente de null e “”.
Request cookie(chave,[padrão]), cabeçalho(chave), root(), método(), isMethod/ismethod(verbo), path(), url(), ip(), userAgent/useragent(), bearerToken/bearertoken(). url atualmente prioriza _path; não promete URL absoluto. uri não está registrado. Sem contexto, vários retornam valores padrão.
Response json(dados,[status=200]), erro(mensagem,[status=400]), redirecionamento(url,[status=302]), back(), raw(corpo,[status=200,mime,cabeçalhos]), stream(retorno de chamada), download(caminho,[nome]). retornar WebResponse; download e stream são resolvidos ao despachar HTTP.
Redirect to(url,[status=302]) → WebResponse.
WebResponse com(chave,valor) adicione flash; withCookie(nome,valor), withHeader(nome,valor), status(código) sofrem mutação e retornam a mesma resposta.
Session get(chave), put(chave,valor), has(chave), esquecer(chave), todos(). Nenhuma sessão injetada retorna nulo; não faz login chamando a fachada.
View render(nome,[mapa]), existe(nome), compartilhar(chave,valor) ou compartilhar(mapa). Consulte visualizações.
Stream Objeto recebido pelo retorno de chamada SSE: send(data) ou send(type, data), close(). Sem um escritor válido não funciona.
WebSocket enviar(mensagem), onMessage(retorno de chamada), onClose(retorno de chamada), inscrever-se(canal), cancelar(canal), publicar(canal, mensagem), subscriberCount(canal), transmitir(mensagem), fechar(). Hub local para o processo; contrato completo.
Server start() solicita modo servidor do host; Não é um novo ouvinte independente em nenhum contexto. spawn(nome, comando, porta) inicia o processo auxiliar e registra o proxy de acordo com a configuração; precisa de permissão de execução.
Middleware, Migration Classes base registradas sem métodos nativos públicos; Convenções de estrutura, não tipo de interfaces de sistema.

Nos uploads use $archivo["content"]. Para binários use raw com MIME e Disposição de conteúdo adequada ou download para arquivo. O corpo HTML normal pode receber recarga a quente em desenvolvimento.

Dados, estado e armazenamento

Classe e assinaturas Retorno, contexto e erros
GranDB Operações de construtor e SQL: referência completa. Requer banco de dados configurado.
SQLite::open(ruta), query(sql,[bindings]), close() Conexão SQLite nativa; abrir/fechar bool, coleção de consultas ou impressão nula e de erros. Mantenha a conexão com a instância.
Cache::put(clave,valor,[segundos=60]) Cache global na memória do processo; verdadeiro ou nulo para argumentos inválidos. Não persistente.
Cache::get(clave,[default]), has(clave), forget(clave) get retorna valor/padrão/nulo. A entrada expirada retorna nulo mesmo que o padrão tenha sido entregue. tem bool; esqueça verdadeiro/nulo.
Redis::connect(host,[password,db]) Configurar cliente; também se conecta automaticamente com REDIS_URL ou REDIS_HOST. Requer Redis externo.
Redis::set(clave,valor,[ttl]), get(clave), has(clave) Escrita, leitura ou existência; ausência/erros podem produzir nulo/falso. Verifique a serialização antes de assumir o tipo recuperado.
Redis::del(clave), forget(clave), ttl(clave), flush() Limpo, TTL em segundos (-1 sem expiração, -2 ausente); flush libera o banco de dados Redis atual.
UserStorage::put(token,nombre,contenido) Bool; armazenamento local/OCI selecionado por ambiente; requer configuração e tabelas internas.
UserStorage::get(token,nombre), getToFile(token,nombre,destino), delete(token,nombre) String/nulo, bool e bool respectivamente. O token pode ser um usuário com user_token.
UserStorage::path([ruta]) Rota local em armazenamento; não baixa objetos OCI.
Zip::extract(archivo,destino) Bool; requer capacidade de sistema de arquivos e verifica caminhos. Pode escrever antes de um erro posterior: a extração não é atômica.

Não use um cache como única cópia de informações insubstituíveis. Um mapa salvo no Cache ainda pode compartilhar seu conteúdo: o contêiner simultâneo não torna automaticamente todos os valores armazenados seguros.

Sistema, plugins e tarefas

Assinatura Contrato
System::env(clave,[default]) Valor de r.Env ou padrão.
System::Run(comando,[arrayArgs]) Executa processo externo e retorna saída; requer ALLOW_SYSTEM_RUN=true/1. Não avalia o código Joss.
System::load_driver(ruta,[nombre]) Bool ao carregar DLL/SO/dylib ABI C v1; depende da plataforma/construção.
System::driver_call(nombre,metodo,[args]) Resultado JSON decodificado, texto ou nulo em caso de erro.
System::log(mensaje), sleep(segundos), now([dias]) Log, espera inteira e data textual com deslocamento de dias. System::now não é formatado pelo auxiliar now.
Plugin::platform(), path(nombre,ruta) plataforma os-arch e caminho de recursos; Rotas inválidas podem ser iniciadas.
Plugin::call(nombre,metodo,[args]), stream(nombre,metodo,[args,callback]) Ponte para plugin; resultados polimórficos e erro de mapa/nulo dependendo da rota. Plugins.
Cron::schedule(nombre,expresion,callback) Registrar trabalhos de casa; cron de minuto com gramática e estado local limitados.
Task::on_request(nombre,intervalo,callback) Atualmente inicia goroutine ao ligar; intervalo não é usado. Não promete execução para cada solicitação.

Para coordenação e fechamento de canais leia concurrency. Os recursos externos não são serializáveis ​​como os dados da linguagem comum.

Identidade, tradução e publicação

Auth, AuthLoginResult, MFA e TwoFactor são explicados em autenticação: precisa de contexto, tabelas e uma política autorização do pedido.

Lang::get(clave,[reemplazos]) tradução de retorno; set(locale) altera o local; locale() consulta os atuais e locales() lista os disponíveis. Os arquivos idioma são carregados pela infraestrutura i18n. A tradução não foi obtida da rede automaticamente.

SEO::title(texto), description(texto), keywords(textoOArray), canonical(url), og(propiedad,contenido) e meta(nombre,contenido) atualizar metadados; render() produz HTML. SEO::twitter não está registrado: use meta para nomes do Twitter:*.

Sitemap::add(url,[lastmod,changefreq,priority]) ou add(mapa), exclude(rutaOArray), generate(), xsl() geram XML/XSL. provider(callback) registra um provedor dinâmico de URLs. Veja SEO e sitemap.

IndexNow::key([clave]), enabled(), keyLocation([base]) e submit(urls,[clave]) permitem indexação instantânea em tempo real para Bing e Yandex. O comando joss indexnow generate configura a chave automaticamente no ambiente.

A lista fechada do catálogo permite verificar quais APIs estão disponíveis. A presença de uma função Go, um comentário ou sugestão do editor não é suficiente para torná-lo um método público.