我的具体情况是我试图定义一个到常量的路径。现在我这样硬编码:

class Cache
{
   const PATH_TO_CACHE = '/home/site/public_html/wp-content/themes/theme/cache/';

但是我需要定义是可移植的。因此可以检测路径,将其放入变量中,然后放入类中。本质上,我想完成的是:
$somepath = {code to get path};

class Cache
{
const PATH_TO_CACHE = $somepath;

最佳答案

我喜欢为此使用依赖项注入(inject)。例如:

class Cache {

  private $path_to_cache;

  function __construct($cache_path) {
    $this->path_to_cache = $cache_path;
  }

}

然后,您可以使用定义的设置:
$cache = new Cache($GLOBALS['config']['cache_path']);
$cache = new Cache($_SERVER['cache_path']);
$cache = new Cache($some_other_way_to_get_cache_path);

等等

您还可以在开发/调试时轻松更改路径:
$cache = new Cache('path/to/folder/that/is/being/problematic');

10-07 19:45
查看更多