Tutorial PHP: 6 Fungsi Powerful pada PHP

Tutorial PHP: 6 Fungsi Powerful pada PHP

PHP adalah bahasa pemrograman web yang paling banyak digunakan saat ini. Hal ini tidak lepas dari fitur PHP yang menyediakan berbagai Library, baik asli…

PHP adalah bahasa pemrograman web yang paling banyak digunakan saat ini. Hal ini tidak lepas dari fitur PHP yang menyediakan berbagai Library, baik asli dalam paket PHP maupun buatan third-party. Begitu banyaknya fungsi PHP membuatnya sangat sulit untuk dihafalkan seluruhnya. Padahal beberapa fungsi yang jarang diketahui merupakan fungsi yang powerful yang bisa Anda manfaatkan.

Jarang ada programmer baru yang mau membaca seluruh dokumentasi PHP, sehingga jarang pula yang mengetahui keberadaan fungsi-fungsi ini. Kebanyakan fungsi yang akan dibahas di artikel ini adalah fungsi yang sering dimanfaatkan oleh programmer professional yang telah lama mendalami PHP, sehingga mengerti pentingnya keberadaan fungsi ini. Berikut ini adalah pembahasan singkat beberapa fungsi tersebut.

  1. Membuat fungsi dengan jumlah argument tidak menentu.
    PHP memiliki kemampuan untuk membuat fungsi dengan argument opsional. Biasanya programmer akan menuliskannya sebagai berikut:

    function multiple($arg1 = '', $arg2 = '') {
      echo $arg1 . ' ' . $arg2;
    }
    
    multiple('PC', 'Mild', '06');
    // mencetak:
    // PC Mild

    Kelemahannya adalah fungsi tersebut tidak dapat menangkap argument sejumlah lebih dari yang dideklarasikan. Namun Anda bisa mengatasinya dengan fungsi func_get_args() seperti di bawah ini:

    function multiple() {
      $args = func_get_args();
      foreach($args as $arg) {
        echo $arg . ' ';
      }
    }
    
    multiple('PC', 'Mild', '06');
    // mencetak:
    // PC Mild 06
  2. Mencari file lebih mudah
    Biasanya untuk mencari file dalam sebuah folder, fungsi yang digunakan adalah scandir(). Untuk mencari file dengan pola nama tertentu, maka harus dilakukan perulangan untuk mengecek setiap file yang ditemukan. Dengan fungsi glob(), hal ini dapat dilakukan dengan lebih singkat. Pola yang ingin dicari dimasukkan sebagai argument pertama fungsi ini. Pola dapat berupa relative path dari lokasi folder.

    $files = glob('*.php');
    print_r($files);
    /*
     * Mencetak array:
     * Array
     * (
     *   [0] => index.php
     *   [1] => file.php
     *   [2] => database.php
     * )
     */
    
    $files = glob('../images/h*.png');
    print_r($files);
    /*
     * Mencetak array:
     * Array
     * (
     *   [0] => ../images/hello.png
     *   [1] => ../images/humble.png
     * )
     */
  3. Serialization
    Terkadang program perlu untuk menyimpan variable kompleks ke dalam sebuah file atau database. Pembuatan fungsi untuk mengubahnya dari array atau object ke teks dengan format tertentu dan sebaliknya akan cukup merepotkan. Anda tidak perlu melakukannya, karena PHP telah menyediakan fungsi tersebut. Dua fungsi yang dapat Anda gunakan adalah serialize() dan unserialize().
    Fungsi pertama adalah untuk mengubah variable kompleks menjadi sebuah teks. Sedangkan unserialize() akan mengembalikan teks tersebut ke dalam sebuah array atau object. Berikut adalah contoh penggunaannya.

    // variable kompleks
    $myvar = array(
      'drink' => 'beer',
      27,
      array(11, 1988),
      'salad'
    );
    
    $string = serialize($myvar);
    echo $string;
    // mencetak:
    // a:4:{s:5:"drink";s:4:"beer";i:0;i:27;i:1;a:2:{i:0;i:11;i:1;i:1988;}i:2;s:5:"salad";}
    
    echo '<br />';
    
    $newvar = unserialize($string);
    print_r($newvar);
    /*
     * mencetak:
     * Array
     * (
     *   [drink] => beer
     *   [0] => 27
     *   [1] => Array
     *       (
     *       [0] => 11
     *       [1] => 1988
     *       )
     *   [2] => salad
     * )
     */

    Mulai PHP 5.2 juga telah tersedia konversi format data JSON yang popularitasnya sedang meningkat. Anda bisa menggunakan fungsi json_encode() dan json_decode() untuk hal yang sama.

    // array kompleks
    $myvar = array(
    	'hello',
    	42,
    	array(1,'two'),
    	'apple'
    );
    // mengubah ke string
    $string = json_encode($myvar);
    
    echo $string;
    /* prints
    ["hello",42,[1,"two"],"apple"]
    */
    
    // mengembalikan variable
    $newvar = json_decode($string);
    print_r($newvar);
    /* prints
    Array
    (
      [0] => hello
      [1] => 42
      [2] => Array
        (
          [0] => 1
          [1] => two
        )
    
      [3] => apple
    )
    */
  4. Mengkompres teks
    Kompresi sering dikaitkan dengan file ZIP. Dalam PHP, Anda bisa mengkompres teks yang panjang menjadi lebih pendek dengan fungsi gzcompress() dan mengembalikannye dengan fungsi gzuncompress().

    $string =
    "Lorem ipsum dolor sit amet, consectetur
    adipiscing elit. Nunc ut elit id mi ultricies
    adipiscing. Nulla facilisi. Praesent pulvinar,
    sapien vel feugiat vestibulum, nulla dui pretium orci,
    non ultricies elit lacus quis ante. Lorem ipsum dolor
    sit amet, consectetur adipiscing elit. Aliquam
    pretium ullamcorper urna quis iaculis. Etiam ac massa
    sed turpis tempor luctus. Curabitur sed nibh eu elit
    mollis congue. Praesent ipsum diam, consectetur vitae
    ornare a, aliquam a nunc. In id magna pellentesque
    tellus posuere adipiscing. Sed non mi metus, at lacinia
    augue. Sed magna nisi, ornare in mollis in, mollis
    sed nunc. Etiam at justo in leo congue mollis.
    Nullam in neque eget metus hendrerit scelerisque
    eu non enim. Ut malesuada lacus eu nulla bibendum
    id euismod urna sodales. ";
    
    $compressed = gzcompress($string);
    
    echo "Original size: ". strlen($string)."\n";
    /* cetak
    Original size: 800
    */
    
    echo "Compressed size: ". strlen($compressed)."\n";
    /* cetak
    Compressed size: 418
    */
    
    // mengembalikan kompresi
    $original = gzuncompress($compressed);
  5. Memanggil fungsi yang dijalankan terakhir
    Fungsi register_shutdown_function() dapat mendaftarkan fungsi yang akan dipanggil sesaat sebelum program selesai berjalan. Fungsi ini bisa Anda gunakan untuk berbagai hal, antara lain adalah untuk membuat benchmark total waktu eksekusi program Anda dari awal hingga akhir.
    Jika Anda belum mengetahui adanya fungsi ini, kemungkinan Anda akan meletakkan kode penghitungan waktu eksekusi di bagian paling bawah program seperti berikut ini.

    // waktu awal
    $start_time = microtime(true);
    
    // proses lain
    // ...
    
    // waktu akhir
    echo "execution took: ".
      (microtime(true) - $start_time).
      " seconds.";

    Namun cara ini memiliki kelemahan. Bila dalam suatu kode Anda memanggil fungsi exit(), terjadi Fatal error, ataupun user menghentikan eksekusi kode, maka baris tersebut tidak akan pernah terpanggil. Lain dengan bila Anda mendaftarkannya dalam register_shutdown_function(), maka fungsi tersebut akan dijalankan apapun yang terjadi.

    $start_time = microtime(true);
    register_shutdown_function('my_shutdown');
    
    // proses lain
    // ...
    
    function my_shutdown() {
      global $start_time;
    
      echo "execution took: ".
      (microtime(true) - $start_time).
      " seconds.";
    }
  6. Membuat ID Unik
    Salah satu permasalahan dalam dunia data adalah pembuatan ID unik. Biasanya fungsi yang digunakan adalah kombinasi md5() terhadap waktu saat kode dijalankan.

    echo md5(time() . mt_rand(1,1000000));

    PHP telah menyediakan fungsi uniqid() untuk membuat sebuah string unik. Hasil yang dikeluarkan relatif terhadap waktu server, sehingga pembuatan id yang dalam waktu berdekatan akan semakin mirip. Anda bisa menambahkan prefix maupun memperbesar entropinya melalui argument.

    // standar
    echo uniqid();
    
    // dengan prefix
    echo uniqid('hq_');
    /* prints
    hq_4bd67d6cd8b8f
    */
    
    // dengan entropy
    echo uniqid('',true);
    /* prints
    4bd67d6cd8b926.12135106
    */
    
    // prefix dan entropy
    echo uniqid('hq_',true);
    /* prints
    hq_4bd67da367b650.43684647
    */
Artikel ini pernah dipublikasikan oleh Penulis di tabloid PC Mild edisi 06/2011 lalu.
Tag: , , ,

1 Comment

Leave Comment
  1. Andi says:

    tutorial yg mantep om, ilmu baru buat ane yg newbie ^_^
    makasih banyak master :D

Write Comment

Your email will not be published. The marked label is required.