jilo-web/doc/app-registry.md

60 lines
1.6 KiB
Markdown
Raw Normal View History

2026-04-11 16:14:26 +00:00
# App Registry Helper
The `App\App` class provides a service locator to expose core services to
plugins without relying on globals or relative `require_once` paths.
## Goals
1. Provide a stable API surface for plugins and core modules.
2. Allow gradual refactors away from `$GLOBALS`.
3. Keep legacy code working by falling back to existing globals when no service
has been registered yet.
## Usage
```php
use App\App;
// Register services during bootstrap
App::set('config', $config);
App::set('db', $dbConnection);
App::set('logger', $logger);
// Use services anywhere later
$db = App::db();
$config = App::config();
$logger = App::get('logger');
```
### Convenience Helpers
The helper exposes shortcuts for the most common services:
- `App::db()` database connection
- `App::config()` configuration array
- `App::user()` authenticated user object (if any)
All helper calls fall back to their legacy `$GLOBALS` equivalents so older code
can be migrated incrementally.
### Resetting (Tests)
Unit tests can call `App::reset()` (optionally with a service key) to clear the
registry and avoid old state bleed between test cases.
## Bootstrap Integration
`public_html/index.php` now registers runtime services as they are created:
```php
App::set('config', $config);
App::set('config_path', $configFile);
App::set('app_root', $appRoot);
App::set('db', $db);
App::set('logger', $logger);
```
Plugins should prefer `App` over accessing globals directly. This ensures future
moves (like relocating call logic into `plugins/calls/`) do not require path rewrites
or global variables.