Core classes
Every part of an app extends a class of the ERP core. These classes give you the shortcuts (getService(), getModel(), translate(), config(), ...) and implement the behavior that is the same for all apps.
| You write… | You extend… | Page |
|---|---|---|
Loader.php of an app |
Hubleto\Erp\App |
Loader |
| A model | Hubleto\Erp\Model |
Model |
| A record manager | Hubleto\Erp\RecordManager |
Record manager (Eloquent) |
| A controller | Hubleto\Erp\Controller |
Controller |
| An API controller | Hubleto\Erp\Controllers\ApiController |
Controller |
| A cron | Hubleto\Erp\Cron |
Scheduled jobs |
| A service | Hubleto\Erp\Core |
Services |
| An event listener | Hubleto\Framework\EventListener |
Events and listeners |
| An extendible | Hubleto\Framework\Extendible |
Extendibles |
| A migration | Hubleto\Framework\Migration |
Models |
| A calendar of an app | Hubleto\Erp\Calendar |
Calendar |
| An MCP tool | Hubleto\Erp\McpTool |
AI assistant |
Base classes.
All of them eventually extend Hubleto\Framework\Core, which provides:
$this->getService(Counter::class); // singleton service
$this->getModel(Deal::class); // model (also a singleton)
$this->getController(Deals::class); // controller
$this->translate('Text', ['var' => 1]);
$this->config(); $this->env(); $this->router(); $this->db();
$this->authProvider(); $this->permissionsManager(); $this->eventManager();
Always extend the ERP class, not the framework class. For example Hubleto\Erp\Model, not Hubleto\Framework\Model.
