Как предотвратить уведомления PHP с определенной переменной? - PullRequest
1 голос
/ 24 декабря 2009

В основном у меня есть куча ссылок на странице, и я буду использовать что-то вроде этого

<?PHP echo $SITE_PATH ?>

Много-много раз на одной и той же странице, но для этого будет отображаться Уведомление на PHP.

Я знаю, что вы должны использовать такие вещи, как isset () , но нужно ли мне использовать его каждый раз, когда я звоню?

<?PHP echo $SITE_PATH ?>

--- РЕДАКТИРОВАТЬ:
Если я переключусь на использование определенной переменной, то уведомления, похоже, исчезнут

Ответы [ 4 ]

9 голосов
/ 24 декабря 2009

Два решения, здесь:

  • используйте только существующие переменные - это то, что вы, вероятно, должны делать.
  • или проверьте, существуют ли они isset) , прежде чем пытаться их использовать.

Нет магии ^^

Если в вашем приложении используется много неустановленных переменных, возможно, у вас есть проблемы с дизайном.


В случае, подобном тому, который вы представили, для переменной, которая использовалась много раз, я бы удостоверился, что она существует, и, если нет, установил бы ее '', например, в начале моего сценария.

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

(Или я мог бы также отключить уровень E_NOTICE error_reporting - мне не нравится эта идея, но иногда это действительно единственный способ справиться с некоторой кодовой базой)

4 голосов
/ 24 декабря 2009

Вы можете подавлять сообщения, используя @:

print @$site_path;

Или вы можете использовать троичную операцию, чтобы получить значение по умолчанию:

print (isset($site_path)) ? $site_path : "default_path" ;

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

1 голос
/ 24 декабря 2009

Вы действительно должны убедиться, что переменная установлена, прежде чем использовать ее (особенно отображая ее на странице). Если переменная поступает из небезопасного источника ($ _GET, $ _POST, база данных), вам следует выполнить фильтрацию определенного типа для предотвращения взлома безопасности (межсайтовый скриптинг (XSS), подделка межсайтовых запросов (CSRF) и т. .) но если вы чувствуете, что все в порядке, и вы просто не хотите показывать ошибки (например, на производстве), установите для отчета об ошибках значение 0.

например. error_reporting(0);

Вы можете сделать это на уровне php.ini или на странице (установите error_reporting(0); в верхней части страницы).

Кстати, когда вы работаете, вы никогда не хотите отображать ошибки. Зарегистрируйте их вместо этого. В процессе разработки вы хотите увидеть все ваши ошибки (E_STRICT).

0 голосов
/ 24 декабря 2009

Вы можете создать функцию, чтобы проверить, установлена ​​ли переменная, и вернуть ее:

function EchoVar() {
    global $SITE_PATH;
    return isset($SITE_PATH) ? $SITE_PATH : '';
}

// calling it
echo EchoVar();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...