I am writing a script that generates HTML based on what is currently in a database and I prefer to have the HTML be formatted, particularly with tabs to show nesting. I have a simple function to generate some number of tabs:
function addTab($inNum) {
$out = "";
for ($i = 0; $i < $inNum; $i++) $out .= "\t";
return $out;
}
For convenience of reading the PHP, I made this:
$T = "addTab";
So that I could just use $T(5)
to say concatenate 5 \t
to the string HTML. Personally I find this kind of syntax of pointing to a function by string to be unintuitive and functions that use it require global $T
.
Is it possible to use a define()
so that something like T(5)
could be used within function scope?
No, you cannot "define a function" in the way you desire.
Why not use:
function T($inNum)
{
return addTab($inNum);
}
Then you can just write T(5)
, as you mentioned.
When you use define
you define a constant. According to manual:
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.
So you can't define a constant with the value of a function.
But still function variables are working in php:
function addTab($inNum) {
$out = "";
for ($i = 0; $i < $inNum; $i++) $out .= "*";
return $out;
}
$T = 'addTab';
$r = $T(5);
var_dump($r); // string(5) "*****"