CodeIgniter Library

CI library membantumu melakukan pekerjaanmu lebih cepat dan lebih efisien. Setiap library adalah class PHP dengan bermacam metode yang bisa kamu gunakan sekali library diload oleh controller. Beberapa class sangat berguna dan sangat ubiquitous yang sebaiknya kamu autoload mereka (seperti library database dan session).

CI meliputi library dibawah ini:

Benchmarking — Adalah library yang selalu aktif. Digunakan untuk menentukan perbedaan waktu dari dua poin yang ditandai dalam kode dan untuk menghitung penggunaan memory.

Calendaring — Harus diload oleh controller. Untuk membuat kalender dinamis untuk bulan dan tahun yang diberikan dengan beberapa kontrol over formatting dan appearance.

Config — Diinisialisasi otomatis oleh system . Untuk mengambil informasi konfigurasi.

Database — Sekumpulan metode yang harus diload.

Email — Harus diload. Dia meliputi sekumpulan tool yang menyederhanakan pekerjaan mengirim email.

Encryption — Harus diload. Memberikanmu dua metode enkripsi yang powerful.

File Uploading — Harus diload. Gunakan ini kapanpun kamu perlu untuk menghandel upload file. Dia meliputi validasi powerful yang bisa merestrict sebuah file dengan type mime, ukuran (dalam kilobytes), atau dimensi image.

FTP — Harus diload. Untuk mentransfer file ke server remote (hanya mendukung FTP standard).

HTML Table— Harus diload. Untuk menghasilkan tabel HTML dari array atau sekumpulan hasil database.

Image Manipulation — Harus diload. Untuk meresize gambar, membuat thumbnail, memotong atau memutar gambar dan watermark gambar. Beberapa fungsi memerlukan dukungan PHP (seperti GD/GD2).

Input dan Security — Harus diload. Untuk mempre-process input data (dari form dan URL) dan untuk menghandel beberapa fungsi security (seperti menjaga dari serangan XSS).

Language — Harus diload. Untuk meload sekumpulan file bahasa yang berbeda untuk internasionalisasi.

Loader — Otomatis diload. Untuk meload view dengan controllermu, tapi dia juga digunakan untuk meload library.

Output — Otomatis diload. Mengirimkan web page yang sudah selesai ke browser yang merequest. Digunakan juga untuk caching.

Pagination — Harus diload. Untuk mempaginate hasil database untuk performance dan usability. Kamu bisa mengontrol berapa banyak record untuk ditampilkan perpage, berapa banyak record untuk ditarik dari database dan tampilan dari bagian pagination.

Session — Harus diload. Untuk memaintain informasi status tentang user. Library ini tidak menggunakan session dari PHP built-in, dia men-generate session datanya sendiri.

Template parser — Harus diload. Untuk membuat template yang berisi parsable pseudo – templates.

Trackback — Harus diload. Gunakan library ini untuk mengirim dan menerima data trackback.

Unit Testing — Harus diload. Gunakan class ini untuk unit test function dalam aplikasimu. CI menyediakan fungsi evaluasi dan dua fungsi hasil dalam library ini.

URI Class — Otomatis diload. DIgunakan untuk memparsing URL, memeahnya ke dalam beberapa segmen dan kemudian dipassing ke controller atau disimpan sebagai variabel.

User Agent — Harus diload. Gunakan library ini untuk mengidentifikasi browser, mobile device, atau robot yang mengunjungi websitemu. Kamu bisa juga menggunakannya untuk mendeteksi dukungan bahasa, sekumpulam karakter, dan referrer.

Validation — Harus diload. Untuk memvalidasi input form dalam aplikasimu.

XML-RPC — Harus diload. Gunakan library ini untuk mensetup klien XML-RPC dan server.

Zip Encoding — Harus diload. Gunakan library ini untuk membuat arsip Zip untuk teks dan data binary.

Terdapat dua library yang akan kita bicarakan sekarang yaitu Database dan Session.

Library Database

Berisi sederetan fungsi yang membuatmu mudah untuk membuat dan menjalankan query dan memproses sekumpulan hasilnya dari query tersebut.

Dia membolehkanmu untuk mempassing query sederhana:

$sql = “select a.name, a.id, b.groupname
from persons a, groups b
where a.group_id = b.id
group by b.groupname, a.name”;


$Q = $this- > db- > query($sql);

Untuk loop dalam query maka kamu bisa gunakan metode result() atau result_array() tergantung apakah kamu suka untuk memproses hasilmu sebagai objek atau array.

$sql = “select a.name, a.id, b.groupname
from persons a, groups b
where a.group_id = b.id
group by b.groupname, a.name”;


$Q = $this- > db- > query($sql);


foreach ($Q- > result() as $row){
echo $row- > name;
echo $row- > id;
echo $row- > groupname;
}


//Ini adalah pendekatan alternatif dengan hasil sebagai array
foreach ($Q- > result_array() as $row){
echo $row[‘name’];
echo $row[‘id’];
echo $row[‘groupname’];
}

Jika kamu perlu penghitungan baris dalam hasil maka gunakan metode num_rows():

$sql = “select a.name, a.id, b.groupname
from persons a, groups b
where a.group_id = b.id
group by b.groupname, a.name”;


$Q = $this- > db- > query($sql);


if ($Q- > num_rows()){
foreach ($Q- > result() as $row){
echo $row- > name;
echo $row- > id;
echo $row- > groupname;
}
}

Kadang-kadang kamu mengquery yang menghasilkan satu baris maka gunakan row() atau row_array():

$sql = “select a.name, a.id, b.groupname
from persons a, groups b
where a.group_id = b.id
limit 1”;

$Q = $this- > db- > query($sql);
$row = $Q- > row();
echo $row- > id;


//syntax alternatif
$row = $Q- > row_array();
echo $row[‘id’];

Menggunakan metode ini membolehkanmu untuk mempassing setiap query SQL termasuk insert, update, dan delete.

$sql = “insert into persons (name, gender, age)
values (‘Fahmi Basya Kartapura’, ‘male’,29)”;
$this- > db- > query($sql);

Cara yang paling aman untuk menghandel query ini adalah dengan menggunakan query binding:

$sql = “insert into persons (name, gender, age)
values(?,?,?)”;
$this- > db- > query($sql, array(“Fahmi”,”male”,29));

Kenapa metode ini lebih aman? Query binding ini secara otomatis mengescape data apapun yang kamu lewatkan dan mengeliminasi masalah potensi keamanan.

Pada beberapa poin kamu bisa mengambil keuntungan dari penggunaan pola Active Record. Setiap polanya membolehkanmu untuk berinteraksi dengan tabel database dengan skrip yang minimal. Ini akan mengefesiensikan penulisanmu dan juga kode databasemu lebih portabel diantara tipe database.

Untuk mengambil semua record database dari tabel persons:

$Q = $this- > db- > get(‘persons’);

Untuk membatasi berapa banyak record yang akan diambil dari tabel persons:

$Q = $this- > db- > get(‘persons’,5,20);
//querynya menjadi:
//select * from persons limit 20, 5
//dan akan menampilkan 5 record setelah offset 20 (record 21 – 25)


Untuk membatasi field yang dipilih dalam querymu maka gunakan metode select():

$this- > db- > select(‘id, name, gender’);
$Q = $this- > db- > get(‘persons’);

Kamu juga bisa menggunakan metode from() untuk memberitahu CI dari tabel apa kita menseleksi:

$this- > db- > select(‘id, name, gender’);
$this- > db- > from(‘persons’);
$Q = $this- > db- > get();

Kamu bisa memberikan kondisi dengan klausa where():

$this- > db- > select(‘id, name, gender’);
$this- > db- > from(‘persons’);
$this- > db- > where(‘id’, 14);
$this- > db- > where(‘status’, ‘live’);
$Q = $this- > db- > get();

//Querynya menjadi:
//select id, name, gender from persons where id=14 and status=’live’

Kamu bisa memasukkan operator pada klausa where():

$this- > db- > select(‘id, name’);
$this- > db- > from(‘persons’);
$this- > db- > where(‘id > =’, 3);
$Q = $this- > db- > get();

//querynya menjadi:

//select id, name from persons where id > = 3

Jika kamu ingin melakukan custom string dalam klausa where:

$this- > db- > select(‘id, name’);
$this- > db- > from(‘persons’);
$this- > db- > where(“name=’Tom’ and id > 3”);
$Q = $this- > db- > get();

//querynya menjadi:
//select id,name from persons where name=’Tom’ and id > 3

Kamu bisa menggunakan metode like():

$this- > db- > select(‘id, name’);
$this- > db- > from(‘persons’);
$this- > db- > like(‘name’, ‘Kartapura’);
$Q = $this- > db- > get();

//querynya menjadi:
//select id,name from persons where name like ‘%Kartapua%’

Ketika melakukan insert, pertama kamu membuat data array dan mempassingnya ke metode insert(). Dalam banyak kasus array datamu terdiri dari informasi dari form tapi dia juga berisi data dari session atau cookie.

$data = array(
‘name’ = > $_POST[‘name’] ,
‘gender’ = > $_POST[‘gender’],
‘age’ = > $_POST[‘age’]
);
$this- > db- > insert(‘persons’, $data);

Library Session

Mungkin kamu sudah familiar dengan PHP session. CI session itu sama dengan PHP session, perbedaanya adalah CI menyimpan data session dalam cookie tapi dia bisa juga bekerja dengan tabel database dan kamu juga mempunyai opsi untuk menyimpan CI session dalam database.

Catatan:

Hanya gunakan CI session untuk menyimpan data yang tidak penting dan gunakan PHP session untuk login dan autentikasi yang lebih aman.

Defaultnya CI session men-track:

  • session ID
  • user IP address
  • user agent
  • timestamps untuk aktivitas terakhir dan kunjungan terakhir

Mengambil data dari CI session adalah mudah hanya memanggil metode userdata():

$sess_id = $this- > session- > userdata(‘session_id’);

Metode userdata akan menghasilkan false jika item yang kamu coba akses tidak ada

Fungsi yang sangat berguna dari CI session adalah untuk menyimpan data tentang user dan kemudian mengaksesnya. Sebagai contoh kamu bisa membuat proses verifikasi login dan jika sukses maka tambahkan user email address ke CI session:

//$username and $password are passed in from another process
//most likely a login form and then cleansed

$this- > db- > select(‘email’);
$this- > db- > from(‘users’);
$this- > db- > where(‘username’, $username);
$this- > db- > where(‘password’, $password);
$this- > db- > where(‘status’, ‘live’);
$this- > db- > limit(1);
$Q = $this- > db- > get();
if ($Q- > num_rows() == 1){
$row = $Q- > row();
$this- > session- > set_userdata(‘user_email’], $row- > email);
}

Kemudian kamu dapat mengambil email tersebut jika kamu meau menampilkannya:

< ?php
echo $this- > session- > userdata(‘email’);
? >

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *