superglobals — Может ли определение PHP использоваться для функции с аргументом

Я пишу сценарий, который генерирует 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) может быть использован в рамках функции?

0

Решение

Нет, вы не можете «определить функцию» так, как вы хотите.

Почему бы не использовать:

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

Тогда вы можете просто написать T(5), как вы упомянули.

2

Другие решения

Когда вы используете 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) "*****"
1

По вопросам рекламы [email protected]