9 корисних функцій PHP та особливостей, які потрібно знати
Від Автора:
Навіть після багаторічного використання PHP ми наштовхуємося на функції та особливості, про які не знали. Деякі можуть бути дуже корисними, але мало використовуваними. Не всі з нас читали керівництво та довідник функцій від кірки до кірки!
1. Функції з довільною кількістю параметрів
Ви можете дізнатися, що PHP дозволяє визначати функції з необов'язковими параметрами. Однак існує спосіб, що дозволяє абсолютно довільну кількість параметрів функції.
Для початку, ось приклад виключно з необов'язковими параметрами:

Безкоштовний курс з PHP програмування
Освойте курс та дізнайтеся, як створити динамічний сайт на PHP та MySQL з повного нуля, використовуючи модель MVC
Тепер давайте подивимося, як створити функцію, яка приймає будь-яку кількість параметрів. На цей раз ми збираємося використовувати func_get_args():
2. Використання Glob() для пошуку файлів
Багато функцій PHP довгі і змістовні імена. Однак важко сказати, що робить функція з ім'ям glob(), якщо ви вже звідкись не знайомі з цим терміном.
Ви можете задавати кілька видів файлів, як тут:
Зверніть увагу, що файли насправді повертатимуться з шляхами, що залежать від вашого запиту:
Якщо вам потрібний повний шлях до кожного файлу, просто викличте функцію realpath() для масиву повернутих значень:
3. Відомості про використання пам'яті
Звернувши увагу використання пам'яті своїх скриптів, ви, можливо, зможете більше оптимізувати код.
PHP є «складальник сміття» (програма очищення пам'яті) і досить складний диспетчер пам'яті. Кількість пам'яті, що використовується вашим скриптом, може збільшуватися і зменшуватисяпроцесі виконання. Отримати інформацію про поточне використання пам'яті можна, використовуючи функцію memory_get_usage(), а щоб дізнатися про найбільший обсяг пам'яті в будь-якій точці, можна скористатися функцією memory_get_peak_usage().
4. Відомості про використання CPU
Для цього ми будемо користуватися функцією getrusage(). Пам'ятайте, що вона недоступна на платформі Windows.
Може виглядати таємниче, доки у вас не буде навичок в адмініструванні системи. Ось пояснення кожного значення (вчити це напам'ять не потрібно):
ru_oublock: кількість операцій блокового запису
ru_inblock: кількість операцій блочного читання
ru_msgsnd: кількість надісланих повідомлень
ru_msgrcv: кількість отриманих повідомлень
ru_maxrss: максимальний розмір набору, що не вивантажується.
ru_ixrss: загальний обсяг пам'яті, що розділяється
ru_idrss: загальний обсяг даних, що не поділяються
ru_minflt: кількість сторінок пам'яті, що використовуються
ru_majflt: кількість помилок відсутності сторінок
ru_nsignals: кількість прийнятих сигналів
ru_nvcsw: кількість перемикань контексту процесом
ru_nivcsw: кількість примусових перемикань контексту
ru_nswap: кількість звернень до диска при підкачуванні сторінок
ru_utime.tv_usec: час роботи в режимі користувача (мікросекунди)
ru_utime.tv_sec: час роботи в режимі користувача (секунди)
ru_stime.tv_usec: час роботи у привілейованому режимі (мікросекунди)
ru_stime.tv_sec: час роботи у привілейованому режимі (секунди)
Щоб дізнатися, які ресурси CPU споживає скрипт, нам потрібно подивитися на значення 'user time' (час роботи в режимі користувача) і 'system time' (час роботи в привілейованому режимі). заза замовчуванням величини секунд і мілісекунд видаються окремо. Таким чином, ви можете розділити значення мікросекунд на 1 мільйон і додати значення секунд, щоб обчислити загальну кількість секунд як десяткове число.
Хоча виконання скрипту зайняло приблизно 3 секунди, використання CPU було дуже низьким. Це відбувається тому, що під час очікування скрипт фактично не споживає ресурсів CPU. Існує безліч інших завдань, які можуть зайняти реальний час, але при цьому не використовувати час CPU, наприклад, очікування дискової операції. Так що, як ви бачите, використання CPU та дійсна тривалість часу виконання – не завжди одне й те саме.
Ось інший приклад:

Безкоштовний курс з PHP програмування
Освойте курс та дізнайтеся, як створити динамічний сайт на PHP та MySQL з повного нуля, використовуючи модель MVC
Цей скрипт використовував приблизно 1,4 секунди часу CPU, і майже весь час в режимі користувача, так як системних викликів не було.
Час роботи у привілейованому режимі (System Time) – це кількість часу, яке CPU витрачає виконання системних запитів до ядру від імені програми. Ось приклад цього:
Тепер у нас використовується чимало часу привілейованого режиму. Це відбувається через те, що скрипт багато разів викликає функцію microtime(), яка, щоб отримати дані про час, виконує запити до ядра операційної системи.
Також ви можете помітити, що цифри відповідають 3 секундам неточно. Це тому, що на сервері також, можливо, виконувались й інші процеси, тому скрипт не використовував 100% CPU протягом усіх 3 секунд.
5. Зумовлені, чи «чарівні» константи
PHP передбачає корисні «чарівні» константидля вибірки поточного номера рядка (__LINE__), шляху файлу (__FILE__), шляху каталогу (__DIR__), імені функції (__FUNCTION__), імені класу (__CLASS__), імені методу (__METHOD__) та простору імен (__NAMESPACE__).
У цій статті ми не збираємось охоплювати кожну з них, але я покажу вам деякі випадки їхнього використання.
Коли в справу включаються інші скрипти, хороша ідея — використання константи __FILE__ (або __DIR__ у версії PHP 5.3):