Новини високих технологій
» » Практика використання функції PHP empty()

Практика використання функції PHP empty()

12-03-2017, 18:15
729
Сучасне програмування давно і успішно маніпулює нетипированними змінними. Тип змінної можна не вказувати заздалегідь і змінювати його в процесі виконання програми. Така концепція стала основною в загальній парадигмі програмування. На самому початку епохи мови програмування з такою ж грунтовної упевненістю вимагали від програміста попереднього опису змінних і строго стежили за тим, щоб їм нічого недозволеного не присвоювалося. Про те, що змінна змінює свій тип, ні програми, ні мови програмування раніше поняття не мали.

Про порожньому і не існуючому

Функція PHP empty() зворотна до функції isset() і має деякі особливості використання. Якщо змінної немає, то перша функція висловлюється про це позитивно і її результат - true, а друга - негативно, тобто її значення false.

За визначенням isset() покликана перевіряти існування змінної. Не має значення, що і як було присвоєно змінній, головне, що вона є і не знищена функцією unset(). Результат функції isset() позитивними - true. Важливо пам'ятати, що якщо $iVar = 0; то isset($iVar) буде true, але і empty($iVar) буде теж true. У першому випадку результат означає, що змінна існує, у другому випадку - мінлива порожня, тобто значення "0" в будь-якому його вигляді, будь то рядок ("0") або число дробове - 0.0 або ціле - 0) все одно: empty($iVar) буде дорівнює true.

Про безпеку і контроль

Практика показує, що нетипированние мови дають значно більше свободи програмісту, але припускають, що його ставлення до роботи над алгоритмом більш відповідально.
PHP пропонує сучасний синтаксис, підтримує сталу семантику, має мало помилок, але вимагає до себе уважного ставлення. Наприклад, виклик будь-якої функції припускає якусь кількість параметрів. Викликаючи функцію, зовсім не обов'язково передавати всі параметри, можна передати лише значну їх частину. Функція "зобов'язана перевірити наявність та існування всіх параметрів. Ті з них, які відсутні або мають неправильні значення, необхідно привести до нормального вигляду, присвоїти їм потрібні значення.

У цьому контексті функція PHP empty() має істотне значення. Вираз: $a = "1;2" + 20
присвоїть змінній $a значення 21 оскільки перша частина виразу буде представлена як 1 а друга так і буде 20. Результат буде мати тип число і функція PHP empty($a) буде мати результат - false, тобто змінна $a не порожня. У цьому контексті, маючи функцію: funcTest($a = 0 $b = 20) при виклику: $res = funcTest($aVal, $bVal) матиме бажане, тобто результат функції. А при виклику: $res = funcTest($aVal. $bVal) в тіло функції потрапляє лише один параметр із значенням '$aVal . $bVal' і швидше за все цей параметр буде інтерпретований як рядок символів.

PHP empty() для об'єктів і масивів

Синтаксис мови має достатню кількість конструкцій і функцій для роботи з об'єктами і масивами, однак з точки зору перевірки їх на існування і на наявність значення особливих відмінностей від змінних немає.
PHP empty (array) - еквівалентно викликом empty (simple variable). Однак щодо об'єктів є досить істотні міркування. Що стосується перевірки об'єкта на існування (isset), питання навряд чи має сенс. Що стосується функції PHP empty(), то доцільність її використання залишається під питанням.
За логікою об'єктно-орієнтованого програмування, об'єкт має власний зміст і власний набір методів. Сказати порожній він або не порожній може тільки сам об'єкт, але не стороння функція, нехай навіть входить в синтаксис мови.

Об'єкт і його функція empty()

На цьому простому, але законному, на підставі слід розглядати всякий об'єкт в контексті його розуміння "порожнечі". Наприклад, реалізація об'єкта "Штатний розклад" складається із записів "Співробітник". Але якщо немає жодного співробітника, то в "Штатному розкладі" завжди є варіанти посад ймовірних співробітників. На якому рівні застосувати тут функцію PHP empty object? На рівні "Штатний розклад" все існує, навіть якщо немає жодного співробітника. На рівні "Співробітник" об'єкт вже є, навіть якщо він заповнений не повністю. А не повністю заповнений об'єкт можна віднести до порожнього об'єкту. Користі від нього штатним розкладом ніякої. В залежності від обраного стилю програмування, функції PHP empty() і isset() мають дуже важливе значення для побудови безпечного і надійного алгоритму, однак щодо об'єктів все ж краще мати свій варіант empty(), який визначається його змістом.
Цікаво по темі
Життєвий статус: коротко про головне
Життєвий статус: коротко про головне
Життєвий статус - це ємне висловлювання, що відбиває спостереження людини за навколишнім світом. Саме ...
Що робить функція PHP microtime?
Що робить функція PHP microtime?
В одному з найбільш популярних мов програмування PHP міститься багата бібліотека функцій. Кожна з них відрізняється своїми властивостями, але з-за
Рядковий оператор в Pascal - string
Рядковий оператор в Pascal - string
Програмування постійно пов'язане з роботою з деякими даними, зокрема, з рядками. Рядковий оператор задається однаково в більшості мов, у тому числі в
Що робить функція SQL CONCAT?
Що робить функція SQL CONCAT?
Робота з базами даних постійно пов'язана з отриманням результатів запитів. І в деяких випадках цю інформацію необхідно вивести на екран певним чином,
Javascript Array для збереження необмеженої кількості змінних
Javascript Array для збереження необмеженої кількості змінних
Логічно масив займає проміжне положення між змінними і об'єктами. Практично не слід надавати особливого значення словам. У програмі є змінні і код.
Перетворення типів. Функції Round і Trunc в "Паскаль"
Перетворення типів. Функції Round і Trunc в "Паскаль"
Перетворення типів в Pascal дозволяє реалізувати більш широкий клас задач та виконувати операції над величинами різних типів.