50+ PHP хитрощів та порад для початківців та розробників

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

50+ PHP хитрощів та порад для початківців

Список хитрощів та порад щодо PHP

1. луна швидше, ніж друк.

2. Загортати ваш рядок в одинарні лапки (') замість подвійних лапок (") швидше, тому що PHP шукає змінні всередині "...", а не в "...", використовуйте це, коли ви не використовуєте змінні, які потрібно оцінити у своєму рядок.

3. Використовуйте sprintf замість змінних, які містяться в подвійних лапках, це приблизно в 10 разів швидше.

4. Використовуйте множинні параметри echo (або стек) замість конкатенації рядків.

5. Використовуйте попередні обчислення, встановіть максимальне значення для ваших циклів for до, а не в циклі. тобто: для ($x=0; $x < count($array); $x), щоразу викликається функція count(), замість цього використовуйте $max=count($array) перед початком циклу for.

6. Зніміть або обнуліть свої змінні, щоб звільнити пам'ять, особливо великі масиви.

7. Уникайте магії, як-от __get, __set, __autoload.

8. Використовуйте require() замість require_once(), де це можливо.

9. Використовуйте повні шляхи в включає і вимагає, менше часу витрачається на вирішення шляхів ОС.

10. require() і include() ідентичні в усіх відношеннях, за винятком необхідності зупинки, якщо файл відсутній. Що стосується продуктивності, то різниці дуже мало.

11. Починаючи з PHP5, час, коли сценарій почав виконуватися, можна знайти в $_SERVER['REQUEST_TIME'], використовуйте це замість time() або microtime().

12. Регулярний вираз PCRE швидший, ніж EREG, але завжди дивіться, чи можете замість цього використовувати швидші власні функції, такі як strncasecmp, strpbrk та stripos.

13. Під час розбору XML у PHP спробуйте xml2array, який використовує функції PHP XML, для HTML ви можете спробувати документ DOM PHP або DOM XML у PHP4.

14. str_replace швидше, ніж preg_replace, str_replace є найкращим загалом, однак strtr іноді швидший із більшими рядками. Використання array() всередині str_replace зазвичай швидше, ніж декілька str_replace.

15. Оператори «else if» швидші за оператори select, відомі як case/switch.

16. Придушення помилок за допомогою @ дуже повільне.

17. Щоб зменшити використання пропускної спроможності, увімкніть mod_deflate в Apache v2 або для Apache v1 спробуйте mod_gzip.

18. Закрийте з'єднання з базою даних, коли ви закінчите з ними.

19. $row['id'] у 7 разів швидше, ніж $row[id], тому що, якщо ви не надаєте лапки, він повинен вгадати, який індекс ви мали на увазі, припускаючи, що ви не мали на увазі константу.

20. Використовуйте теги при оголошенні PHP, оскільки всі інші стилі знецінюються, включаючи короткі теги.

21. Використовуйте строгий код, уникайте придушення помилок, повідомлень і попереджень, що призведе до чистішого коду та менших витрат. Подумайте про те, щоб error_reporting(E_ALL) завжди було ввімкнено.

22. PHP-скрипти обслуговуються Apache httpd у 2-10 разів повільніше, ніж статична сторінка. Спробуйте використовувати статичні сторінки замість сценаріїв на стороні сервера.

23. PHP-скрипти (якщо не кешуються) компілюються на льоту щоразу, коли ви їх викликаєте. Встановіть продукт для кешування PHP (наприклад, memcached або eAccelerator або Turck MMCache), щоб зазвичай підвищити продуктивність на 25-100% за рахунок видалення часу компіляції. Ви навіть можете налаштувати eAccelerator на cPanel за допомогою EasyApache3.

24. Альтернативна техніка кешування, коли у вас є сторінки, які змінюються не дуже часто, — це кешувати вихідні дані HTML ваших сторінок PHP. Спробуйте Smarty або Cache Lite.

25. Використовуйте isset, де це можливо, замість strlen. (тобто: if (strlen($foo) < 5) { echo «Foo занадто короткий»; } проти if (!isset($foo{5})) { echo «Foo занадто короткий»; } ).

26. ++$i швидше, ніж $ i++, тому використовуйте попереднє збільшення, де це можливо.

27. Використовуйте незліченну кількість попередньо визначених функцій PHP, не намагайтеся створити власні, оскільки рідні функції будуть набагато швидшими; якщо у вас є дуже багато часу та ресурсів функції, подумайте про написання їх як розширення або модулі C.

28. Профілюйте свій код. Профайлер показує, які частини коду займають скільки часу. Налагоджувач Xdebug вже містить профайлер. Профілювання показує вузькі місця в огляді.

29. Задокументуйте свій код.

30. Дізнайтеся різницю між хорошим і поганим кодом.

31. Дотримуйтесь стандартів кодування, це полегшить вам розуміння чужого коду, а інші люди зможуть зрозуміти ваш.

32. Розділіть код, вміст і презентацію: зберігайте свій PHP-код окремо від HTML.

33. Не турбуйтеся про використання складних шаблонних систем, таких як Smarty, використовуйте ту, яка вже включена в PHP, дивіться ob_get_contents і витягніть, і просто витягніть дані з вашої бази даних.

34. Ніколи не довіряйте змінним, що надходять із землі користувача (наприклад, із $_POST), використовуйте mysql_real_escape_string під час використання mysql та htmlspecialchars при виводі як HTML.

35. З міркувань безпеки ніколи не створюйте нічого, що могло б розкрити інформацію про шляхи, розширення та конфігурацію, наприклад display_errors або phpinfo() у вашому кореневому веб-сайті.

36. Вимкніть register_globals (за замовчуванням він вимкнено з певної причини!). Жоден сценарій на виробничому рівні не потребує цього ввімкнення, оскільки це загрожує безпеці. За допомогою unregister_globals() виправте всі сценарії, які вимагають його ввімкнення, і виправте всі сценарії, які вимагають його вимкнення. Зробіть це зараз, оскільки його налаштовано на видалення в PHP6.

37. Уникайте використання простого тексту під час зберігання та оцінки паролів, щоб уникнути розкриття, замість цього використовуйте хеш, наприклад хеш md5.

38. Використовуйте ip2long() і long2ip() для збереження IP-адрес у вигляді цілих чисел замість рядків.

39. Ви можете уникнути винайдення велосипеда заново, використовуючи проект PEAR, який дасть вам існуючий код високого стандарту.

40. При використанні header('Location: '.$url); не забудьте слідувати за ним за допомогою die(); оскільки сценарій продовжує працювати, навіть якщо місце розташування змінилося, або уникайте використання всього разом, де це можливо.

41. В ООП, якщо метод може бути статичним методом, оголосіть його статичним. Поліпшення швидкості в 4 рази..

42. Збільшення локальної змінної в методі ООП є найшвидшим. Приблизно те саме, що виклик локальної змінної у функції та збільшення глобальної змінної відбувається в 2 рази повільніше, ніж локальна змінна.

43. Збільшення властивості об'єкта (наприклад, $this->prop++) відбувається в 3 рази повільніше, ніж локальна змінна.

44. Збільшення невизначеної локальної змінної відбувається в 9-10 разів повільніше, ніж попередньо ініціалізованої.

45. Просто оголошення глобальної змінної без використання її у функції сповільнює роботу (приблизно на таку ж величину, як збільшення локальної змінної). PHP, ймовірно, перевіряє, чи існує глобал.

46. ​​Здається, що виклик методу не залежить від кількості методів, визначених у класі, оскільки я додав ще 10 методів до тестового класу (до і після методу тестування) без змін у продуктивності.

47. Методи в похідних класах працюють швидше, ніж визначені в базовому класі.

48. Виклик функції з одним параметром і порожнім тілом функції займає приблизно стільки ж часу, як і виконання 7-8 операцій $localvar++. Подібний виклик методу, звичайно, містить близько 15 операцій $localvar++.

49. Не все має бути ООП, часто це просто накладні витрати, кожен виклик методу та об'єкта споживає багато пам'яті.

50. Ніколи не довіряйте даним користувача, екрануйте рядки, які ви використовуєте в запитах SQL, використовуючи mysql_real_escape_string замість mysql_escape_string або додавання косих черт. Також зверніть увагу, що якщо увімкнено magic_quotes_gpc, спочатку слід використовувати смуги слеші.

51. Уникайте проблеми з введенням заголовка функції PHP mail().

52. Зніміть змінні бази даних (як мінімум пароль), він вам не знадобиться після того, як ви встановите з'єднання з базою даних.

53. RTFM! PHP пропонує фантастичний посібник, можливо, один з найкращих, що робить його дуже практичним, надає робочі приклади та розмовляє простою англійською.

Це деякі хитрощі та поради щодо PHP, які можуть бути дуже корисними для тих, хто тільки почав вивчати мову PHP, а також для тих, хто розвивається з гарного часу. Проте RTFM є найефективнішим способом вивчення PHP.

Айшвар Баббер

Айшвар Баббер — пристрасна блогерка та цифровий маркетолог. Він любить говорити та вести блог про останні технології та гаджети, що мотивує його бігати GizmoBase. Наразі він практикує свій досвід у сфері цифрового маркетингу, пошукової пошукової системи та оптимізації маркетингу як штатний маркетолог у різних проектах. Він є активним інвестором AffiliateBay і режисер в ImageStation.

22 думки про «50+ PHP хитрощів та порад для початківців та розробників»

  1. Чудова публікація, ці поради та підказки щодо php дуже допомагають усім новим розробникам php, і від нього я також отримав деякі поради та прийоми щодо php, яких я взагалі не знаю.

    відповісти
  2. Чудові поради, але я думаю, вам слід змінити пункт 37. Простий хеш md5 насправді недостатньо складний у світі, в якому ми живемо.

    відповісти
  3. № 15
    if/else швидше, ніж switch, ви праві, я зробив кілька тестів,
    але вам слід подумати, в якому випадку використовувати перемикач.

    Я пройшов цикл, перевіривши 10,1000,100000 і 1 мільйон циклів, і результат такий:
    за 100 тис. циклів ви отримуєте різницю в 0,13 с на локальній машині (на зовнішньому сервері ви повинні отримати менше різниці).

    Тому вам слід розглянути можливість використання перемикача if/else. Я віддаю перевагу використанню switch через більш чистий код. Використання 1 перемикача, 2 перемикача, навіть 100 перемикачів замість if/else… це не має значення, це безглуздо.

    відповісти
  4. № 26
    я проводжу тест зараз,
    з $i++ і ++$i

    це просто – число 26 не має сенсу, поки ви не захочете використовувати більше 10 мільйонів. циклів.
    А різниця?

    10 мільйонів циклів з $i++ 2.67448 с
    10mil циклів з ++$i 2.605528 с

    відповісти
  5. 24. (…) Спробуйте Smarty або Cache Lite.
    33. Не заважайте використовувати складні шаблонні системи, такі як Smarty

    ок.

    (Я б особисто просто видалив #33; smarty (або інші системи шаблонів) має багато переваг у порівнянні з функціями ob_…)

    відповісти
  6. Echo швидше, ніж друк за допомогою одного коду операції, тому це насправді не має значення. І print() — це функція, а echo — ні. Спробуйте це:

    $variable і надрукувати 'змінну встановлено!';

    І про збільшення: $i += 1; є найшвидшим.

    Чудова стаття, дякую!

    відповісти
  7. Чудова стаття, дякую за поширення
    Чудові поради, але я думаю, що вам слід змінити пункт 37. Простий хеш md5 насправді недостатньо складний у світі, в якому ми живемо.

    відповісти

Залишити коментар