La classe Module normalmente non è definita, ma grazie al sistema di override di Prestashop è possibile usare al suo posto la classe ModuleCore.
La stessa cosa avviene per tutte le classi di base: Product, Category etc, non sono definite, anche se da loro ereditano varie classi interne a Prestashop. Se una classe il cui nome non finisce con “Core” non è definita, viene presa al suo posto la definizione della classe con “Core” aggiunto in fondo.
Questo comportamento è definito nel file classes/Autoload.php.
Per Module, ad esempio, nel file /classes/Module.php esiste la classe ModuleCore, ma non esiste la definizione della classe Module. Se vogliamo modificare in qualche modo il comportamento di ModuleCore, possiamo effettuare un override, definendo in /override/classes/Product.php una classe Module che estende ModuleCore. In questo modo le classi che ereditano da Module erediteranno dal “nostro” Module, che a sua volta erediterà da ModuleCore.