# 🐘 Aturan & Standar Pemrograman PHP (`language_rules/php.md`)

Aturan ini berlaku untuk semua aplikasi berbasis PHP di lingkungan ERP PT. Everest, PT. INDOSAN, dan POS (Sumber Boga, Maju Mapan, Jodomart.id).

---

## 1. Kompatibilitas Versi PHP 5.6
Sebagian besar aplikasi legacy berjalan di atas PHP 5.6 demi kestabilan jurnal keuangan.

### 🚫 Sintaks yang DILARANG:
*   **Null Coalescing Operator (`??`):** Jangan gunakan `$val ?? $default`.
    *   *Gunakan:* `isset($val) ? $val : $default`.
*   **Spread Operator (`...`):** Jangan gunakan spread operator untuk argumen/array.
*   **Arrow Functions (`fn() => ...`):** Jangan gunakan short closure.
*   **Short Array Syntax (`[]`):** Gunakan fungsi `array()` agar kompatibel dengan legacy PHP 5.3 runtime.

---

## 2. Standar CodeIgniter 3.1.8 & HMVC (Wiredesignz)
*   **Query Safety:** Selalu gunakan **Query Binding** atau **Query Builder** untuk mencegah SQL injection. Dilarang menulis raw SQL string tanpa binding.
*   **Locker Call Pattern:** Operasi penulisan stok produk wajib menggunakan `ComLockerStockDualWrite::pair()`.
*   **Helper Naming:** Selalu gunakan helper dengan prefix `he_` dan simpan di `application/helpers/`.
*   **Database Transaction:** Wrap multi-query menggunakan `$this->db->trans_start()` dan `$this->db->trans_complete()`.
