jilo-web/doc/app-registry.md

60 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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.