В моем сайте / приложениях у меня всегда есть некоторые константы, которые должны быть установлены, чтобы мой сайт работал. И мне интересно, как обрабатывать такие фатальные ошибки, когда я не могу установить переменную. Я пытаюсь найти сбалансированный способ написания сценария, который будет наиболее читабельным, коротким и даст достаточно отзывов.
Ради этого вопроса, скажем, у меня есть файл конфигурации. json со всеми данными, и я хочу проверить, существует ли необходимый файл и может ли он использоваться:
Обычно я использовал d ie () если условия не выполняются:
if(is_file('./config.json') && is_readable('./config.json')) define('CONFIG',json_decode(file_get_contents("./config.json"),true));
else die("Can't find or use config.json");
И вот мои проблемы:
- Обратная связь дает две причины возникновения ошибки, которую я не считаю достаточно хорошо, но я не большой поклонник создания отдельных проверок для каждой проблемы, потому что сценарий становится значительно больше, чем может быть. Есть ли обходной путь для этого?
- Правильно ли использовать функцию d ie () при завершении сценария? Пока я читаю, я не могу решить, когда и почему вы можете или не можете его использовать. Всегда ли exit () лучше подходит для обработки ошибок? Почему тот факт, что d ie () не предотвращает процедуры очистки, является плохим?
- Какой синтаксис используется:
if(!isset(CONFIG['pass']) exit('No password set.');
или
isset(CONFIG['pass']) or exit('No password set.');
есть ли разница?
или даже
CONFIG['pass'] or exit('No password set.');
, что дает две ошибки - Undefined index
и мой «Пароль не задан». Что больше обратной связи, но это не обработанная ошибка, так что это не хорошо ?? Я не знаю
1029 * А вот мое ... спорное решение, создать функцию, которая будет задавать константы и завершает сценарий, когда он не может установить их:.
function setConst($constNames, $jsonData)
{
if (!is_array($constNames) || !is_array($jsonData)) return false;
foreach ($constNames as $key) {
isset($jsonData[$key]) or exit("There is no " . $key . " in config.json, terminating script");
define($key, $jsonData[$key]);
}
}
$keys = ["_URL","_DOCUMENT_ROOT","_MODE","_TITLE","_LANG","_SERVER","_DB","_USER","_PASS"];
setConst($keys, $const);
Спасибо за все ответы и комментарии. Мне нужна помощь с этим ...