Как предотвратить уведомления PHP с определенной переменной?
В основном у меня есть куча ссылок на странице, и я буду использовать что-то вроде этого
<?PHP echo $SITE_PATH ?>
Много-много раз на одной и той же странице, но для этого будет отображаться уведомление в PHP.
Я знаю, что вы должны использовать такие вещи, как isset(), но нужно ли мне использовать его каждый раз, когда я звоню?
<?PHP echo $SITE_PATH ?>
--- РЕДАКТИРОВАТЬ:
Если я переключаюсь на использование определенной переменной, то уведомления, кажется, уходят
4 ответа
Два решения, здесь:
- используйте только те переменные, которые существуют - это то, что вы, вероятно, должны делать.
- или проверить, если они существуют (с
isset
) прежде чем пытаться их использовать.
Там нет магии ^^
Если в вашем приложении используется много неустановленных переменных, возможно, у вас есть проблемы с дизайном.
В случае, подобном тому, который вы представили, для переменной, которая использовалась много раз, я бы удостоверился, что она существует, и, если нет, установил бы ее на '', например, в начале моего сценария.
Это не очень хорошо выглядит, но это сработает - и, таким образом, вам не придется проходить через все приложение, исправляя все.
(Или я мог бы также отключить E_NOTICE
error_reporting
уровень - мне не нравится эта идея, но иногда это действительно единственный способ иметь дело с некоторой базой кода)
Вы можете подавлять сообщения, используя @:
print @$site_path;
Или вы можете использовать троичную операцию, чтобы получить значение по умолчанию:
print (isset($site_path)) ? $site_path : "default_path" ;
В конце концов, вы не должны использовать переменные, которые не установлены. Если да, вам нужно переосмыслить свой подход. Обработайте эту информацию заранее, чтобы остальные ваши сценарии могли работать без проблем, подобных этой.
Вы действительно должны убедиться, что переменная установлена, прежде чем использовать ее (особенно отображая ее на странице). Если переменная поступает из небезопасного источника ($_GET, $_POST, база данных), вам следует выполнить фильтрацию определенного типа для предотвращения взлома безопасности (межсайтовый скриптинг (XSS), подделка межсайтовых запросов (CSRF) и т. Д.)..) но если вы чувствуете, что все в порядке, и вы просто не хотите показывать ошибки (например, в работе), установите для отчета об ошибках значение 0.
Например error_reporting(0);
Вы можете сделать это на уровне php.ini или на странице (установите error_reporting(0);
в верхней части страницы).
Кстати, когда вы работаете, вы не хотите отображать ошибки. Зарегистрируйте их вместо этого. В процессе разработки вы хотите увидеть все ваши ошибки (E_STRICT).
Вы можете создать функцию, чтобы проверить, установлена ли переменная, и вернуть ее:
function EchoVar() {
global $SITE_PATH;
return isset($SITE_PATH) ? $SITE_PATH : '';
}
// calling it
echo EchoVar();