PHP定义可以用于带参数的函数吗


Can a PHP define be used for a function with an argument

我正在编写一个基于数据库中当前内容生成HTML的脚本,我更喜欢格式化HTML,尤其是使用选项卡来显示嵌套。我有一个简单的功能来生成一些选项卡:

function addTab($inNum) {
    $out = "";
    for ($i = 0; $i < $inNum; $i++) $out .= "'t";
    return $out;
}

为了方便阅读PHP,我做了这样的:

$T = "addTab";

因此,我可以使用$T(5)来表示将5个't连接到字符串HTML。就我个人而言,我发现这种通过字符串指向函数的语法是不直观的,使用它的函数需要global $T

是否可以使用define(),以便在功能范围内使用类似T(5)的东西?

不,您不能按照自己想要的方式"定义函数"。

为什么不使用:

function T($inNum)
{
    return addTab($inNum);
}

然后你就可以写T(5)了,就像你提到的那样。

当您使用define时,您定义了一个常量。根据手册:

The value of the constant; only scalar and null values are allowed. Scalar values are integer, float, string or boolean values. It is possible to define resource constants, however it is not recommended and may cause unpredictable behavior.

所以你不能用函数的值来定义一个常数。

但是函数变量仍然在php中工作:

function addTab($inNum) {
    $out = "";
    for ($i = 0; $i < $inNum; $i++) $out .= "*";
    return $out;
}
$T = 'addTab';
$r = $T(5);
var_dump($r);    // string(5) "*****"