Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> возвращает результат если параметр = bool 
V
    Опции темы
Aliance
Дата 14.11.2012, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(Antony41 @  14.11.2012,  15:38 Найти цитируемый пост)
а разве это выражение приводит к ошибке?

ну так запусти и посмотри  smile 

Код

<?php

error_reporting(E_ALL);

if ($notSetVariable) {
    echo 'variable not set';
}
?>


Цитата

 Notice: Undefined variable: notSetVariable in file.php on line 5


Это сообщение отредактировал(а) Aliance - 14.11.2012, 15:51
PM MAIL WWW ICQ Skype   Вверх
Antony41
Дата 14.11.2012, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



вот теперь понятно! но впринципе разницы нет если установлен нормальный уровень контроля ошибок?
ведь возвращается всё равно null а null это false просто ведётся логирование так чисто для разработчика чтоб на всякий случай знал что переменная не инициализирована. так?

Добавлено через 2 минуты и 42 секунды
Цитата(Aliance @  14.11.2012,  15:50 Найти цитируемый пост)
ну так запусти и посмотри 

ну запустил и посмотрел )) ничего не выдало так как я же говорю учу php третий или четвертый день а про error_reporting только что узнал smile 
PM MAIL   Вверх
Aliance
Дата 15.11.2012, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(Antony41 @  14.11.2012,  21:29 Найти цитируемый пост)
но впринципе разницы нет если установлен нормальный уровень контроля ошибок?

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

Если переменная не установлена, возвращается не NULL, (а скорее undefined + нотис)
PM MAIL WWW ICQ Skype   Вверх
Antony41
Дата 15.11.2012, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



тоесть вы хотите сказать то что проверку нужно всегда выполнять через empty? вместо "!(не)$var"
PM MAIL   Вверх
ksnk
Дата 15.11.2012, 17:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Более полезны, imho, такие функции.
Код

class xxx{
...
    public static function val(&$value,$format='',$default='')
    {
         if(empty($value))
               return $default;
         if(''==$format)
               return $value;
         return sprintf($format,$value); 
    }  



Код

error_reporting(-1);

$limit=5;

$query = 'SELECT * FROM my_table1 '
.xxx::val($sub_query)
.xxx::val($_POST['unknown key'])
.xxx::val($limit,' LIMIT %d',' limit 20');


echo $query;

выдаст 
Цитата

SELECT * FROM my_table1  LIMIT 5

без нотисов о несуществующих переменных $sub_query и отсутствующем ключе у $_POST

Это сообщение отредактировал(а) ksnk - 15.11.2012, 18:09


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Antony41
Дата 16.11.2012, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Цитата(ksnk @  15.11.2012,  17:55 Найти цитируемый пост)
Более полезны, imho, такие функции.

спасибо за хорошие примеры!

Цитата(ksnk @  15.11.2012,  17:55 Найти цитируемый пост)
 if(empty($value))
               return $default;

а всё таки нотисы не выдаст по тому что проверка идёт через empty?

Это сообщение отредактировал(а) Antony41 - 16.11.2012, 02:52
PM MAIL   Вверх
ksnk
Дата 16.11.2012, 08:28 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Antony41 @  16.11.2012,  02:51 Найти цитируемый пост)
а всё таки нотисы не выдаст по тому что проверка идёт через empty?

Это какой-то трюк php. Если поразбираться, то в нем можно найти логику, однако она какая-то нелогичная, на уровне трюка ;) Нотис в php появляется только в момент получения значения неопределенной переменной, передача адреса неопределенной переменной почему то  безопасна.

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

Тут важно то, что параметр передается в функцию.  В php4 указание & в параметрах функции было обязательно, так как без нее параметры фактически копировались, и операция вызова сразу вызывала нотис. Сейчас параметры не копируются, символ ссылки не обязателен.




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Antony41
Дата 16.11.2012, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



спасибо всем огромное за дискуссию. Довольно интересная и поучительная получилась тема. На счет того что ссылки передавать стало не обязательным отдельное  smile а то я тут парюсь.... smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.