PHP Globals - нужен совет

12
Dreammaker
На сайте с 20.04.2006
Offline
569
#11
edogs:
unset($a,$c);
$a++;$b=$c+5;echo $a,$b;


$a=0;
$c=0;
$a++;$b=$c+5;echo $a,$b;

Так будет вернее.. ;) Ваш код вызовет нотайс :)

edogs software
На сайте с 15.12.2005
Offline
775
#12
Dreammaker:

$a=0;
$c=0;
$a++;$b=$c+5;echo $a,$b;


Так будет вернее.. ;) Ваш код вызовет нотайс :)

Согласимся на половину:) Для избежания нотисов надо инициализировать переменные, Вы абсолютно правильно уточнили. Но unset более правильно использовать что бы глобальная переменная не проникла (именно об этом мы приводили пример), ибо иногда для кода имеет значение была ли переменная установлена (вдруг дальше Вам понадобится проверить проводились ли вычисления с переменной $a?). Строго говоря правильнее тогда использовать и unset на входе и инициализацию перед непосредственным использованием.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
[Удален]
#13
edogs:
более правильно использовать что бы глобальная переменная не проникла

Страшно не то чтоб она "проникла" а чтоб она повлияла на результат работы...

edogs:
иногда для кода имеет значение была ли переменная установлена

В нормально написанном коде нет такой необходимости, обычно в таких случаях есть отдельная переменная установленная в false и при "необходимости" она становится true

edogs:
Строго говоря правильнее тогда использовать и unset на входе

Мягко говоря не согласен...

edogs software
На сайте с 15.12.2005
Offline
775
#14
Зингельшухер:
Страшно не то чтоб она "проникла" а чтоб она повлияла на результат работы...

Согласны. Но если отсутствие переменной после unset вызовет максимум notice, то выставление переменной в 0, это придание переменной определённого значения, на которое скрипт может отреагировать.

Зингельшухер:
В нормально написанном коде нет такой необходимости, обычно в таких случаях есть отдельная переменная установленная в false и при "необходимости" она становится true

Иногда бывает такая необходимость и в нормальном коде.

Зингельшухер:
Мягко говоря не согласен...

Выставление переменной в 0 вместо ансета, может привести к неточностям, вспомните этот топик, там ещё dkameleon Вам писал, почему empty нельзя использовать для проверки наличия/отсутствия переменной и/или проверки наличия/отсутствия в ней контента. Использование unset и isset позволяет избежать подобного типа неточностей, не зря же есть разница между 0 и null.

P.S.: По поводу разницы 0, null, "" вот ссылочка полезная.

[Удален]
#15
edogs:
может привести к неточностям

Именно по этому нормальные программисты сначала проектируют приложение а уже потом пишут (а не сначала пишут, потом запускают, а потом смотрят что получилось)

edogs software
На сайте с 15.12.2005
Offline
775
#16
Зингельшухер:
Именно по этому нормальные программисты сначала проектируют приложение а уже потом пишут (а не сначала пишут, потом запускают, а потом смотрят что получилось)

Естественно. Но как-бы то ни было, выставление в 0 никогда не заменит unset-а, ибо они делают разные операции и для удаления переменной использоваться должен именно unset. Ибо выставление в 0 годится для инициализации, а это все-таки другая операция.

[Удален]
#17

edogs, ты меня не понял, я не утверждаю что unset делает а что нет, я говорю что переменную вовсе необязательно удалять, её надо "обнулить-перед-использованием"

psylosss
На сайте с 23.12.2005
Offline
126
#18

спор на пустом месте. пожмите руки и разойдитесь. Что интересно, каждый точно понимает, что собеседник пытается ему доказать :) т.к. оба нормальные программисты

Веб-разработка. Сложные проекты. Проектирование. Проект-менеджмент. Стартапы.
[Удален]
#19
psylosss:
спор на пустом месте

Это не спор, это скорее просто дружеское обсуждение разных точек зрения :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий