У меня есть базовое приложение Yii2, и я решил создать механизм закрытия веб-сайта, такой как те, что были найдены в CMS. Я config/web.php
следующие изменения в config/web.php
:
$config = [ ...... ]; if ($params['closeSite']){ return call_user_func(function(){ echo file_get_contents('../closed.html'); die(); }); } return $config;
В приведенном выше фрагменте я использовал последнюю строку в web/index.php
которая использует $config
в инициации объекта приложения (new yii\web\Application($config))->run();
и config/web.php
вернет echo
содержимое и использует die
чтобы остановить дальнейшее выполнение, чтобы удалить сообщения об ошибках и уведомления.
Действительно, приведенный выше код работает отлично. Тем не менее, я хотел бы использовать некоторые настройки конфигурации в $config
массиве, определенном в том же файле config/web.php
поэтому я ввел следующее изменение в приведенный выше фрагмент:
$config = [ ....... ]; if ($params['closeSite']){ return call_user_func(function($config){ echo file_get_contents('../closed.html').$config['language']; die(); }); returm $config
Однако этот фрагмент выводит следующее предупреждение:
Предупреждение: Отсутствует аргумент 1 для {закрытия} () в C: \ Users ….. \ config \ web.php в строке 80
Примечание. Неопределенная переменная: config в C: \ Users ….. \ config \ web.php в строке 81 Закрыто для обслуживания
У меня есть два вопроса:
$config
– это массив, определенный в строках перед фрагментом? Я нашел ошибку при передаче параметра $config
. Из документации по PHP, пример №3. Мне нужно передать или наследовать $config
следующим образом:
if ($params['closeSite']){ return call_user_func(function() use ($config){ echo file_get_contents('../closed.html').$config['language']; die(); }); }
т.е. используя использование ключевого слова. Остается только аспект безопасности.