我正在尝试定义一个常量,但如果它已经被定义,我不想重新定义它。 这是一个C样本:
#ifndef BASEPATH
#define BASEPATH /mnt/www
#endif
在PHP中执行此操作的最佳方法是什么?
答案 0 :(得分:23)
答案 1 :(得分:6)
if(!defined('BASEPATH')) {
define('BASEPATH', '/mnt/www');
}
答案 2 :(得分:5)
在C中,#ifdef通常涉及根据是否存在定义来编写/启用/禁用自定义代码。虽然OP没有寻找随后的答案,但搜索引擎用户可能有兴趣获得扩展答案。 (这个问题帮助RTM找到了答案。)
如果有一个包含多次的.php文件,只有当某个函数尚未由同一文件的先前包含声明时,才可以方便地声明该函数。在这种情况下,方便性是将紧密相关的代码保存在同一个文件中,而不必将其放在单独的include_once
.php文件中,并且不必要地分开代码,这些代码通常不会在其他上下文中重复使用(文件)。
由于多次重新声明函数似乎很浪费/不合适,事实证明PHP中的#ifdef类似的构造是可能的:
if (! function_exists('myfunc'))
{
function myfunc(...)
{
...
}
}
...
表示您填空。
另见:function_exists (PHP 4, PHP 5)(带评论)。
答案 3 :(得分:4)
使用defined()功能
if(!defined("constantname")) {
define("constantname", "value");
}
答案 4 :(得分:1)
使用defined():
<?php
/* Note the use of quotes, this is important. This example is checking
* if the string 'TEST' is the name of a constant named TEST */
if (defined('TEST')) {
echo TEST;
}
?>
答案 5 :(得分:1)
这是对Radu上面的回答(以及其他所有人)的简要重写。
defined('BASE_PATH') || define('BASE_PATH', '/mnt/www/');
就是这样。如果 defined('BASE_PATH')
评估为 true ,那么条件的其余部分永远不会被评估。如果它返回 false ,则评估条件的后半部分并定义BASE_PATH
。