Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версій Попередня ревізія Наступна ревізія | Попередня ревізія | ||
|
codingguidelines [2023/06/17 13:38] nightfly [Іменування методів і функцій] |
codingguidelines [2025/09/26 15:14] (поточний) pautina |
||
|---|---|---|---|
| Рядок 29: | Рядок 29: | ||
| <file ini php.ini> | <file ini php.ini> | ||
| - | post_max_size | + | magic_quotes_gpc |
| - | upload_max_filesize | + | magic_quotes_runtime |
| + | magic_quotes_sybase = Off | ||
| + | date.timezone=" | ||
| display_errors = On | display_errors = On | ||
| Рядок 37: | Рядок 39: | ||
| log_errors_max_len = 1024 | log_errors_max_len = 1024 | ||
| report_memleaks = On | report_memleaks = On | ||
| - | track_errors = On | ||
| html_errors = On | html_errors = On | ||
| - | ліміт_пам' | + | memory_limit |
| + | max_input_vars = 50000 | ||
| + | |||
| + | post_max_size = 64M | ||
| + | upload_max_filesize = 64M | ||
| </ | </ | ||
| Рядок 45: | Рядок 50: | ||
| Щодо memory_limit, | Щодо memory_limit, | ||
| - | Також ваш код має працювати з **error_reporting(E_ALL)**. Якщо з якихось причин він вимагає // | + | Також ваш код має працювати з **error_reporting(E_ALL)**. Якщо з якихось причин він вимагає // |
| Рядок 56: | Рядок 61: | ||
| ==== PHP-теги ==== | ==== PHP-теги ==== | ||
| - | PHP-код обов' | + | PHP-код обов' |
| Рядок 83: | Рядок 88: | ||
| Щодо скорочених AND (&& | Щодо скорочених AND (&& | ||
| - | На тему табів, відступів та іншого - більшість розробників використовує IDE NetBeans і рефлекторно натискає **Alt+Shift+F** для автоматичного форматування коду. | + | На тему табів, відступів та іншого - більшість розробників використовує IDE NetBeans |
| - | ==== Іменування змінних | + | ==== Іменування змінних |
| + | Постарайтеся, | ||
| - | Постарайтеся, | + | Приклади |
| - | Приклади гарного іменування змінних: | ||
| <code php> | <code php> | ||
| - | $allCities = array(); // очевидно, | + | $allCities = array(); // очевидно, |
| - | $allUserData = zb_UserGetAllDataCache(); | + | |
| + | $allUserData = zb_UserGetAllDataCache(); | ||
| $totalUsers = 666; // дуже схоже на лічильник якихось користувачів, | $totalUsers = 666; // дуже схоже на лічильник якихось користувачів, | ||
| + | |||
| $switchesCount = 12; // лічильник світчів, | $switchesCount = 12; // лічильник світчів, | ||
| - | $result = 'some string here'; // так, зрозуміло що це результат чогось, | + | |
| + | $filteredDevices=array(); | ||
| + | |||
| + | $result = 'some string here'; // так, зрозуміло що це результат чогось, | ||
| </ | </ | ||
| - | І ось у якому вигляді категорично не хочеться бачити роботу зі змінними та їх іменуванням: | + | І ось у якому вигляді |
| <code php> | <code php> | ||
| $a=$b+$c; | $a=$b+$c; | ||
| + | |||
| $huitka=132/ | $huitka=132/ | ||
| + | |||
| $LOLIMHERE=SOMESHIT666(); | $LOLIMHERE=SOMESHIT666(); | ||
| + | |||
| $f_ar_type_data=12; | $f_ar_type_data=12; | ||
| + | |||
| $obj1=$obj2; | $obj1=$obj2; | ||
| </ | </ | ||
| - | Винятком для односкладового і простого іменування змінних є загальноприйняті | + | Винятком для однобуквового і простого іменування змінних є загальноприйняті |
| <code php> | <code php> | ||
| - | $i = 0; // стандартний інкрементний або декрементний лічильник | + | $i = 0; // стандартний інкрементний або декрементний лічильник, ну там для $i++, наприклад. |
| $total = 0; // загальний лічильник чогось що ми рахували раніше | $total = 0; // загальний лічильник чогось що ми рахували раніше | ||
| $count = 0; // приблизно те ж саме за духом | $count = 0; // приблизно те ж саме за духом | ||
| $all = array(); // масив з якимось набором даних, який ми будемо потім перебирати | $all = array(); // масив з якимось набором даних, який ми будемо потім перебирати | ||
| + | |||
| // Конструкції виду $io => $each є для нас надтиповими на проходах масивів | // Конструкції виду $io => $each є для нас надтиповими на проходах масивів | ||
| foreach ($all as $io => $each) { | foreach ($all as $io => $each) { | ||
| Рядок 128: | Рядок 145: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | А ось взагалі дуже [[https:// | ||
| ==== Іменування класів та об' | ==== Іменування класів та об' | ||
| Рядок 139: | Рядок 158: | ||
| public function __construct() { | public function __construct() { | ||
| $this-> | $this-> | ||
| - | } | ||
| - | |||
| - | public function renderList() { | ||
| - | ..... | ||
| } | } | ||
| Рядок 149: | Рядок 164: | ||
| } | } | ||
| | | ||
| + | public function renderList() { | ||
| + | ..... | ||
| + | } | ||
| + | |||
| protected function save() { | protected function save() { | ||
| ..... | ..... | ||
| Рядок 169: | Рядок 188: | ||
| Приклад: | Приклад: | ||
| + | |||
| <code php> | <code php> | ||
| // так, відноситься до роботи з " | // так, відноситься до роботи з " | ||
| + | |||
| function zb_AddressChangeCityName($cityid, | function zb_AddressChangeCityName($cityid, | ||
| ... | ... | ||
| Рядок 220: | Рядок 241: | ||
| ==== Іменування аргументів методів і функцій ==== | ==== Іменування аргументів методів і функцій ==== | ||
| - | див. | + | див. |
| ==== Іменування опцій у конфігах ==== | ==== Іменування опцій у конфігах ==== | ||
| - | Просто зазирніть у файли конфігурації типу [[alteriniconf|alter.ini]] і усвідомте, | + | |
| + | Просто зазирніть у файли конфігурації типу [[alteriniconf|alter.ini]] і усвідомте, | ||
| Приклад того, як це має виглядати: | Приклад того, як це має виглядати: | ||
| Рядок 235: | Рядок 257: | ||
| ==== Збереження Legacy ==== | ==== Збереження Legacy ==== | ||
| - | **Щодо збереження легасі на рівні передбачуваності поведінки системи**: | ||
| - | **З приводу збереження легасі на рівні коду**: на даний момент, | + | **Щодо збереження легасі на рівні передбачуваності поведінки системи**: |
| + | |||
| + | **З приводу збереження легасі на рівні коду**: на даний момент, | ||
| <code php> | <code php> | ||
| Рядок 247: | Рядок 270: | ||
| І використовуйте старий і загалом зручний формат оголошення масивів у вигляді | І використовуйте старий і загалом зручний формат оголошення масивів у вигляді | ||
| + | |||
| <code php> | <code php> | ||
| $userStates = array( | $userStates = array( | ||
| Рядок 254: | Рядок 278: | ||
| </ | </ | ||
| - | Ні, це не стосується використання автоінкрементних квадратних дужок у масивах, | + | Ні, це не стосується використання автоінкрементних квадратних дужок |
| <code php> | <code php> | ||
| $data[] = $userLink; | $data[] = $userLink; | ||
| Рядок 263: | Рядок 288: | ||
| Також не використовуйте функціонал, | Також не використовуйте функціонал, | ||
| - | У разі, якщо вам потрібно змінити наявний код, що вже працює, | + | У разі, якщо вам потрібно змінити наявний код, що вже працює, |
| Якщо ви пишете щось поруч з існуючим кодом, що в основному повторює його функціональність, | Якщо ви пишете щось поруч з існуючим кодом, що в основному повторює його функціональність, | ||
| Рядок 269: | Рядок 294: | ||
| ==== Коментування коду ==== | ==== Коментування коду ==== | ||
| - | Коментування функцій і методів - **суворо обов' | + | Коментування |
| <code php> | <code php> | ||
| + | |||
| + | /** | ||
| + | * Implementation of funeral services with graves management | ||
| + | */ | ||
| + | |||
| class UbillingFuneralServices { | class UbillingFuneralServices { | ||
| Рядок 396: | Рядок 426: | ||
| ==== Локалізація ==== | ==== Локалізація ==== | ||
| - | З огляду на те, що Ubilling використовується на території різних країн, де використовуються різні мови, подбайте про те, щоб ваш код можна було легко локалізувати. Тобто під час виведення будь-яких написів, | + | |
| + | З огляду на те, що Ubilling використовується на території різних країн, де використовуються різні мови, подбайте про те, щоб ваш код можна було легко локалізувати. Тобто під час виведення будь-яких написів, | ||
| ==== Логування ==== | ==== Логування ==== | ||
| - | Під час запису подій у загальний системний лог, за допомогою log_register() або будь-якими іншими способами, | ||
| + | Під час запису подій у загальний системний лог, за допомогою log_register() або будь-якими іншими способами, | ||
| * (логін користувача) | * (логін користувача) | ||
| * {логін адміністратора} | * {логін адміністратора} | ||
| - | * < | + | * < |
| * [цифровий ID чого-небудь] | * [цифровий ID чого-небудь] | ||
| - | * `якесь | + | * `якесь рядкове значення` |
| Хороший приклад: | Хороший приклад: | ||
| Рядок 422: | Рядок 453: | ||
| ==== Документування змін ==== | ==== Документування змін ==== | ||
| - | Якщо у вас є доступ до редагування цієї wiki - документуйте зміни внесені вами. Як мінімум варто додати відомості про те, що ви щось зробили в [[changelog|Чейнджлог]]. Кінцеві користувачі повинні знати, як змінитися їхнє життя в майбутньому. Зміни, які не видимі кінцевому користувачеві і ніяк не впливають на його життя, в принципі, | + | Якщо у вас є доступ до редагування цієї wiki - документуйте зміни внесені вами. Як мінімум варто додати відомості про те, що ви щось зробили в [[changelog|Чейнджлог]]. Кінцеві користувачі повинні знати, як змінитися їхнє життя в майбутньому. Зміни, які не видимі кінцевому користувачеві і ніяк не впливають на його життя, в принципі, |
| * Модуль " | * Модуль " | ||
| Рядок 431: | Рядок 462: | ||
| * alter.ini: додано нову опцію CHAINSAW_ENABLED, | * alter.ini: додано нову опцію CHAINSAW_ENABLED, | ||
| - | Також у разі додавання нової опції, ви маєте задокументувати її на сторінках, | + | Також у разі додавання нової опції, ви маєте задокументувати її на сторінках, |
| - | У яких випадках, | + | У яких випадках, |
| + | |||
| + | Критерії дуже прості: | ||
| - Ваш модуль вимагає конфігурації, | - Ваш модуль вимагає конфігурації, | ||
| Рядок 441: | Рядок 474: | ||
| - Робить неочевидні сторонній людині штуки | - Робить неочевидні сторонній людині штуки | ||
| - | Не обов' | + | Не обов' |
| - | ==== Пасхалки, відсилання | + | |
| + | ==== Великодки, відсилки та інший фансервіс ==== | ||
| - | Вітаються. Будь-які. У будь-якому не уебанському вигляді. | + | Вітаються. Будь-які. У будь-якому не уєбанському вигляді. |
| - | Ваш код - це продукт ваших взаємин зі всесвітом. І якщо він складається з відсилань | + | Ваш код - це продукт ваших взаємин зі всесвітом. І якщо він складається з відсилок до фільмів, |
| ==== А де ж Best Practices? ==== | ==== А де ж Best Practices? ==== | ||
| Рядок 452: | Рядок 486: | ||
| ==== Контрибуція в Ubilling ==== | ==== Контрибуція в Ubilling ==== | ||
| - | Будь ласка, якщо ви хочете зробити свій внесок у розвиток проекту, | + | Будь ласка, якщо ви хочете зробити свій внесок у розвиток проекту, |
| ==== Оформлення Пуллреквестів ==== | ==== Оформлення Пуллреквестів ==== | ||
| Рядок 473: | Рядок 507: | ||
| git add CONTRIBUTING.md | git add CONTRIBUTING.md | ||
| git commit -m "I add some line to CONTRIBUTING" | git commit -m "I add some line to CONTRIBUTING" | ||
| - | git push —set-upstream | + | git push -u my-fork master-some-fix |
| </ | </ | ||
| Рядок 479: | Рядок 513: | ||
| {{ : | {{ : | ||
| - | Після створення пулреквесту - [[https:// | + | Після створення пулреквесту - [[https:// |
| - | Чекаємо, | + | Чекаємо, |
| Головне, | Головне, | ||
| - | Далі повертаємося в гілку master офіційного проєкту й оновлюємо вже змерзлий код: | + | Далі повертаємося в гілку master офіційного проєкту й оновлюємо вже змерджений код: |
| <code bash> | <code bash> | ||
| git checkout master | git checkout master | ||