As bibliotecas são arquivos PHP procedurais em gestor/bibliotecas/, e cada um agrupa funções com o mesmo prefixo (banco_*, modelo_*, interface_*…). Não há autoload nem namespace: elas entram por require_once, a partir de um registro central.
O registro: $_GESTOR['bibliotecas-dados']
Em gestor/config.php, cada nome lógico aponta para um ou mais arquivos:
$_GESTOR['bibliotecas-dados'] = Array(
'banco' => Array('banco.php'),
'gestor' => Array('gestor.php'),
'modelo' => Array('modelo.php'),
// ...
'cron' => Array('cron.php'),
);É o nome lógico, e não o arquivo, que módulos e funções usam para pedir uma biblioteca.
O que já vem carregado
config.php carrega sempre banco, gestor, modelo e hooks (lista $_GESTOR['bibliotecas']). Em qualquer ponto do Gestor, funções como banco_select(), gestor_variaveis(), modelo_var_troca() e hook_do_action() estão disponíveis.
Como um módulo pede bibliotecas
-
O JSON do módulo declara a lista em
bibliotecas:
{ "versao": "1.0.4", "bibliotecas": ["interface", "html", "html-editor"] }-
O controlador do módulo lê o JSON para
$_GESTOR['modulo#<id>']e, na função<modulo>_start(), chamagestor_incluir_bibliotecas(), que fazrequire_oncede cada arquivo registrado e marca o nome em$_GESTOR['bibliotecas-inseridas']. -
Em código avulso (widgets, controladores, rotinas), use
gestor_incluir_biblioteca('nome')ougestor_incluir_biblioteca(['a', 'b']), que pula o que já foi incluído.
As bibliotecas também podem ter rotinas AJAX próprias: interface.php repassa as requisições AJAX de interface a html_editor_ajax_interface() quando html-editor está entre as bibliotecas do Gestor ou do módulo.
cron.php é executado fora do ciclo de módulo e, por isso, inclui suas bibliotecas diretamente em vez de usar gestor_incluir_bibliotecas().
Referência por biblioteca
Cada biblioteca tem uma página com a lista de funções gerada do código (c2f docs:extract) e a explicação do comportamento real. Veja o menu "Referência → Bibliotecas".