PHP文件/类名冲突

时间:2012-06-19 15:45:22

标签: php class namespaces

我有这样的文件结构:

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类时,它包含了我两个(脚本/ user.php和class / User.php)。我怎么能避免这个?

2 个答案:

答案 0 :(得分:3)

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

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

...但是最好只定义一个自动加载器(使用SPL自动加载器而不是旧的__autoload函数)来处理这个问题,从而消除了对大多数include / require语句的需求对于课程。

答案 1 :(得分:0)

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

require_once('Class/User.php'); 

这是更具体的,可以解决PHP需要做的猜测工作,以找出你的意思。