Я пишу сценарий, который генерирует 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) "*****"