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' 中包含 de Rule 类时,它包括我两者(script/user.php和类/User.php)。我怎样才能避免这种情况?

4

2 回答 2

3

您可以require_once选择相对于自身的元素,而不是相对于当前工作目录的元素:

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

...但最好只定义一个自动加载器(使用 SPL 自动加载器而不是旧__autoload函数),它会为您处理这个问题,从而消除对类的大多数包含/要求语句的需要。

于 2012-06-19T15:51:02.653 回答
0

我通常包括从我的项目根目录向上的完整路径以避免这种情况。为什么不这样做:

require_once('Class/User.php'); 

这更加具体,并且绕过了 PHP 需要做的猜测工作来弄清楚你的意思。

于 2012-06-19T15:47:55.693 回答