Приклади написання коду wp. Як написати плагін для WordPress. Основні функції двигуна WordPress

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

Основні функції двигуна WordPress

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

Заголовок H1 у WordPress

У цій статті розглянемо, як уникнути дублювання заголовка першого рівня H1 WordPress. Є відоме правило, що заголовок першого рівня H1 повинен бути тільки один на сторінці, але більшість тем оформлення WordPress зроблено таким чином, що H1 ...

Створення віджетів WordPress

У цій статті йтиметься про створення власних віджетів WordPress. Розглянемо: створення віджету WordPress безпосередньо в темі оформлення, створення власного плагіна, який виводитиме віджет, відключення стандартних віджетів WordPress ...

Як очистити head у WordPress від непотрібного коду?

За промовчанням WordPress виводить код у head, який здебільшого не потрібен. У цій невеликій статті розглянемо, як позбутися зайвого сміття на сайті. Насамперед видалимо всі непотрібні посилання: RSS-стрічки, версію WordPress...

Безконфліктне підключення скриптів та стилів у WordPress

Безконфліктний метод необхідний з кількох причин: запобігає конфлікту при підключенні одного скрипту різними плагінами. При такому підключенні метод дозволяє об'єднати кілька файлів js в один і віддавати в стислому вигляді браузеру для оптимізації.

Всіх вебмастерів-початківців лякає і відштовхує робота з кодом - вони побоюються нашкодити своєму сайту, додаючи в нього HTML або PHP, вставивши його не в тому місце. Звичайно ж, якщо WordPress код поставити не туди, то можна і все зіпсувати. Однак ця CMS настільки добре ув'язнена під новачків, що помилитися буде складно.

У цій статті ми розглянемо як без ризику вставити в WordPress код HTML або PHP. Але для початку – навіщо це може стати в нагоді.

Навіщо вставляти у WordPress код

У вебмайстра протягом життя сайту може виникнути потреба встановити на WordPress код, який має виконуватися на сторінках. Це може знадобитися від різноманітних причин: наприклад, встановити лічильник відвідуваності, якийсь незвичайний віджет, додати шаблону індивідуальності.

WordPress пропонує два способи встановлення коду. Розглянемо їх.

Встановлення за допомогою віджету «Текст»

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

Віджет розкриється та можна буде заповнити його заголовок, а також помістити необхідний код у відповідне поле. Після натискання на кнопку «Зберегти» операція буде виконуватися на сторінках сайту.

Цей спосіб встановлення на WordPress коду підходить для виконання операцій на HTML, PHP і навіть JavaScript. Цей метод часто використовується, оскільки він легкий, і добре підходить новачкам.

Встановлення файлу

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

Щоб встановити на WordPress код безпосередньо у файл, потрібно знати, яку область сайту відповідає той чи інший файл. Тут не можна дати точних рекомендацій, оскільки у різних шаблонах різні файли виконують ті чи інші функції. Однак дещо про файли теми, ви можете дізнатися . Крім встановлення на WordPress коду у файл шаблону, це можна зробити і у файли CMS.

Щоб код WordPress скрізь був оформлений в одному стилі і зручно читався в ядрі, плагінах і темах, рекомендується дотримуватися стандартів написання коду, прийнятих розробниками WordPress. Ці стандарти дуже схожі на стандарт PEAR, однак є кардинальні відмінності. Рекомендую ознайомитись з ними і при створенні плагінів або тим, по можливості, їх дотримуватись.

Крім стандартів до написання самого коду PHP, також є стандарти документування коду - це коментарі до функцій та хуків: PHP Documentation Standards (англ.)

Одинарні та подвійні лапки

Якщо рядок немає змінних, використовуйте одинарні лапки, в інших випадках подвійні. Не потрібно екранувати лапки у рядку і якщо вони є, то рекомендується їх чергувати:

Echo "Link name"; echo "$linkname";

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

Відступи

Відступ повинен завжди показувати логічну структуру коду. Використовуйте табуляцію (клавіша Tab), а не прогалини – це дає більше гнучкості. Пробіли варто використовувати, коли потрібно вирівняти щось усередині рядка.

Правило:табуляція повинна бути використана на початку рядка для відступу, тоді як пробіли можуть бути використані в середині рядка для вирівнювання.

If (умова) ( $foo = "somevalue"; $foo2 = "somevalue2"; $foo_bar = "somevalue3"; $foo5 = "somevalue4"; )

А так код виглядає, якщо показати невидимі символи табуляції та пробілу:

If (умова) ( ---$foo.....= "somevalue"; ---$foo2....= "somevalue2"; ---$foo_bar.= "somevalue3"; ---$foo5 ....= "somevalue4";

Для асоціативних масивів значення повинні починатися з нового рядка. Рекомендується ставити «останню» ком при перерахуванні елементів масиву - так зручніше додавати нові елементи...

$my_array = array(---"foo"...=> "somevalue", ---"foo2"..=> "somevalue2", ---"foo3"..=> "somevalue3", -- -"foo34". => "somevalue3",);

Стиль фігурних дужок

Фігурні дужки повинні використовуватися для всіх блоків у стилі, як показано нижче:

If (умова) ( action1(); action2(); ) elseif (умова2 && умова3) ( action3(); action4(); ) else ( defaultaction(); )

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

Слід коментувати будь-який код, який інтуїтивно не зрозумілий.

Використовуйте фігурні дужки завжди, навіть якщо вони не потрібні.

If (умова) ( action0(); ) if (умова) ( action1(); ) elseif (умова2) ( action2a(); action2b(); ) foreach ($items as $item) ( process_item($item); )

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

$var = "dangerous""; // необроблені дані, які можуть бути екрановані або не екрановані $id = some_foo_number(); // дані очікуються як число, але ми не впевнені $wpdb->query($wpdb->prepare( "UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id));

%s використовується для рядків та %d для цілих чисел. Зверніть увагу, що вони не "в лапках"! $wpdb->prepare() сам екранує рядки і додає лапки, якщо треба. Перевага prepare() в тому, що не потрібно пам'ятати про ручне використання esc_sql() , а також, що рядок запиту з плейсхолдерами наочніший, ніж якщо б там використовувалися змінні обернені в esc_sql() .

Запити бази даних

Намагайтеся не писати прямих запитів до бази даних. Якщо є підходяща функція, а їх у WP багато, яка може отримати необхідні дані – використовуйте її.

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

Імена класів, функцій, файлів, констант, змінних

Імена функцій, змінних, хуків

Використовуйте малі літери a-z у змінних, хуках та назвах функцій і ніколи CamelCase . Розділяйте окремі слова нижнім підкресленням _. Не скорочуйте імена змінних без потреби; нехай код буде однозначним і самодокументованим.

Function some_name($some_variable) ([...])

Імена класів

Потрібно використовувати слова з заголовних_букв, розділені підкресленням. Будь-які скорочення (акроніми, абревіатури) повинні бути ПРОПИСНИМИ.

Class Walker_Category extends Walker ([...]) class WP_HTTP ([...])

Константи мають бути словами у ВЕРХНЬОМУ РЕЄСТРІ, розділені нижнім підкресленням:

Define("DOING_AJAX", true);

Назви файлів

Повинні бути зрозумілі і повинні також містити лише малі літери, а слова повинні розділятися дефісом - .

My-plugin-name.php

Назви файлів класів

Повинні бути засновані на імені класу з приставкою class- , підкреслення імені класу замінені дефісом, наприклад WP_Error стає:

Class-wp-error.php

Цей стандарт іменування файлів справедливий для всіх існуючих та нових файлів із класами. Однак існують файли виключення: class.wp-dependencies.php, class.wp-scripts.php, class.wp-styles.php. Ці файли мають префікс класу. , точка після слова class замість дефісу.

Зрозумілі значення змінних у параметрах функцій

Булева, переважні строкові значення. Тобто. замість true/false при виклику функцій краще використовувати якусь пояснювальну значення параметра рядок.

Поганий код:

Function eat($what, $slowly = true) (...) eat("mushrooms"); eat("mushrooms", true); // Що означає true? eat("dogfood", false); // що означає false, протилежність true?

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

Гарний код:

Function eat($what, $speed = "slowly") (...) eat("mushrooms"); eat("mushrooms", "slowly"); eat("dogfood", "quickly");

Коли потрібно більше параметрів, використовуйте масив $args . Він навіть кращий!

Дуже хороший код:

Function eat($what, $args) ( ... ) eat("noodles", array("speed" => "moderate"));

Інтерполяція для імен динамічних хуків

Для зручності читання та виявлення, хуки зі змінними в назві повинні бути інтерполіровані (укладені у фігурні дужки ( і )), і не повинні конкатенуватися:

Дужки потрібні, щоб PHP міг коректно аналізувати типи змінних даних в інтерполірованому рядку.

// правильно do_action("($new_status)_($post->post_type)", $post->ID, $post); // неправильно do_action($new_status ."_". $post->post_type, $post->ID, $post);

Там, де це можливо, динамічні значення в іменах тегів мають бути максимально короткими і точними. $user_id набагато зрозуміліше, ніж, скажімо, $this->id .

Тернарний оператор

Тернарні оператори хороші, але в них рекомендується завжди перевіряти правдиве твердження, а не хибне. Інакше він просто вводить в оману через подвійне заперечення. Виняток – це використання! empty() , тому що інакше іноді просто складно записати.

Як потрібно перевіряти:

// (якщо умова виконується = true)? (то робимо це): (інакше це); $music_type = ("jazz" == $music) ? "cool": "blah"; // (Якщо значення не порожнє -! Empty)? (то робимо це): (інакше це);

Як не слід писати:

// (Якщо умова не виконується! = true)? (то робимо це): (інакше це); $music_type = ("jazz" != $music) ? "blah": "cool";

Умови магістра Йоди

При виконанні логічних порівнянь завжди ставте константи або літерали - зліва, а змінну - праворуч.

If (true == $the_force) ( $victorious = you_will($be); )

Якщо пропустити другий знак = у наведеному прикладі (признатися, це відбувається навіть із найдосвідченішими з нас), то ми отримаємо помилку PHP і відразу її побачимо, тому що код не працюватиме. А от якби конструкція була зворотною - $the_force = true , то умова завжди буде виконуватися і жодної помилки ми не побачимо, і можемо пропустити такий серйозний баг, який до того ж іноді важко відловити!

До такого «перевернутого» написання потрібно просто звикнути.

Це стосується і == , != , === і!== . «Умови Йоди» для< , > , <= или >значно важче читати і тут їх краще не використовувати.

Розумний код

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

Isset($var) || $var = some_function(); // або! isset($var) && $var = some_function();

Так - це крутий запис, видно що зробив її досвідчений програміст. Але будь-якому іншому розробнику, а часто навіть і автору, для того, щоб розібратися в такому записі, потрібно трохи вникати і витратити зайві секунди або хвилини. Це не очевидний і не зрозумілий запис і його потрібно уникати, і краще його записати довше, але зрозуміліше:

If (! isset($var)) ( $var = some_function(); )

Оператор придушення помилок @

PHP підтримує один оператор керування помилками: знак @. У випадку, якщо він передує будь-якому виразу в PHP-коді, будь-які повідомлення про помилки, що генеруються цим виразом, будуть проігноровані.

У той час як цей оператор існує в ядрі, він часто використовується тому що ліньки нормально обробити змінну. Його використання наполегливо не рекомендується, тому що навіть PHP документація заявляє:

Увага: На сьогоднішній день оператор "@" пригнічує виведення повідомлень навіть про критичні помилки, що переривають роботу скрипту. Окрім іншого, це означає, що якщо ви використовували "@" для придушення помилок, що виникають під час роботи будь-якої функції, якщо вона недоступна або написана неправильно, подальша робота скрипта буде зупинена без будь-яких повідомлень.

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

#button ( font-weight: bold; border: 2px solid #fff; )

Щоб отримати результат, аналогічний наведеному вище фрагменту, вставте свій код у ці теги:

Ваш код

Параметр «language» визначає мову та правила підсвічування синтаксису. Підтримуються такі значення:

  • actionscript3
  • coldfusion
  • csharp
  • delphi
  • erlang
  • fsharp
  • groovy
  • javascript
  • javafx
  • matlab
  • powershell
  • python
  • scala

Якщо значення «language» не встановлено, використовується значення «text» (без підсвічування синтаксису).
Код між тегами code буде автоматично закодований для відображення, тому вам не варто турбуватися про елементи HTML або про щось подібне.

Параметри конфігурації

Теги також підтримують безліч параметрів конфігурації, які можна використовувати для налаштування зовнішнього вигляду. Їхнє застосування зовсім необов'язкове.

  • autolinks (true/false) — Кожна URL-адреса в коді відображається як гіперпосилання. Значення за промовчанням: true.
  • collapse (true/false) — Якщо встановлено значення true, область коду буде згорнута під час завантаження сторінки. Для того, щоб розгорнути її, потрібно буде клацнути по ній. Це корисно для великих фрагментів коду. За промовчанням встановлено значення false.
  • firstline (номер) - Визначає, з якого числа починається нумерація рядків. Значення за промовчанням: 1.
  • gutter (true/false) — Якщо встановлено значення false, номери рядків будуть приховані. Значення за промовчанням: true.
  • highlight (номери, розділені комами) — Номери рядків, які будуть виділені, наприклад, «4,7,19».
  • hmtlscript (true/false) — Якщо встановлено значення true, підсвічується HTML/XML-код. Це корисно при публікації змішаного коду, наприклад PHP всередині HTML. Працює лише з деякими мовами. Значення за промовчанням: false.
  • light (true/false) — Якщо встановлено значення true, номери рядків та панель інструментів будуть приховані. Це корисно при розміщенні фрагмента коду з одного-двох рядків. Значення за промовчанням: false.
  • padlinenumbers (true/false/ціле число) — Дозволяє контролювати доповнення номерів рядків нулями. Значення true задає автодоповнення, значення false відключає доповнення, число задає фіксовану кількість знаків номерів рядків.
  • toolbar (true/false) — Якщо встановлено значення false, панель інструментів з кнопками не відображатиметься при наведенні на код. Значення за промовчанням: true.
  • wraplines (true/false) — Якщо встановлено значення false, буде вимкнено перенесення рядків. За наявності довгих рядків з'явиться горизонтальна смуга прокручування.
  • title (рядок) – заголовок для коду. Може бути корисним у поєднанні з параметром collapse.

Приклади використання вищеописаних параметрів:

Цей рядок не виділено. Цей рядок виділено. Цей рядок виділено. Цей рядок не виділено. Це короткий фрагмент коду із доповненням номерів рядків нулями до 4 знаків. //У цьому прикладі відключено перенесення рядків. Щоб прочитати текст повністю, вам доведеться скористатися смугою прокручування. Крім того, в цьому прикладі відключено нумерацію рядків і заховано панель інструментів.

А це фрагмент коду більший. Тут вибрано мову PHP та виділено рядок номер 12.

WordPress.com Code Example

WordPress.com Code Example

Цей рядок виділено. Очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-дуже рядок.
Це is example of smart tabs.
WordPress.com

Подяки
Для реалізації цієї можливості використовується проект SyntaxHighlighter (автор Alex Gorbatchev). Користувачі можуть встановити відповідний

Читабельність коду – це дуже хвора тема, і їй потрібно приділяти належну увагу. У цій статті ви дізнаєтесь про 16 прийомів, які допоможуть вам просунутися у цій темі.

1. Коментарі та Документація

IDE стають дедалі популярнішими у світі розробників, т.к. вони надають зручні інструменти для коментування та документування коду.

Ось приклад:

Ось ще приклад виклику власного методу:

У цьому прикладі стиль коментування заснований на PHPDoc, а IDE, якою я користуюся, - Aptana.

2. Відступи

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

Function foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Function foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Function foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Особисто я найчастіше використовую стиль номер #2, але іноді переходжу на #1. Але це все, звичайно ж, справа смаку. Швидше за все не існує найкращого стилю, який підійшов би абсолютно всім. Цим правилам, насамперед, слід дотримуватися тих, хто працює в команді або бере участь у написанні відкритих проектів.

Також існують стилі, які поєднують деякі характеристики. Наприклад, стандарти написання коду PEAR , де фігурна дужка "( " в умовних операторах залишається тому ж рядку, а функціях переноситься.

Стиль PEAR:

Function foo() ( // на новому рядку if ($maybe) ( // на тому ж рядку do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Також слід зазначити, що в цьому стилі замість табів використовуються 4 пробіли.

Ви зможете дізнатися більше про різні стилі.

3. Уникайте зайвих коментарів

Так, коментування коду – це добре; Але тут не потрібно переборщувати. Ось приклад:

// Отримуємо код країни $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); // якщо країна US if ($country_code == "US") ( // відобразити форму echo form_input_state(); )

Якщо робота коду очевидна, то, швидше за все, не слід писати зайві коментарі.

Якщо вже немає, то можна їх трохи скоротити:

// Відобразити форму, якщо країна US $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); if ($country_code == "US") ( echo form_input_state(); )

4. Групування коду

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

Ось простий приклад:

// Отримати список форумів $forums = array(); $r = mysql_query("SELECT id, name, description FROM forums"); while ($d = mysql_fetch_assoc($r)) ( $forums = $d; ) // завантажити шаблон load_template("header"); load_template("forum_list", $forums); load_template("footer");

Якщо ви додасте коментар перед початком кожного блоку, це ще більше покращить читабельність вашого коду.

5. Схема іменування

Іноді навіть у мові PHP можна знайти протиріччя назви функцій. І ось численні приклади:

  • strpos() проти str_split()
  • imagetypes() проти image_type_to_extension()

Існує кілька популярних стилів:

  • camelCase: перша літера кожного нового слова заголовна.
  • underscores: Підкреслення між словами: mysql_real_escape_string().

Якщо змішувати ці техніки, то рано чи пізно можна потрапити у незручну ситуацію. Якщо ви працюєте над проектом, в якому застосовується одна з цих технік, то вам треба наслідувати їх приклад. Досі може залежати від мови програмування. Наприклад, більшість Java розробників використовують camelCase а PHP розробники віддають перевагу underscores.

Але й тут не обійшлося без гібриду. Деякі розробники використовують підкреслення в іменуванні класів і методів (поза класами), а в інших випадках використовують camelCase:

Class Foo_Bar ( public function someDummyMethod() ( ) ) function procedural_function_name() ( )

Ще раз скажу, що найкращого стилю не буває. Просто потрібно чогось дотримуватись.

6. Принцип DRY

DRY (Don't Repeat Yourself) - не повторюйся. Також відомо як DIE: Дублювання - це зло.

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

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

$this->load->view("includes/header"); $this->load->view($main_content); $this->load->view("includes/footer");

7. Уникайте глибокої вкладеності

Читабельність коду різко зменшується, якщо у вас є глибока вкладеність.

Function do_stuff() ( // ... if (is_writable($folder)) ( if ($fp = fopen($file_path,"w"))) ( if ($stuff = get_some_stuff()) ( if (fwrite($) fp,$stuff)) ( // ... ) else ( return false; ) ) else ( return false; ) ) else ( return false ; ) ) else ( return false ; ) )

Для того, щоб виправити ситуацію, вам слід переглянути принцип роботи вашого коду та оптимізувати його:

Function do_stuff() ( // ... if (!is_writable($folder)) ( return false; ) if (!$fp = fopen($file_path,"w")) ( return false; ) if (!$stuff = get_some_stuff()) ( return false; ) if (fwrite($fp,$stuff)) ( // ... ) else ( return false; ) )

8. Ліміт довжини рядка

Всім відомо, що процес читання стає набагато приємнішим, коли текст розбитий на колонки. Це головна причина, через яку наші газети виглядають саме так:

Подібну техніку можна застосувати і до нашого коду:

// погано $my_email->set_from(" [email protected]")->add_to(" [email protected]")->set_subject("Methods Chained")->set_body("Some long message")->send(); // добре $my_email ->set_from(" [email protected]") -> add_to(" [email protected]") ->set_subject("Methods Chained") ->set_body("Some long message") ->send(); (users.id, user_posts.user_id) WHERE post_id = "123""; // погано $query = "SELECT id, username, first_name, last_name, status FROM users LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHERE post_id = "123"";

Більшість розробників дотримуються ліміту 80 і 120 символів.

9. Організація Файлів та Папок

Технічно ви можете помістити весь код вашої програми в один файл:) Але що ви робитимете, коли треба буде щось змінити або додати.

Пам'ятаю свої перші проекти, де я приєднував файли. Однак організація у мене сильно шкутильгала. Я створював папку "inc", в якій мав кілька файлів: db.php і functions.php. У процесі написання програми ця папка пухла і пухла і зрештою було важко зрозуміти що де.

Щоб вирішити цю проблему краще користуватися різними фреймворками або хоча б дотримуватися їх структури. Ось так виглядає проект на CodeIgniter:

10. Назви змінних

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

Давайте розглянемо кілька прикладів:

// $i для циклів for ($i = 0; $i< 100; $i++) { // $j для вложенных циклов for ($j = 0; $j < 100; $j++) { } } // $ret для возвращаемых переменных function foo() { $ret["bar"] = get_bar(); $ret["stuff"] = get_stuff(); return $ret; } // $k и $v для foreach foreach ($some_array as $k =>$v) ( ) // $q, $r і $d для mysql $q = "SELECT * FROM table"; $ r = mysql_query ($ q); while ($d = mysql_fetch_assocr($r)) ( ) // $fp до роботи з файлами $fp = fopen("file.txt","w");

11 - Пишіть ключові слова в SQL великими літерами

Більшість веб-додатків взаємодіють з базами даних. Якщо ви самі пишите SQL запити, їх теж потрібно оформляти відповідним чином... Тут нічого складного немає. Просто пишіть ключові слова великими літерами.

12. Розділяйте код та дані

Це ще один принцип, який допоможе вам писати більш зрозумілі програми. Він полягає в тому, щоб ви готували дані в одному місці (допустимі моделі), а взаємодіяли з ними в іншому.

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

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

Популярні PHP Фреймворкі:

Системи Шаблонів:

Популярні CMS

13. Спеціальний синтаксис для шаблонів

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

А ось і приклад:

Hello, username; ?>
|

My Message Board

title; ?>

Forums as $forum): ?>

id, $forum->title) ?> (Threads->count(); ?> threads)

description; ?>

Така техніка дозволить вам уникнути зайвих дужок. Також такий код успішно вписується в HTML контекст.

14. Процедуральний та об'єктно орієнтований підходи

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

Об'єкти чудово підходять для представлення даних. Приклад:

Class User ( public $username; public $first_name; public $last_name; public $email; public function __construct() ( // ... ) public function create() ( // ... ) public function save() ( / / ... ) public function delete() ( // ... ) )

Процедуральні методи мають свою специфічну користь.

Function capitalize($string) ( $ret = strtoupper($string); $ret .= strtolower(substr($string,1)); return $ret; )

15. Читайте Open Source Код

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

16. Рефакторинг

Рефакторинг – це зміна коду без втрати функціональності. Його також можна застосовувати для покращення читабельності. Тут немає місця виправленню багів або додавання функціональності. Ви просто трохи змінюєте структуру коду.

Сподіваюся, ця стаття була вам корисною! Я щось упустив? Поділіться вашим досвідом!