我有一些php文件,其中包含一些语言常量
define("_SEARCH","Search");
define("_LOGIN","Login");
define("_WRITES","writes");
define("_POSTEDON","Posted on");
define("_NICKNAME","Nickname");
现在我需要阅读每个文件并列出所有常量及其值
并返回这样的输出:
常量名称:
值是:
所以我认为应该有功能列出给定php文件的所有定义的常数。
我知道诸如token_get_all或get_defined_constants之类的功能,但我无法做到。
最佳答案
如果文件只包含define
语句,则可以使用get_defined_constants
:
function getUserDefinedConstants() {
$constants = get_defined_constants(true);
return (isset($constants['user']) ? $constants['user'] : array());
}
$constantsBeforeInclude = getUserDefinedConstants();
include('file.php');
$constantsAfterInclude = getUserDefinedConstants();
$newConstants = array_diff_assoc($constantsAfterInclude, $constantsBeforeInclude);
它的作用基本上是:
get_defined_constants(true)
为我们提供了一个数组,其中包含所有可用常量,并按部分(核心,用户,..)进行排序-键“user”下的数组为我们提供了我们在我们的定义中定义的所有用户定义的常量到那时为止,使用define
的php代码。 array_diff_assoc
为我们提供了包含文件之前和之后此数组之间的区别..这正是在该特定文件中定义的所有常量的列表(只要声明中没有重复项,意味着带有之前已经定义了确切的名称-但这仍然会导致错误)。关于php - 列出php文件中所有定义的常量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7538049/