使用include时PHP类路径冲突

use*_*278 0 php class path include

我有一个包括类的问题.这是一个解释问题的简单示例:

班级号 1(路径:/home/day/Class_A.php):

class Class_A {
  public function sayHi() {
    echo "Good day";
  }
}
Run Code Online (Sandbox Code Playgroud)

班级号 2(路径:/home/test/Class_B.php):

class Class_B {
  public function greeting() {
    if(class_exists("Class_A")!=true)
      include "../day/Class_A.php";
    $test = new Class_A();
    $test->sayHi();
  }
}
Run Code Online (Sandbox Code Playgroud)

PHP文件(路径:/home/php.php)

if(class_exists("Class_B")!=true)
  include "test/Class_B.php";
  $g = new Class_B;
  $g->greeting();
Run Code Online (Sandbox Code Playgroud)

问题是当php.php包含Class_B且Class_B包含Class_A时,Class_B无法打开Class_B,因为类的对象的路径现在与php.php文件相同.

我的问题是:有没有一种简单的方法来解决这个问题?

dre*_*010 5

尝试改变:

include "../day/Class_A.php";
Run Code Online (Sandbox Code Playgroud)

include dirname(__FILE__) . '/../day/Class_A.php';
Run Code Online (Sandbox Code Playgroud)

这样,您的include将相对于正在执行include(Class_B)的文件.