Creare un Override del Modulo
Per estendere e ottimizzare le parti critiche dei moduli di terze parti, dobbiamo creare degli override delle classi e dei metodi che ci interessano.
Ector offre un sistema di override e versionamento integrato, facilitando la creazione di questi override.
Creazione dell'Override
Tramite un comando di Ector CLI possiamo fare lo scaffold di un override tipo e utilizzarlo come base per sovrascrivere il comportamento del modulo che intendiamo ottimizzare.
Passaggi per Creare un Override
Identifica il Modulo e il Metodo:
- Individua il modulo e il metodo che desideri sovrascrivere.
Usa Ector CLI:
- Recati nella cartella
modules/ector_cli
e lancia il comando:
php bin/ector_cli override:create
- Il comando chiederà il nome del modulo, il nome della classe e il nome del metodo da sovrascrivere, creando per te il file di override pronto per essere modificato.
- Recati nella cartella
Trova gli Override:
- Gli override si trovano dentro
modules/ector_core/override/modules
, dove troverai una cartella con il nome del modulo sovrascritto e il file di override.
- Gli override si trovano dentro
Esempio di Override
Ecco un esempio di override per il modulo blockreassurance
:
<?php
require_once _PS_MODULE_DIR_ . 'ector_core/vendor/autoload.php';
class blockreassuranceOverride extends blockreassurance
{
use Ector\Core\EctorOverride;
#[Ector\Core\EctorOverrideAlias([
'5.1.4' => ['5.1.4']
])]
public function hookActionFrontControllerSetMedia()
{
return $this->ectorOverrideMethod(__FUNCTION__, $this->version);
}
public function hookActionFrontControllerSetMedia_5_1_4()
{
Media::addJsDef([
'psr_icon_color' => Configuration::get('PSR_ICON_COLOR'),
]);
}
}
In questo caso, abbiamo sovrascritto il metodo hookActionFrontControllerSetMedia
del modulo blockreassurance
e aggiunto un metodo specifico per la versione 5.1.4
che aggiunge una variabile JS.
Dettagli dell'Override
Alias
Gli alias sono annotazioni che permettono di creare un alias per un metodo, rendendolo chiamabile anche su più versioni del modulo.
#[Ector\Core\EctorOverrideAlias([
'5.1.4' => ['5.1.4']
])]
Se l'override scritto per la versione 5.1.4 è compatibile anche con la versione 5.1.5, possiamo aggiungere un alias:
#[Ector\Core\EctorOverrideAlias([
'5.1.4' => ['5.1.4', '5.1.5']
])]
EctorOverrideMethod
Il metodo ectorOverrideMethod
consente di chiamare il metodo sovrascritto senza dover riscrivere tutto il codice del metodo originale. Questo metodo cerca automaticamente di richiamare il metodo corrispondente alla versione registrata dall'alias.
public function hookActionFrontControllerSetMedia()
{
return $this->ectorOverrideMethod(__FUNCTION__, $this->version);
}
Se è specificato un override per la versione 5.1.4, ectorOverrideMethod
cercherà di chiamare il metodo hookActionFrontControllerSetMedia_5_1_4
se presente, altrimenti farà fallback al metodo originale.
Conclusione
Creare override per i moduli di terze parti con Ector è un processo semplice e strutturato, grazie al sistema di override e versionamento integrato. Utilizzando Ector CLI, possiamo rapidamente creare gli override necessari per ottimizzare le prestazioni e personalizzare il comportamento dei moduli in modo sicuro ed efficiente.