カスタム クラス/オブジェクト モデルを使用するモジュールを作成する場合は、名前空間を作成する必要があります。PrestaShop では、PHP の名前空間機能を使用できません(PrestaShop コアが PHP の名前空間機能に対応していないため)。例えば:
// Your module:
class MyModule extends Module
// Your custom ObjectModel:
class Message extends ObjectModel
クラス名Message
は非常に一般的であり、ほとんどの場合、そのクラスの名前を適切に選択していない他のモジュールと競合するようになります。
これを防ぐには、クラス名にプレフィックスを付ける必要があります。
class MM_Message extends ObjectModel
この場合MM_
は の略ですMyModule
。これにより、他のモジュールやクラスと競合する可能性がはるかに低くなります。イベントより良い方法は、モジュール名全体にプレフィックスを付けることです。
class MyModule_Message extends ObjectModule
また、次のようにデータベース テーブルに名前を付けますps_my_module_message
。これにより、データベース テーブルのナビゲートも容易になります。クラス名にプレフィックスを付けるのは非常に良い習慣です。実際、私はいつもそうしています。欠点は、クラス名が長くなる可能性があります。
PS競合しているモジュールをアンインストールする場合は、それらのモジュールを一時的に無効にする必要があります。モジュール フォルダーの名前を一時的に別のもの (残したいモジュールのフォルダー) に変更してから、他のモジュールをアンインストールすることをお勧めします。その後、元のフォルダ名に戻してください。モジュール フォルダーの名前を変更すると、モジュールが読み込まれなくなります。技術的には、BO にロードされていない場合は、バックオフィスで無効にすることができます