3

モデル ライブラリやコントローラーなど、まったく同じファイルを共有する CodeIgniter フレームワークを使用する 3 つの PHP プロジェクトがあります。同期を維持して同じファイルを更新することなく、これらのファイルを共有できる最善の方法は何ですか?

  • Linux では、動的リンクを使用してこれらのファイルを中央の場所に抽出することを考えましたが、そのようなものはバージョン管理を壊し、移植性の問題を引き起こします。
  • おそらくプロジェクト間でこれらのファイルに unison を使用する別の方法

それは一般的な問題だと思いますが、一般的なアプローチは何ですか?

4

4 に答える 4

3

それらをモジュールに分けて、composerのようなものを使用してください。

http://getcomposer.org/

または、それらを別のSCMに配置するだけです。

于 2012-10-26T00:29:53.860 に答える
3

あなたができることの1つは:

すべての共有コードをライブラリ、ヘルパー、およびモデルに配置し、これを別のフォルダーに配置します。次に使用します。

$this->load->add_package_path('shared location');

http://codeigniter.com/user_guide/libraries/loader.htmlのアプリケーション パッケージもご覧ください。

これは、コントローラーを除くほとんどのもので機能します。

于 2012-10-26T06:56:50.127 に答える
2

バージョン管理を使用してください!svnではexternalsを使用でき、gitにはサブモジュールまたはサブツリーがあります。

ハードリンクを使用したくない場合は、あるプロジェクトを更新すると別のプロジェクトに影響を与えるなどの奇妙な問題が発生します(「数週間触れていません」)。

コードは2つの物理的な場所に配置できますが、バージョン管理下で共有されます。信頼できるコピーは常に1つだけ、つまりバージョンシステムに1つだけ存在します。すべての物理的なコピーは派生物です。特定のプロジェクトのコードをいつ更新するかを自分で管理できることを確認することが重要です。そのため、ある時点で変更しても、間違えた場合に別のプロジェクトがすぐに壊れることはありません。この種のエラーをキャッチしたい場合は、適切な回帰テスト環境をセットアップしてください。

開発環境を別の開発者と共有することも大したことではありません。同僚がプログラム全体を壊す解析エラーを修正するまで待つ必要はありません。各開発者はプロジェクトの独自のコピー(チェックアウト!)を持っている必要があり、同様に各プロジェクトは共有コードの独自のコピー(外部)を持っている必要があります。

于 2012-10-26T00:31:49.040 に答える
0

それらをプロジェクト外のフォルダーに分けてから、構成するか、プロジェクトに含めます。

通常、プロジェクトの「オートローダー」メソッドを書き直して、新しいフォルダー内のファイルを検索します。

于 2012-10-26T00:34:38.373 に答える