Seluruh file konfigurasi O2System Framework terletak di direktori app/Config. Untuk memudahkan pengembangan pada setiap file-file konfigurasi default yang ada pada O2System Framework di dalamnya sudah memiliki inline-documentation. Anda dapat membacanya langsung agar mengerti mengenai tujuan dari masing-masing konfigurasi tersebut.

Strict Mode

Fitur strict mode merupakan fitur terbaru yang dari PHP 7.0+, namun untuk menggunakannya pastikan semua library yang anda gunakan sudah mendukungnya.

Untuk mengubahnya anda harus mengubah file Front-Controller dari aplikasi anda yang terdapat di folder public dari project aplikasi anda.

/path/to/your/project/public/index.php

Pada line 16 dari file tersebut terdapat source code mengenai strict mode, un-comment source code tersebut untuk mengaktifkannya.

/path/to/your/project/public/index.php
/**
* Enable PHP 7.0 strict mode type globally.
*/
declare(strict_types=1);

Konfigurasi Environment

Dalam pembuatan project aplikasi selalu berhubungan erat dengan environment. Tahapan dalam environment pada umumnya terbagi dalam 3 jenis:

  1. DEVELOPMENT Tahap yang menyatakan aplikasi masih dalam tahap pengembangan. Dalam tahap ini pesan Error dan Exception dimunculkan.

  2. TESTING Tahap yang menyatakan aplikasi sudah dalam tahap percobaan. Dalam tahap ini hanya pesan error saja yang masih dimunculkan.

  3. PRODUCTION Tahap yang menyatakan aplikasi sudah dalam tahap produksi atau sering disebut dengan istilah sudah GO-LIVE.

Untuk mengubah status tahap pengembangan aplikasi anda. Anda harus mengubah file Front-Controller dari aplikasi anda yang terdapat di folder public dari project aplikasi anda.

/path/to/your/project/public/index.php

Pada line 40 dari file tersebut terdapat source code yang men-definisikan ENVIRONMENT Stage dari project aplikasi anda. Ubahlah sesuai dengan tahap dari project aplikasi anda.

/path/to/your/project/public/index.php
/**
* Environment Stage
*
* @value DEVELOPMENT|TESTING|PRODUCTION
*/
define( 'ENVIRONMENT', 'DEVELOPMENT' );

Di O2System Framework anda akan menemukan sebuah Environment baru yang disebut dengan ENVIRONMENT Debug Stage. Environment Debug Stage merupakan sebuah fasilitas khusus untuk Developer agar dapat tetap melakukan debugging walaupun Environment Stage dari project aplikasi anda sudah dalam tahap PRODUCTION.

Dengan fasilitas ini akses PUBLIC akan tetap dapat menggunakan aplikasi anda dengan tanpa adanya pesan error yang muncul pada aplikasi anda, namun sebaliknya jika anda yang melakukan akses sebagai DEVELOPER atau TESTER anda akan tetap dapat melakukan debugging.

ENVIRONMENT Debug Stage terbagi dalam 3 jenis yang hampir sama kegunaannya dengan ENVIRONMENT Stage.

  1. DEVELOPER Tahap ini merupakan tahap dimana Error dan Exception akan selalu muncul pada proses debugging.

  2. TESTER Tahap ini merupakan tahap dimana hanya pesan Error saja yang akan muncul pada proses debugging.

  3. PUBLIC Tahap ini merupakan tahap yang bersifat inheritance dari ENVIRONMENT Stage dari aplikasi anda.

Untuk menggunakan fasilitas tersebut ada 2 konfigurasi yang harus anda lakukan yaitu menentukan tahap ENVIRONMENT Debug Stage dari aplikasi anda dan memasukkan alamat IP Address debugging anda.

  1. Mengubah Debug Stage Pada line 47 dari file Front-Controller aplikasi anda terdapat source code yang men-definisikan ENVIRONMENT Debug Stage dari project aplikasi anda. Ubahlah sesuai dengan tahap dari project aplikasi anda.

    /path/to/your/project/public/index.php
    /**
    * Environment Debug Stage
    *
    * @value DEVELOPER|TESTER|PUBLIC
    */
    $_ENV[ 'DEBUG_STAGE' ] = 'DEVELOPER';
  2. Mengisi alamat IP Address Anda diharuskan mengisi alamat Public IP Address dari tempat anda melakukan akses pada aplikasi anda pada file konfigurasi global dari project aplikasi anda.

    /path/to/your/project/app/Config/Config.php

    Pada line 92 dari file tersebut terdapat source code yang mengatur konfigurasi dari alamat Debug IP Address project aplikasi anda.

    /path/to/your/project/app/Config/Config.php
    /**
    * Debug IP Addresses
    *
    * If your public IP is listed on the debug IP addresses, your environment will automatically
    * set into DEVELOPMENT environment even the environment stage is set into PRODUCTION.
    * This features is very useful when your application is going online in PRODUCTION stage, but
    * sometime you're need to debug it.
    *
    * @var array
    */
    $config[ 'ipAddresses' ][ 'debug' ] = [ '202.x.x.x' ];

    Anda dapat memasukkan alamat IP Address lebih dari satu. IP Address yang dimasukkan harus ber-format IP Address v4.

Memisahkan Konfigurasi Berdasarkan Environment

Project aplikasi anda dapat memiliki konfigurasi-konfigurasi yang berbeda berdasarkan ENVIRONMENT.

Untuk melakukannya anda harus membuat atau men-duplikasi file konfigurasi yang ingin anda sesuaikan secara spesifik berdasarkan tahap dari ENVIRONMENT Stage anda. Tempatkan file tersebut dalam nama direktori sesuai tahap ENVIRONMENT Stage anda.

/path/to/your/project/app/Config/{ENVIRONMENT}/{FILENAME}.php

Memisahkan Konfigurasi Berdasarkan Module

Salah satu keunikan dari O2System Framework adalah anda juga dapat memiliki konfigurasi-konfigurasi yang berbeda bukan hanya berdasarkan ENVIRONMENT saja namun juga dapat secara spesifik pada setiap MODULE yang terdapat dalam project aplikasi anda.

Untuk melakukannya anda harus membuat atau men-duplikasi file konfigurasi yang ingin anda sesuaikan secara spesifik berdasarkan tahap dari ENVIRONMENT Stage anda dan MODULE dari aplikasi anda. Tempatkan file tersebut dalam nama direktori sesuai tahap ENVIRONMENT Stage anda dan pada direktori MODULE yang ingin anda sesuaikan.

  1. Berdasarkan MODULE

    /path/to/your/project/app/Modules/{MODULE}/Config/{FILENAME}.php
  2. Berdasarkan MODULE dan ENVIRONMENT Stage

    /path/to/your/project/app/Modules/{MODULE}/Config/{ENVIRONMENT}/{FILENAME}.php

Membuat File Konfigurasi Baru

Ketika kita membuat class PHP library baru terkadang kita memerlukan file konfigurasi untuk lebih memudahkan serta untuk menghindari pengubahan langsung pada class-class PHP yang kita buat. Caranya sangatlah mudah untuk membuat file konfigurasi baru tersebut.

Sebagai contoh kita akan membuah file konfigurasi untuk sebuah class PHP library yang kita namakan Example.

<?php
$example = [
'foo' => 'bar'
];

Simpan source code diatas dengan filename app/Config/Example.php

Beberapa hal penting yang perlu diperhatikan adalah:

  1. Penulisan nama variable pada file konfigurasi diharuskan dengan format penulisan berupa lowercase dari nama filename seperti contoh diatas.

  2. Nilai variable dari file konfigurasi diharuskan ber-format array atau merupakan object dari class O2System\Kernel\Datastructures\Config atau turunannya.

Tips and Tricks Anda juga dapat membuat file konfigurasi baru dengan menggunakan console, dengan perintah $ php o2system make/config --filename=NamaFile

Memanggil File Konfigurasi Baru

Setelah kita selesai membuat file konfigurasi seperti pada point sebelumnya, selanjutnya kita akan memanggil file config tersebut pada class PHP library yang akan kita buat.

Seperti yang sudah diutarakan sebelumnya kita akan memanggilnya pada constructor class php dengan nama class Example.

<?php
namespace App\Libraries;
use O2System\Spl\Traits\Collectors\ConfigCollectorTrait;
class Example
{
use ConfigCollectorTrait;
/**
* Example::__construct
*/
public function __construct()
{
// loading configuration file: app/Config/Example.php
if (false !== ($config = config()->loadFile('Example', true))) {
$this->setConfig($config->getArrayCopy());
}
// write your logic here
}
}

Simpan class PHP diatas dengan filename app/Libraries/Example.php

Trait Config Collector

Seringkali dalam class PHP library yang kita buat, memerlukan adanya beberapa metode-metode yang dipergunakan untuk sebagai setter dan getter pada konfigurasi class yang kita buat tersebut.

Di O2System Framework kita akan mulai diperkenalkan pada class PHP yang ber-format Traits. Singkatnya traits merupakan kumpulan re-usable codes atau kode yang dapat dipergunakan lagi karena sifatnya yang umum, dengan adanya traits kita tidak perlu menulis kode-kode PHP yang sama berulang-ulang kali.

Dalam kasus yang berhubungan dengan konfigurasi di O2System Framework Standard PHP Libraries (SPL) sudah terdapat Trait Config Collector. Seperti pada contoh kode sebelumnya terdapat perintah

use O2System\Spl\Traits\Collectors\ConfigCollectorTrait;

Penempatan keyword use harus ditempatkan didalam class.