Framework Foton
Инструмент для профессиональной разработки web приложений
Работа с глобальными объектами $FS/$FG

Для работы с настройками системы и с глобальными переменными окружения, такими как POST,GET,PUT и т.д.  на Framework Foton используются соответственно глобальные обьекты $FS и $FG.

Это сделано для придания системе большей гибкости  и для единой точки входа и обработки данных, хотя сами по себе эти обьекты не модифицируют данные, этим занимается роутинг ядра системы, а также обработчики Event событий моделей данных.

Но при таком подходе возникает проблема глобальной зависимости и изменений, что по усти является как плюсом так и минусом. Для того, чтобы решить данную проблему есть 2 способа:

  1. Включить настройку readonly=>true, тогда никакие системные настройки не смогут измениться, они будут работать как константы. Такая настройка будет касаться всего проекта, поэтому можно в файле настроек custom.php добавить проверку например на роль пользователя по сессии и в зависимости от этой роли запрещать изменения настроек системы или же оставить как есть.
  2. Второй способ и он также может сочетаться с первым: это включить  логирование всех изменений настроек и входящих данных. Для этого перейдите в файл core/preload/setting.php и в конце этого файла вы увидите две строчки
<?
$GLOBALS['FS'] = new FS($FotonRootPath);//true,'/system/cache/setting.txt');
//и
$GLOBALS['FG'] = new FG($FotonRootPath);//true,'/system/cache/globals.txt');

раскомментируйте их, у вас должно получиться примерно вот так

<?
$GLOBALS['FS'] = new FS($FotonRootPath,true,'/system/cache/setting.txt');
//и
$GLOBALS['FG'] = new FG($FotonRootPath,true,'/system/cache/globals.txt');

После сохранения ваших изменений при изменении каких либо глобальных настроек или переменных окружения в файл по указанному пути будет добавляться запись содержащая название файла и номер строчки на которой произошло это изменение или добавление, а также имя свойства или переменной окружения, которую изменили или добавили.

Таким образом если хотя бы раз система с изменениями отработала эти данные уже будут в нашем файле.

Как альтернативу можно использовать обертку над глобальным объектом с дополнительным логированием или запретом изменения либо использовать сторонние request библиотеки через vendor/composer

© Copyright 2017 - 2026 Разработано на Framework Foton
Продукт зарегистрирован в Роспатенте