Какой лучший способ избавиться от уведомлений о неопределенных переменных? - PullRequest
2 голосов
/ 02 июля 2011

Я использую codeigniter, одна из основных проблем, с которыми я сталкиваюсь в представлениях, это неопределенные переменные, которые могут существовать или не существовать.

Я знаю, что легко избавиться от уведомлений, используя что-то вроде:

<?=html($this->input->post('name'))?>

Добавляя if(isset(..){ html($this->input->post('name')); }

Но это очень раздражает и делает код уродливым, я также не хочу отключать уведомления об уведомлениях.

Есть какой-нибудь совет по этому поводу?

Ответы [ 4 ]

4 голосов
/ 02 июля 2011

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

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

<?php if( isset($this->input->post('name')) ): ?>
    <?= $this->input->post('name') ?>
<?php endif ?>

Это также упростит управление фрагментом позже, если вы позже решите, скажем, обернуть вывод в HTMLили добавьте регистр else.

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

0 голосов
/ 03 июля 2011

Просто поместите это в свой контроллер в функции __construct () part.

function __construct() {
    parent::__construct();
    error_reporting(E_ALL ^ (E_NOTICE));
}
0 голосов
/ 02 июля 2011

Лучший способ - всегда определять ваши переменные.Если переменная является входной (то есть вы не знаете, определена она или нет), тогда требуется использование isset ().Лично я использую функцию-обертку для получения данных из входных переменных:

function get($key, $default = null) {
    return isset($_GET[$key]) ? $_GET[$key] : $default);
}

Тогда вместо использования $_GET['some_key'] вы можете использовать get('some_key').

Вы также можете подавлять ошибки, используя знак(@) который я не рекомендую.

0 голосов
/ 02 июля 2011

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

error_reporting(E_ALL ^ E_WARNING);   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...