Чому потрібно чітко розуміти isset і empty відмінності в php
Як би не сварили PHP за слабку і погану тіпізірованія помножену на купу функцій на всі випадки життя, у нього є повно плюсів як простота при підході до вирішення завдань, велика кількість інструментів за замовчуванням і т.д.
Один ось нюанс я помітив, що часто зустрічається у розробників на PHP це люди плутають призначення функцій empty і isset.
Ось вам приклад, як вам здається цей код хороший чи ні?
я навіть не буду нічого говорити про addslashes без перевірки magic_quotes * якщо ви не новачок вам і так зрозуміло, та й все ж далі використовується dibi бібліотека в якій є гнучкий і дуже зручний конструктор запитів і плейсхолдер за замовчуванням. Що люди не використовують усіх можливостей бібліотек і так ясно, це просто лінь почитати лише однієї сторінки ман.
Що ми знаємо про empty. Це насправді проста директива або конструкція мови, яка перевіряє змінну на порожнечу і не видає попередження, якщо навіть змінна не визначена, тобто вона поєднує в собі функцію isset
empty () is the opposite of (boolean) var, except that no warning is generated when the variable is not set.)
Друге, що таке порожнеча для PHP. Саме за такі речі багато хто не люблять PHP або багато хто не люблять після PHP інші мови, коли порожнеча в них має певне значення наприклад nil (Ruby, puts nil.class) або undefined (JS).
У PHP порожнеча це 0, "", array (), 0.0, FALSE, Null або просто навіть без значення певна змінна:
The following things are considered to be empty:
"" (An empty string)
0 (0 as an integer)
0.0 (0 as a float)
«0» (0 as a string)
NULL
FALSE
array () (an empty array)
var $ var; (A variable declared, but without a value in a class)
Історія з isset взагалі простіше, це так само конструкція мови, яка перевіряє тільки дві речі: оголошена змінна ($ var; наприклад) і чи не є вона NULL!
Усе!
Тобто виходить, що ось код.
Видасть все ж не той що нам як би потрібен:
> Hello
Так і вище код збереться з непотрібним умовою і навіть швидше неправильним (.) Умовою, коли було відбувається збір параметрів
ваш SQL запит вийде смішного виду alias = '', хоча я впевнений вам би хотілося бачити його зовсім іншого вигляду.
Тому я все ж правильніше розуміти відмінності де і коли використовувати isset і empty.
Удачі, залишайтеся на боці розуму!