2011-08-02 23 views
1

を含んで、私はこのように、このような構造に下位レベルを追加PHPは私の問題である。ここチェーン

私の必要性については
root_dir 
    |-->module1 
    |-->module2 
    |-->module3 

このようないくつかのモジュールが含まれている古いウェブサイトを、持ってきまし

root_dir 
    |-->module1 
    |-->module2 
     |-->submodule2.1 
    |-->module3 

私の問題は、各モジュールには "include.php"ファイルが含まれているので、include.phpの最初のパスを../include.phpに修正すると2番目のインクルードファイルがクラッシュすることです。 ..

Isすべてのファイルを複製してインクルードのパスを修正するだけでなく、ここでは良い回避策がありますか?

include_once('../include.php'); 

それとも一度共通の祖先ファイル内のコードを含む:

Thxを

+1

ちょうど質問を得るために:module2はinclude.phpを含んでいます。これはsubmodule2.1を含んでいます。これはsubmodule2.1のフォルダの中にincludes.phpを含んでいます。それがチェーンの終わりであれば、そこには何を入れたいのですか?他のものはすべて以前に含まれていますか? – feeela

+0

実際にはsubmodule2.1とmodule2はまったくリンクされていませんが、スタンドアロンでも同じinclude.php(サイトのコンフィグレーション環境を読み込みます)を含んでいます。モジュール2では、このようなものがありますか?<?php include( "../ include/include.php"); ?>サブモジュール2.1では、これにパスを適合させる必要があります。<?php include( "../../ include/include.php"); ?>しかし、include.phpにインクルードされているインクルードファイルでエラーが発生しました。(説明が難しい、私には分かりません) – krifur

答えて

2

はあなたの共通include.phpファイルのinclude_onceを使用しようとしています。

また、私は単純化していますか?これらのオプションはあなたですか?

+0

私はそれがすべてのモジュールがスタンドアロンであるため動作しないと思います。 (古いウェブサイト)基本的に私は含まれているチェーンの開始を含めるが、別のフォルダ階層から、最初の1つ私はパスを変更するが、それはエラーを作成するために働く... dirname_FILE_とprobalby何かが、私は何かが恋しい... – krifur

+0

@krifur: 'dirname(__ FILE __);'を使用すると、コード全体(またはより最近のバージョンでは '__DIR__')が正しく表示されます。決して作業ディレクトリを想定しないでください。もちろん、あなたは 'chdir'を自分で呼び出すことができます。 – Wrikken

0

「が両方のスタンドアロンのが、彼らは同じinclude.php(サイトの設定environnmentをロードする)などが」

あなたがより良い設定がすでにロードされているか、いくつかの方法で動作するはずです(コンフィギュレーションを取得するための工場を(モジュールの観点から)実際のファイル構造について何も知らなくても、設定をロードすることができます。モジュール内で使用しているすべてのもの(データベースオブジェクトなど)についても同様です。

関連する問題