Kelas Core

Seme Framework memiliki kemampuan untuk memperluas model atau kelas controller dari pada kelas bawaan dengan konsep pengembangan kelas core ini. Arti dari core disini bukan inti kode Seme Framework, melainkan merujuk pada konsep pengembangan kelas dari inti kelas Seme Framework.

Kapan saya harus menggunakan kelas Core?

Gunakan fitur ini hanya ketika anda membutuhkan metode atau properti yang diperluas dan digunakan secara menyeluruh.

Mengaktifkan Kelas Core

Kelas core pada bawaan framework dalam kondisi tidak aktif. Sekarang kita akan mempelajari cara mengaktfikannya.

Merubah Pengaturan

Asumsikan, nilai dari prefix kelas core adalah ji_ dan nama kelas core untuk controllernya adalah controller serta nama kelas core modelnya adalah model. Maka, pada pengaturan corenya cukup diisi sesuai dengan nama filenya, tanpa akhiran .php. Untuk lebih jelasnya, lihat contoh kode pengaturan dibawah ini.

...

/********************************/
/* == Core Configuration == */
/* register your core class, and put it on: */
/*   - app/core/ */
/* all var $core_* value in lower case string*/
/* @var string */
/****************************/
$core_prefix = 'ji_';
$core_controller = 'controller';
$core_model = 'model';

...

Struktur file dan direktori

Setelah pengaturannya dibuat, kita akan membuat file core berdasarkan struktur file dan direktori seperti ini.

app/
└── core/
 |── ji_controller.php
 └── ji_model.php

File JI_Controller.php

Pada contoh ini, kita akan menambahkan metode baru buatan sendiri yaitu metode __json_out kedalam kelas JI_Controller. Kemudian, jangan lupa juga untuk menambahkan metode __construct dan method index, karena diperlukan dari abstract class SENE_Controller .

<?php
/**
 * Main controller: contains about methods and protperties that automtically included after extending in a class
 */
class JI_Controller extends SENE_Controller
{
  // required function for triggering parent class
  public function __construct()
  {
    parent::__construct();
  }

  /**
   * Output the json formatted string
   * @param  mixed $dt input object or array
   * @return string     sting json formatted with its header
   */
  public function __json_out($dt)
  {
    $this->lib('sene_json_engine', 'sene_json');
    $data = array();
    if (isset($_SERVER['SEME_MEMORY_VERBOSE'])) {
        $data["memory"] = round(memory_get_usage()/1024/1024, 5)." MBytes";
    }
    $data["status"]  = (int) $this->status;
    $data["message"] = $this->message;
    $data["data"]  = $dt;
    $this->sene_json->out($data);
    die();
  }

  //required function from abstract class
  public function index(){ }
}

File JI_Model.php

Sementara, contoh kode sumber untuk file JI_Model.php kita akan mencoba menambahkan 2 metode baru kedalam kelas JI_Model yaitu __encrypt dan __decrypt. Metode __encrypt digunakan untuk mengenkripsi data dengan AES_ENCRYPT. Sementara, metode __decrypt digunakan untuk mengenkripsi data dengan AES_DECRYPT.

<?php
class JI_Model extends SENE_Model
{
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Generates encryption command
     * @param  [type] $val [description]
     * @return [type]      [description]
     */
    public function __encrypt($val)
    {
        return 'AES_ENCRYPT('.$this->db->esc($val).',"'.$this->db->enckey.'")';
    }

    /**
     * Generates decryption command
     * @param  [type] $key [description]
     * @return [type]      [description]
     */
    public function __decrypt($key)
    {
        return 'AES_DECRYPT('.$key.',"'.$this->db->enckey.'")';
    }
}

Referensi Luar

Berikut ini adalah referensi luar yang digunakan dalam dokumen ini: