10 правил PHP-майстрів

32

Від Автора:

PHP так широко поширений і загальноприйнятий, що вже стало надто легко знайти скрипт або фрагмент, що виконує в точності те, що вам потрібно. До нещастя, не існує фільтра, який визначає, що є «хорошою практикою», а що, ну… не так вже добре при написанні PHP-скрипта. Нам потрібні заслуговують довіри джерела, які довели, що дають тверді знання про кращих практиках PHP.

Нам потрібні PHP-майстра, щоб показати найкращі правила висококласного програмування в PHP.

1. Користуйтеся PHP тільки тоді, коли це потрібно – Расмус Лердорф (Rasmus Lerdorf)

Немає кращого джерела, ніж сам творець PHP, щоб дізнатися, на що він здатний. Расмус Лердорф створив PHP в 1995р. З тих пір поширився мову з надприродною швидкістю в співтоваристві розробників, попутно змінюючи обличчя Інтернету. Однак Расмус створював PHP не з цими намірами. PHP створювався для потреб веб-розробки.

Як і у випадку з багатьма іншими проектами з відкритим вихідним кодом, що стали популярними, філософія або навіть самозакоханість ніколи не були рушійною силою. Це був чистісінький випадок потреби в інструменті для вирішення глобальних проблем, пов’язаних з Мережею. У 1994р., коли мова заходила про інструменти розробки Мережі, вибір був досить обмежений.

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

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

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

10 правил PHP-майстрів

2. Використовуйте безліч таблиць в PHP і mySQL для масштабованості – Метт Малленвег (Matt Mullenweg)

Немає потреби сумніватися в компетентності Метта Малленвега в PHP. Він (разом з спільнотою користувачів) розробив найпопулярнішу блоговую систему на світі: WordPress. Після створення wordpress’а Метт і компанія запустили зоряний WordPress.com, безкоштовний блоговый сайт, заснований на платфоме WordPress MU для декількох блогів. У даний момент WordPress.com підтримує більше 4 мільйонів блогів, а їх користувачі сьогодні написали більше 140 000 постів.

Якщо хто і знає, як масштабуються вебсайти, то це Метт Малленвег. У 2006р. Метт надав можливість розглянути внутрішню структуру баз даних wordpress’а і пояснив, чому в WordPress MU для кожного блогу використовується окрема таблиця mySQL, замість застосування однієї гігантської загальної таблиці для всіх блогів.

Ми тестували такий підхід для MU, і виявили, що масштабування стає занадто дорогим, починаючи з деякого моменту. З монолітними структурами ви упираєтеся в стіну, побудовану з можливостей устаткування. В MU користувачі розмежовані і можуть бути легко розділені, наприклад, на WordPress.com користувачі розподіляються по 4096 баз даних, що дозволяє дуже легко і раціонально масштабувати сотні тисяч і навіть мільйони користувачів, забезпечуючи екстремально високий рівень трафіку.

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

10 правил PHP-майстрів

3. Ніколи-ніколи не довіряйте своїм користувачам – Дейв Чайлд (Dave Child)

Дейв Чайлд – вигадник (хі-хі!), що стоїть за нещодавно перейменованим Added Bytes (колишній ilovejackdaniels.com), вебсайтом, який містив в собі чудові шпаргалки Дейва для багатьох мов програмування. Дейв працював на багато компанії-розробники у Великобританії і зміцнив своє становище авторитету в світі програмування.

Дейв пропонує мудру пораду з приводу написання безпечного коду PHP: Не довіряйте своїм користувачам. Вони можуть вас засмутити.

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

Дейв продовжує давати особливі приклади здійснення безпеки на практиці в частинах один, два і три своєї серії публікацій ‘Написання безпечного PHP’. А його остаточний вердикт звучить так:

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

10 правил PHP-майстрів

4. Приділіть увагу PHP-кешуванню – Бен Больбо (Ben Balbo)

Бен Больбо писав для Site Point, дуже шанованого сайту-підручника для нашого брата – розробника і дизайнера. Він полягає в комісії як Мельбурнської групи користувачів PHP, так і Клубу розробників проектів з відкритим вихідним кодом, так що він дещо знає про мову. Не дивно, що спираючись на своє минуле як PHP розробника і інструктора, він рекомендує приділити трохи більше уваги і підготовки PHP-кешуванню.

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

У PHP існує безліч технік кешування і Бен зачіпає в статті кілька найбільших, таких як:

Кешування викликів функцій

Установка заголовків expiry

Кешування закачування файлів IE (Internet Explorer)

Кешування шаблонів

Cache_Lite

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

10 правил PHP-майстрів

5. Прискорюйте розробку PHP за допомогою IDE, шаблонів і фрагментів – Чед Киффер (Chad Кіффер)

Коли Чед Киффер не зайнятий поліпшенням користувальницьких інтерфейсів і управлінням базами даних, він дає поради експерта у своєму блозі 2 tablespoons. З-за своїх широких можливостей і професійного досвіду, Чод часто може бачити загальну картину, яку інші програмісти можуть і не розгледіти, особливо коли справа стосується цілісного підходу, яким користується Чед в розробці веб-сайтів. Він фахівець у всіх аспектах процесу розробки, так що будь-яка здатність проникати в суть, якої він ділиться, може виявитися корисною в процесі складання проекту в одне ціле.

Чед вважає, що використання IDE начебто Eclipse PDT (пакета для розробки на PHP в Eclipse) з сумішшю шаблонів і фрагментів дійсно може прискорити цикл розробки в проекті.

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

Здоровий глузд говорить, що кожен раз, коли можна автоматизувати завдання, можливо побачити проект готовим швидше. Те ж вірно щодо теорії Дена. Витративши час на створення шаблонів, які можна використовувати знову і знову, ви заощадите купу часу, автоматизувавши повторювані частини коду.

Використовуючи IDE начебто Eclipse і пакет PDT, ви виявите, що час розробки виразно прискориться. IDE буде автоматично закривати дужки, додавати відсутні крапки з комами, і навіть дозволить вам виправляти неполадки в текстовому редакторі, без необхідності викладання на сервер.

(У Чеда є відмінний підручник про початок роботи з Eclipse PDT і переваги IDE загалом, якщо цікавить.)

10 правил PHP-майстрів

6. Покращуйте функції фільтрування PHP – Джої Сочеки(Joey Sochacki)

Так як Джої Сочеки, може бути, не таке велике ім’я, як Метт Малленвег (Matt Mullenweg) у співтоваристві PHP, він бувалий веб-розробник і ділиться з нами радами, почерпнутими на цьому шляху, у своєму блозі Devolio.

Джої виявив, що хоча при написанні коду PHP повинна проводитися купа фільтрації, деякі програмісти користуються функціями фільтрації PHP.

Фільтрація даних. Нам усім доводиться це робити. Більшість, якщо не всі з нас, ставляться до нього з презирством. Однак невідомими більшості залишаються функції фільтрації PHP, які дозволяють виробляти всякого роду фільтрацію і перевірку правильності (validation). Користуючись функціями PHP filter_*, можна перевіряти правильність та «стерилізувати» дані, ДО и, адреси електронної пошти, IP-адреси, відсікати неприпустимі символи та багато іншого, порівняно легко.

Фільтрація може бути заплутаною, але це керівництво здатне дуже допомогти. З допомогою Джої ви дізнаєтеся, як встановити фільтри і просіяти практично всі, користуючись перевагами можливостей фільтрації надаються PHP.

10 правил PHP-майстрів

7. Користуйтеся фреймворком PHP – Джош Шарп (Josh Sharp)

З приводу того, чи фреймворк PHP типу Zend, CakePHP, Code Igniter, або будь-який інший, сперечалися завжди. У його використанні є свої позитивні і негативні аспекти, і багато розробники мають власну думку про те, йти по цьому шляху чи ні.

Джош Шарп – веб-розробник, який заробляє собі на хліб з маслом, створюючи вебсайти для клієнтів. Ось чому ви повинні йому вірити, коли він говорить, що використання фреймворку PHP — відмінний спосіб заощадити час і усунути помилки під час програмування. Чому? Джош вважає, тому, що PHP дуже легко вивчити.

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

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

10 правил PHP-майстрів

8. Не користуйтеся фреймворком PHP Расмус Лердорф (Rasmus Lerdorf)

На противагу думку Джоша про те, що потрібно використовувати фреймворк PHP Расмус Лердорф, сам хрещений батько PHP, вважає, що фреймворки не так вже хороші. Чому? Тому що вони виконують операції набагато повільніше, ніж простий PHP.

Під час своєї презентації на Drupalcon 2008 Расмус порівняв час відповіді на PHP-сторінку за допомогою простого прикладу «Hello World», з кількома фреймворками PHP (слайди 24-32) і показав, що фреймворки PHP набагато повільніше, ніж прямий PHP.

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

10 правил PHP-майстрів

9. Використовуйте пакетну обробку даних – Джек Д. Херрингтон (Jack D. Herrington)

Джек Херрингтон знайомий з PHP і сферою розробки. Слідом за написанням більше 30 статей для престижного IBM developerWorks, Джек також опублікував книги з програмування, такі як «PHP Hacks». Джек – справжній знавець.

Херрингтон рекомендує використовувати пакетну обробку даних і cron (прим. перекл. – планувальник завдань), для складних завдань, які можуть оброблятися у фоновому режимі. Користувачі мережі не бажають довго чекати завершення завдань через веб-інтерфейс. Робота, яка займає багато часу, більше підходить для виконання у фоновому режимі.

Природно, у ряді випадків трохи легше запустити допоміжний потік для обробки невеликих завдань. Але легко помітити, що при використанні традиційних інструментів – cron, MySQL, стандартний об’єктно-орієнтований PHP і Pear::DB – пакетні завдання в додатках PHP просто створювати, легко розгортати нескладно супроводжувати.

Джек вірить в простоту і, замість використання організації потокової обробки на серверах, користується простою комбінацією крона, PHP і MySQL для обробки завдань у фоновому режимі.

Я пробував все і вважаю, що крон має перевагу принципу «Keep It Simple, Stupid» (KISS) («Роби все просто, придурок»). Він робить фонову обробку простий. Замість багатопотокового додатку обробки завдань, яке виконується постійно і, таким чином, не повинно мати витоків пам’яті, у вас є простий скрипт пакетної обробки даних, який запускає крон. Скрипт визначає, чи є щось, що потрібно зробити, робить це і потім завершує роботу. Не потрібно хвилюватися про втрату пам’яті. Не потрібно хвилюватися про «захлебывании» (stalling) потоків або можливості попадання в нескінченний цикл.

10 правил PHP-майстрів

10. Негайно ввімкніть сповіщення про помилки – Девід Каммінгс (David Cummings)

Девід Каммінгс управляє власною софтової компанією, яка спеціалізується на системах управління контентом і виграла кілька премій. Якщо хто і знає, як раціонально розробити додаток PHP, так це Дейв.

Девід написав статтю на SitePoint про двох хитрощі PHP, які він хотів би знати в самому початку. Одна з них: Негайно увімкніть сповіщення про помилки. Це заощадить багато часу за тривалий період.

Єдина найважливіша річ, про яку я кажу людям, що використовують PHP, це увімкнути сповіщення про помилки на максимальний рівень. Чому я хотів би це зробити? Як правило, сповіщення про помилки встановлено на рівень, який приховує безліч дрібниць, таких як:

Передчасне оголошення змінної.

Звернення до змінної, недоступною в цьому сегменті коду, або

Використання визначення, яке не було встановлено

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

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

10 правил PHP-майстрів

Переклад і редакція: Ріг Віктор і Андрій Бернацький. Команда webformyself.

E-mail: [email protected]

Проект webformyself.com — Як створити свій сайт. Основи самостійного сайтобудування

P. S. Хочете опублікувати цікавий тематичний матеріал і заробити? Якщо відповідь «Так», то тисніть сюди.