モジュール構造を利用したPHPアプリケーションを書いています。モジュールには基本的にフォルダ名があり、それらのフォルダにはPHPファイルが含まれています。
これは次のようになります。
/modules
/module1
/module2
/module3
私のPHPアプリケーションはフォルダーの内容を読み取り、modules
フォルダー名をデータベースのテーブルに保存します。私modules
のテーブルは次のようになります。
id | module | active | order
1 | module1 | 1 | 2
2 | module2 | 0 | 1
3 | module3 | 1 | 3
フォルダが読み取られ、フォルダ名がデータベースに保存された後modules
、テーブルから行を再度フェッチします。そうすれば、どのモジュールがアクティブで、どの順序でそれらを表示する必要があるかを簡単に確認できます。
この方法の問題は、ページにアクセスするたびに上記のすべてを実行する必要があることです。システムは、フォルダがいつmodule
追加または削除されたかを認識しないためです。module
したがって、「フォルダを読み取る/ DBに保存する/そしてDBを再度読み取る」ことで、最新バージョンが得られるようです。しかし、私はこの方法が非効率的であると想像することができます。これはもっとうまくできると思います。
私が思いついた解決策が1つあります。しかし、私はまだこれが最善の解決策だとは思いません。
解決策1
ユーザーがサイトにアクセスしたら、上記のすべてを実行します。フォルダを読み取り、modules
フォルダ名をテーブルに保存してから(最初にテーブルをクリアした後)、テーブルから行を取得して、に保存しますsession
。ユーザーがサイト内を移動するとき、私は単純にを繰り返すことができますsession
。
短所:削除/追加されたモジュールは、ブラウザを閉じて再度開いたときにのみ表示されます。
改善?
これを行うには、もっとエレガントな方法があると確信しています。誰かアイデアはありますか?