www.hubleto.eu Reddit User Guide Stack Overflow LinkedIn Report an issue

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.