カスタムクラス/オブジェクトモデルを使用するモジュールを作成する場合は、名前空間が必要です。 PrestaShopでは、PHPのnamespace機能を使用することはできません(PrestaShopコアはこれに対応していないため)、クラス名の前にプレースホルダを付けるとできます。たとえば:
// Your module:
class MyModule extends Module
// Your custom ObjectModel:
class Message extends ObjectModel
クラス名Message
は、一般的な非常にで、ほとんどが悪い、それはクラス名に選ばれたいくつかの他のモジュールとの競合に来て好きになるでしょう。これを防止するために
、あなたのクラス名の前に付ける必要があります。この場合MM_
で
class MM_Message extends ObjectModel
はMyModule
の略です。これは、他のモジュールやクラスと競合する可能性が非常に低くなります。また、
class MyModule_Message extends ObjectModule
応じて、データベースのテーブル名:イベントは、より良い方法は、モジュール全体の名前の前に付けることであろうps_my_module_message
を。これにより、データベーステーブルを簡単にナビゲートすることもできます。プレフィックスクラス名は非常に良い練習です、実際には、私はいつもそれを行います。欠点は、より長いクラス名かもしれません。
P.S競合するモジュールをアンインストールする場合は、一時的にオンにする必要があります。モジュールフォルダを一時的に別のもの(残したいモジュールのフォルダ)に名前を変更し、他のモジュールをアンインストールすることをお勧めします。その後、元のフォルダ名を復元します。モジュールフォルダの名前を変更すると、ロードできなくなります。 技術的には、BOにロードされていない場合、バックオフィスで無効にしようとする可能性があります
1つのクラスの名前を変更するか、1つのモジュールをアンインストールします。 PHPには "NameSpace"という概念がないため、名前の重複を避ける他の方法はありません。 – KarmaEDV
@KarmaEDV名前空間の概念はありませんか?あなたは過去7年間あなたの洞窟から出ましたか?名前空間は2009年にPHP 5.3で導入されました。 –
@FlorianLemaitre実際、phpが関連しなくなった時代でした(とにかく)。冷たい、感謝はそれを知らなかったし、残念です。あなたが気にしないならば、PHPを無視することに戻ります:-) – KarmaEDV