субота, 14 лютого 2009 р.

Правила старої «Корпорація 2 CMS»: кодування, переклади та доступ до даних

Ця пам'ятка описує внутрішні домовленості історичної версії «Корпорація 2 CMS». Файл corp_runner.php містив основні класи завантаження вебчастини. Правила нижче не є специфікацією сучасних K2 ERP чи K2 Platform.

Кодування файлів і даних

У програмній частині тоді використовували Windows-1251, називаючи її «ANSI», а в базі даних — UTF-8. Документацію зберігали в UTF-8; файли перекладів — переважно у Windows-1251, за потреби в UTF-8.

Таке рішення автор пов'язував із проблемами сесій, невидимими символами після include/require та виведенням тексту в зображення. Проте з цього не випливає, що PHP загалом краще працює з «ANSI» або не підтримує UTF-8. PHP не задає єдиного кодування рядків; важлива узгодженість даних і функцій. Передчасний вивід також може порушити надсилання заголовків сесії — його слід діагностувати окремо.

Виклики системи

Замість прямого виведення пропонувалося користуватися обгорткою; це не було обов'язковою вимогою:

$c->myecho('Текст');

Для доступу до бази застосовували функції системи. Перетворення кодування в цій пам'ятці описано так:

$c->dc('Текст'); // з UTF-8 у поточне кодування
$c->ec('Текст'); // з поточного кодування в UTF-8

Це контракт, наведений для тієї версії; фактичну реалізацію потрібно звіряти з її кодом. Коротке ім'я $c використовували замість $corp. Первинні ключі отримували через:

$c->myid();

Переклади

Словник передавали у вигляді асоціативного масиву:

$this->s(array(
    "Идентификатор перевода 1" => "Перевод 1",
    "Идентификатор перевода 2" => "Перевод 2",
    "Идентификатор перевода 3" => "Перевод 3"
));

Ідентифікатор перекладу виводили таким викликом:

$c->tr('Идентификатор перевода');

Документування та SQL

У каталогах використовували файл desc для пояснення функціональності, а в компонентах — також каталоги документації. Потрібно було описувати роботу компонента, призначення функцій і змінних.

SQL виконували через обгортки системи:

$c->q('SQL-запрос'); // виконання запиту
$c->fetch($dataset); // отримання наступних даних із джерела

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

Джерела технічних уточнень: рядки PHP, mbstring, headers_sent. Контакт щодо K2: WhatsApp +380679016322.

Немає коментарів:

Калькулятор K2: від запитання про ціну до готової комерційної пропозиції

«А скільки коштуватиме інша комплектація?» — природне запитання покупця. Якщо для відповіді менеджер щоразу відкриває таблицю, шукає коефіці...