Я только что исследовал это в течение последнего часа, чтобы попытаться выяснить лучший способ сделать это.
Я работаю над приложением CLI PHP, которое использует следующую функцию, чтобы найти ширину командной строки.
function getColLen() {
$getcolLen = shell_exec('tput cols');
$colLen = (int) $getcolLen;
return $colLen;
}
Теперь у меня около 8 классов, с которыми я сейчас работаю, и эту функцию я использую довольно часто - в большинстве классов и во многих методах внутри классов.
Ранее он был просто включен в файл автозагрузки поставщика композитора functions.php
, и я инициализировал его в каждой функции, например
public function Tagger()
{
$colwidth = getColLen();
. . . . .
и т. Д.
Я исследовал множество различныхварианты использования динамической глобальной переменной в классах PHP, из которых их много, а некоторые становятся довольно сложными.
Ради интереса я решил попробовать и это CONSTANT
в моем functions.php
файле
define('CLIWIDTH', getColLen());
Я не думал, что это сработает, поскольку вся информация, которую я прочитал - и все примеры, которые я видел, - касалась определения статических переменных, таких как строка или каталог.
Нок моему сюрприз, это прекрасно работает.Простое echo CLIWIDTH;
в любом месте приводит к ширине командной строки (с успехом проверено для разных выходных данных при запуске консоли с разными размерами).
Не является ли это широко признанным правильным способом создания динамической переменной во всехфайлы?Возможно, я не искал правильные термины, но я никогда не слышал, чтобы кто-то использовал функцию внутри определенной константы, такой как эта.
Это правильный код?Есть ли причина, по которой это не рекомендуется при обсуждении констант, глобалов и т. Д.