Metode Lib

Metode lib dari kelas SENE_Controller digunakan untuk memanggil kelas pustaka (library) supaya dapat menjadi bagian dari kelas controller yang memanggilnya.

Secara teknis, metode lib akan otomatis menginstansiasi kelas pustaka sehingga menjadi properti dari kelas yang memanggilnya.

Terus apa nama propertinya kalau dibuat otomatis? Nama propertinya akan sama dengan nama filenya tapi tanpa akhiran .php.

Untuk penjelasan lengkapnya mari kita lihat contoh kode.

<?php
class Blog extends SENE_Controller {
  public function __construct(){
    parent::__construct();
  }
  public function index(){
    ...
    // memanggil library Seme_Email
    $this->lib('seme_email');
    //cukup dengan 1 baris saja,
    // Seme Framework akan membuatkan properti baru
    // pada kelas ini yaitu $seme_email
    // untuk pemanggilanya bisa lihat kode dibawah ini
    $this->seme_email->from('daeng@example.com');
    ....
  }
  ...

  public function coba2(){
    ...
    // memanggil library Seme_Email
    $this->lib('seme_log');
    //cukup dengan 1 baris saja,
    // Seme Framework akan membuatkan properti baru
    // pada kelas ini yaitu $seme_log
    // untuk pemanggilanya bisa lihat kode dibawah ini
    $this->log->write('haloo');
    ....
  }
}

This lib method only affected for single file class library.

For using 3rd party library like from composer you can read it from 3rd library section.

Bentuk Umum

Metode lib memiliki bentuk umum sebagai berikut.

$this->lib(string $filename_location[, string $alias[, string $embeeding_type="lib"]])

Parameter

Metode lib terdiri dari 3 parameter yaitu $filename_location, $alias dan $embeeding_type.

$filename_location

Lokasi dan nama file library yang akan digunakan tanpa akhiran.php.

Library yang digunakan oleh Seme Framework baik direktori maupun filenya harus selalu relatif terhadap direktori kero/lib.

Jadi pastikan library sudah ada didalam direktori kero/lib tersebut.

Contoh

Berikut ini adalah contoh pemanggilan library secara langsung

<?php
class Order extends SENE_Controller {
  public function __construct(){
    parent::__construct();
    $this->lib('conumtext');
  }
  ...
  public function submit(){
    //executing the seme_email object
    $this->lib('conumtext');
    $token = $this->conumtext->genRand($type = 'str', $min = 7, $max = 15);
    ....
  }
}

Saat memuat pustaka dari sub direktori, awalan jalur tidak akan digunakan sebagai nama model objek.

Jadi, berhati-hatilah dalam memilih perpustakaan kelas penamaan atau alias.

Jika perlu, Anda dapat menduplikasi kelas perpustakaan untuk menghindari konflik dengan sufiks tambahan dengan angka.

contoh kero/lib/seme_email2.php lalu nama kelas Seme_Email2.

$alias

Tujuan alias untuk menyingkat nama model yang kita buat menjadi SENE_Controller.

Alias dapat berisi alfanumerik dan garis bawah apa pun.

Ini contohnya:

$this->lib('seme_email','eml');

Dengan contoh ini, seme_email akan menjadi bagian dari kelas SENE_Controller sebagai objek eml

Ini contoh lengkapnya:

<?php
class Blog extends SENE_Controller {
  public function __construct(){
    parent::__construct();
    $this->lib('seme_email','eml');
  }
  public function index(){
    //executing the hello_model object
    $this->eml->from('daeng@example.com')
    ....
  }
}

Tips

Jika bingung cara mengisi nama alias, bisa diambil dari huruf depan setiap nama kelas.

contoh, kero/lib/seme_email.php lalu aliasnya menjadi se.

$embeeding_type

Tujuan embeeding_type adalah untuk mengaktifkan objek autoinstantiate atau tidak.

Jika nilainya sama dengan lib, library akan dibuat instance-nya dengan nama yang sama dengan nama file library.

Jika tidak, perpustakaan hanya akan disertakan tanpa membuat instance.

Berikut adalah contohnya:

$this->lib('seme_email','eml','inc');

Dengan contoh ini, seme_email akan menjadi bagian dari kelas SENE_Controller sebagai objek eml

Here is the full example:

<?php
class Blog extends SENE_Controller {
  public function __construct(){
    parent::__construct();
    $this->lib('seme_email','eml','inc');
  }
  public function index(){
    //executing the hello_model object
    $eml = new Seme_Email();
    $eml->from('daeng@example.com');
    ....
  }
}

Jika nilai $embeeding_type tidak sama dengan lib, parameter kedua akan diabaikan.