3

これを使用することの長所と短所は何ですか:

$globals['server_url'] = dirname(__FILE__);
$globals['mainfiles'] = dirname(__FILE__).'/main';

そしてこれを使用することの賛否両論:

$globals['server_url'] = '/srv/www/htdocs/somwhere/';
$globals['mainfiles'] = '/srv/www/htdocs/somwhere/main';

そして、あなたは何を提案しますか。

ちなみに、これらは他のファイルからも呼び出されるconfig.phpファイルに設定されており、次のように使用するファイルを含めるときにディレクトリの競合を防ぐことができます。

require_once($globals['server_url'].'/test.php');
4

3 に答える 3

9

dirname(__FILE__)または__DIR__'/srv/www/htdocs/somwhere/'、フォルダを移動または名前変更したり、別のサーバーや別のOSに移行したりする日も機能し続けるため、 より優れています。
ここでは、移植性と柔軟性が主な言葉です。

そして、グローバルは悪いです。

于 2012-06-09T22:34:30.350 に答える
0

この__FILE__方法は正常に機能しますが、ファイルがどこにあるかを知っておく必要があります。ファイルを別のディレクトリに移動すると、値が変更され、それに依存するものがすべて破損する可能性があります。

一方、パスのハードコーディングも正常に機能しますが、ファイルを別のディレクトリに移動する場合は、パスが有効であることを確認する必要があります。

正しい解決策は個人的な好みです。私はおそらく__FILE__この方法を使用します(特にこれが他のサーバー/ユーザーに配布するコードである場合)。

于 2012-06-09T22:34:58.727 に答える
0

通常、特に$_SERVERスーパーグローバルが必要になります$_SERVER['DOCUMENT_ROOT']ここのドキュメント。

ただし、の個別のサブツリーに完全に存在するアプリケーションがある場合は、たとえば次のようにDOCUMENT_ROOT変更できますinclude_path(ただし、の親ディレクトリまたはサブディレクトリを使用することもできます__DIR__)。

ini_set('include_path', __DIR__);

include_pathデフォルトも維持したい場合は、次のようになります。

ini_set('include_path', ini_get('include_path').';'.__DIR__);

を設定するinclude_pathと、例は単純になります

require_once('test.php');

そしてもちろん、アプリケーションで絶対パスをハードコーディングすると、同じサーバーまたは別のサーバーに完全にまたは部分的に移動するのが難しくなり、エラーが発生しやすくなります。

于 2012-06-09T23:04:22.707 に答える