>我有一个这样的文件结构:
Class (folder):
- User.php
- Rule.php
Scripts (folder):
- user.php (in lowercase)
- otherscript.php
index.php
规则类(类/规则.php):
namespace My'Namespace;
require_once 'Gender.php';
require_once 'User.php';
class Rule
{
...
用户类(类/用户.php):
namespace My'Namespace;
require_once 'Gender.php';
class User {
...
在规则类中,我使用包含用户类(require_once"用户.php")的"require_once",问题是当我在"otherscript.php中包含 de Rule 类时,它包括我(脚本/用户.php和类/用户.php)。我怎样才能避免这种情况?
您可以相对于自身require_once
元素,而不是相对于当前工作目录的任何内容:
require_once __DIR__.'/Gender.php';
require_once __DIR__.'/User.php';
。但最好只定义一个自动加载器(使用 SPL 自动加载器而不是旧的 __autoload
函数),它为您处理这个问题,消除了对类的大多数包含/要求语句的需求。
我通常包含从项目根目录向上的完整路径以避免这种情况。为什么不做:
require_once('Class/User.php');
这更具体,并且绕过了 PHP 需要做的猜测工作来弄清楚你的意思。