【質問】PHPのjsスクリプトパス、画像パス、スタイルパスに問題があります!
論理的には、これらのよくある質問に対する答えを自分で見つける必要がありますが、読めば読むほど混乱してしまいます。私の理解が正しいかどうか見てみましょう。
私は自分で単項式プログラムを書きました。つまり、すべてのモジュールのアクションは root/index.php を経由します。 次に、モデル名、アクション名、メソッド名、パラメーター名を追加します。
index.php?model=user&action=Login&method=check
app:init(); // require_once: app.class.php
アプリ内のモデルとアクションを取得し、これらを動的に実行します。 次のようなアクション クラス メソッド:
UserLoginAction.class.php
public function check(){
//成功した場合は、ジャンプ
ここで問題が発生します。ここでジャンプを使用します。 require_once admin_index.php、admin_index.php で使用したい変数がいくつかあるため、リダイレクトの必要がなく、これより良い方法がありません。これは、オブジェクトを JSP に渡すことができる JAVA とは異なります。 $_SESSION['uservo'] を使用することもできますが、Session を介して何かを渡すことに慣れていないので、直接インクルードするだけです。しかし、ここで問題が発生します。
}
admin_index.php 内の画像、CSS ファイル、JS ファイルのパスをどのように扱うか?
もう選択肢はありません。絶対パスを使用してすべてを直接記述する必要があります。
admin_index.php
相対パスを使用する場合: $currentfolder = dirname(__FILE__); それは解決策ではありませんか? 考えてみてください。すべての画像ファイルの前には
が理解できます。 include メソッドは、インポートされたファイルのコードを現在のindex.php ファイルにコピーすることと同じです。 したがって、インポートされたファイル内のパスは、実際には、index.php が配置されているディレクトリになります。 すべての絶対パスが使用されるのは良くありません (これは最後の手段です)
dirname(__FILE__) メソッドには別の問題があります。これは、ファイルの物理パスを返すようです。 これは、すべてを他の人に知るべきだという意味ではないでしょうか?
最後のトリック: すべての物理パスを使用します。/ は、現在のパスがルート ディレクトリに対する相対パスであることを示します。index.php: いずれにしても、プログラムは最初から最後までファイル内で実行されるのと同等です。 すべてのパスは ./ で始まる必要があります。
////////////////////////////////////////// // ////////
これより良い方法があるのは誰でしょうか? どうもありがとう。
-----解決策---------
気にしない場合は、絶対パスを使用するよりも優れた $_SERVER['DOCUMENT_ROOT'] を使用できます。
実際には、さまざまな方法があります。もちろん、パスが混乱を引き起こす場合があるため、自分でケースを作成しないように include メソッドを変更するだけです。
------解決策------------------
自作フレームワークの場合、対処方法は 2 つあります。
1 つは、define('STYLE_PATH', 'xxxx'); などのグローバル変数または関数を設定することをお勧めします。サーバーを変更する場合はそのまま流用可能です。
2 番目は、base_url(); を使用して、ルート ディレクトリを基準としたindex.php ファイルのパスを取得します。 (これはプログラム内部に対してのみ相対的なものです。実際、すべての内部 URL はこれを構築する必要があります)
このようにして、入り口がどこにあっても、プログラムは間違っていません。