3

メイン スクリプトには、機能を追加する「モジュール」が含まれています。各モジュールは次のように設定されます。

<?php
//data collection stuff
//(...) approx 80 lines of code
//end data collection
$var1 = 'some data';
$var2 = 'more data';
$var3 = 'other data';
?>

各モジュールにはまったく同じ変数があり、データ コレクションが異なるだけです。

モジュールデータを次のようにMySQLに保存するのが合理的な考えかどうか疑問に思っていました:

[database]
|_modules
  |_name
  |_function (the raw PHP data from above)
  |_description
  |_author
  |_update-url
  |_version
  |_enabled

...そして、データベースから PHP データを含めて実行しますか? 各モジュール名のページ上部にあるタブ ナビゲーション システムのようなもので、これらの各タブ内で、functionセクションからモジュールのデータベースに格納されたコードを解析することによってページ コンテンツが機能します。

enabled目的は、コード スペースを節約し (行数を減らし)、簡単に更新できるようにし、オプションに基づいてモジュールを含めたり除外したりすることです。これは、他の多くの Web アプリが機能する方法であり、私自身のものもいくつかあります。しかし、これほど深く考えたことはありませんでした。これには欠点やセキュリティ上のリスクはありますか?

4

3 に答える 3

2

私はそれに対してお勧めします。欠点の 1 つは、APC などのオペコード キャッシュによってコードをキャッシュできないことです。さらに、バージョン管理システムでコードを管理するのはそれほど簡単ではありません。そして、後で単体テストや継続的インテグレーション テストなどを行いたい場合は、さらに面倒になります。

于 2012-07-10T10:46:47.667 に答える
1

たとえば、MODxはこのアプローチを使用します。PHP の「スニペット」とモジュールは、データベースに保存されます。これらの PHP スニペットのほとんどは、いくつかの構成値を設定するだけで、その後サーバー上のファイルからメイン モジュール コードをインクルードします。

主な利点は、すべてのモジュールを CMS のバックエンドで編集できるため、モジュール構成を柔軟に編集できることです。一方、Wordpressでは、バックエンド内からプラグイン PHP コードを編集することもできますが、PHP をデータベースに保存することなく、すべてをファイルとしてサーバーに保存します。

まあ、答えにはなりませんが、好みの問題だと思います。

于 2012-07-10T08:23:41.743 に答える
1

これについては、厳密で迅速な答えはないと思います。あなたが説明する方法は、特定のアプリケーション、通常はブログ サイトなどの小さな Web サイトに役立ちます。

サーバー上のファイルとしてすべてを保持する従来の方法は、データベースからファイルを取得するのではなく、サーバー上のファイルを読み取るのに時間がかかるため、大規模なアプリケーションに役立ちます。

したがって、実際に何を達成しようとしているかによって異なります。

于 2012-07-10T09:41:41.903 に答える