Поэтому я хотел бы включить или отключить определенную функцию в зависимости от того, является ли переменная истиной или ложью. Функция все равно будет выполняться, но поскольку переменная имеет значение false, она не будет выполнять эту процедуру.
Что-то вроде этого
$testTF = "T"; function Test($test=$testTF){ echo $test; } Test("Go");
Конечно, это не сработает, но мне интересно, есть ли способ заставить его работать, как предполагалось. Эта функция посыпается повсюду в скрипте и должна быть в определенных местах, поэтому я не могу просто сгруппировать их все вместе в одном выражении if, потому что это сломает их.
Я знаю, что вы могли просто передавать значение как флаг каждый раз, когда вы его вызываете, но я ищу способ заставить его предположить, что значение по умолчанию, если не указано иное. Может быть, я смотрю на глобалы здесь, но мне это опасно.
благодаря
Не могли бы вы сделать это?
$testTF = "T"; function Test($test=NULL){ if ($test ===NULL) { global $testTF; $test = $testTF; } echo $test; } Test("Go");
При желании, если вы против использования глобальных переменных, вы можете инкапсулировать значение по умолчанию в функции, например:
function Test($test=NULL){ if ($test ===NULL) { $test = getDefault(); } echo $test; } Test("Go"); function getDefault(){ //pull default value from wherever $testDefault = 'T'; return $testDefault; }
Короткий ответ – это то, как вы хотите сделать это невозможно, но это также дубликат: функция PHP с переменной как значение по умолчанию для параметра
Имеет ответ, который вы искали 🙂
Вы также можете сделать это с закрытием:
$testTF = 'T'; $Test = function ($test = null) use ($testTF){ if ($test === null) $test = $testTF; echo $test; }; $Test(); //T $Test(null); //T $Test('Go'); //Go