1

次のようなファイル構造があります。

Class (folder):
 - User.php
 - Rule.php
Scripts (folder):
 - user.php (in lowercase)
 - otherscript.php

index.php

ルールクラス (Class/Rule.php):

namespace My\Namespace;
require_once 'Gender.php';
require_once 'User.php';

class Rule
{
...

ユーザークラス (Class/User.php):

namespace My\Namespace;
require_once 'Gender.php';
class User {
...

Rule クラスでは、User クラス (require_once 'User.php') を含む 'require_once' を使用します。問題は、'otherscript.php' にルール クラスを含めると、両方の (script/user.php)およびクラス/User.php)。どうすればこれを回避できますか?

4

2 に答える 2

3

require_once現在の作業ディレクトリが何であれ、それ自体に相対的な要素を使用できます。

   require_once __DIR__.'/Gender.php';
   require_once __DIR__.'/User.php';

__autoload...しかし、クラスのほとんどの include/require ステートメントの必要性を排除して、それを処理するオートローダー (古い関数ではなく SPL オートローダーを使用) を定義する方がさらに良いでしょう。

于 2012-06-19T15:51:02.653 に答える
0

これを避けるために、通常はプロジェクト ルートから上へのフル パスを含めます。なぜそうしないのですか:

require_once('Class/User.php'); 

これはより具体的であり、PHP が何を意味するかを理解するために必要な推測作業を回避します。

于 2012-06-19T15:47:55.693 に答える