PHP有相当于C/C++的#ifdef吗?

Dav*_*idH 14 php constants

我正在尝试定义一个常量,但如果已经定义了,我不想重新定义它.这是一个C样本:

#ifndef BASEPATH
#define BASEPATH /mnt/www
#endif
Run Code Online (Sandbox Code Playgroud)

在PHP中最优雅的方法是什么?

rid*_*rid 25

使用defined()define().

if (!defined('BASEPATH')) {
    define('BASEPATH', '/mnt/www');
}
Run Code Online (Sandbox Code Playgroud)

  • 太好了!我已经确定的是(所有在一行):`defined('BASE_PATH')|| define('BASE_PATH','/ mnt/www /');`如果`defined()`是**true**,则条件的其余部分永远不会被评估,如果`defined()`返回**false**,评估条件的后半部分并定义`BASE_PATH`. (2认同)

kbu*_*ien 5

在C中,#ifdef通常涉及根据是否存在定义来编写/启用/禁用自定义代码.虽然OP没有寻找随后的答案,但搜索引擎用户可能有兴趣获得扩展答案.(这个问题帮助RTM找到了答案.)

如果有一个包含多次的.php文件,只有当某个函数尚未由同一文件的先前包含声明时,才可以方便地声明该函数.在这种情况下,方便性是将紧密相关的代码保存在同一个文件中,而不必将其放在单独的include_once.php文件中,并且不必要地分离通常不会在其他上下文(文件)中重复使用的代码.

由于多次重新声明函数似乎很浪费/不合适,事实证明PHP中的#ifdef类似的构造是可能的:

if (! function_exists('myfunc'))
{
  function myfunc(...)
  {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

在哪里...表示你的填空.

另请参见:function_exists(PHP 4,PHP 5)(带注释).