如何在类中包含定义常量的文件(及其范围)

Mat*_*art 4 php oop class constants include

假设我们有以下内容:

some.class.php

class
{
    public __construct()
    {
        fun_stuff();
    }

}
Run Code Online (Sandbox Code Playgroud)

configuration.inc

const SOMECONST = 1;
const SOMEOTHERCONST = 2;
Run Code Online (Sandbox Code Playgroud)

我希望做这样的事情:

some.class.php

class
{
    public __construct()
    {
        include_once(configuration.inc);
        fun_stuff();
    }

}
Run Code Online (Sandbox Code Playgroud)

现在这个工作,但是常量不在class(echo some::SOMECONST;)的范围内定义,而是在全局范围(echo SOMECONST;)中定义

真的很想把常量放在另一个文件中,因为它在我的情况下很有意义.有没有办法在类的范围内声明常量?我知道在课堂定义中使用includes或不可能,requires所以我不知所措.

max*_*xhb 5

最简单的可能性是在一个类中定义常量,让其他类扩展该类.

class myClassConstant {
  const SOMECONST = 1;
  const SOMEOTHERCONST = 2;
}

class myClass extends myClassConstant {

  public function __construct() {
    echo self::SOMECONST . ' + ' . self::SOMEOTHERCONST . ' = 3';
  }
}

$obj = new myClass(); // Output: 1 + 2 = 3
Run Code Online (Sandbox Code Playgroud)

如果您使用的是php autoloader,则可以轻松将其拆分为两个不同的文件.


Mat*_*art 0

简而言之,如果没有 php 的扩展,这是不可能的。我最终只是在类文件自身中定义了常量。