Imam Fahrur Rofi

PHP : Fungsi dan Aturan yang Ada di Dalamnya

Ilustrasi PHP Function

Di setiap bahasa pemrograman pasti ada fungsi, bahkan di PHP sendiri terdapat lebih dari 1000 fungsi bawaan (built-in functions) yang bisa kita gunakan. Namun di artikel ini akan membahas tentang fungsi buatan sendiri (user defined function), arguments, return value, dan strict declaration.

User Defined Function

PHP membolehkan programmer membuat fungsi sendiri, tujuan dari membuat fungsi adalah efisiensi kode, sehingga kita tidak perlu lagi membuat kode yang sama berulang-ulang jika ada kode yang sama. Fungsi perlu dipanggil untuk menjalankan kode di dalamnya.

Fungsi yang dibuat harus mengikut beberapa aturan standar komunitas, yang dijelaskan lebih rinci di laman PSR-12: Extended Coding Style - PHP-FIG (php-fig.org).
Agar memudahkan anda dalam mengikuti aturan coding style standard PHP PSR-12, kunjungi Pengaturan Ekstensi Visual Studio Code Agar Ngoding PHP Lebih Rapi

Secara garis besar isinya sebagai berikut :

  1. Penamaan fungsi harus mengikuti aturan camelCase
  2. Tidak ada jarak antara nama fungsi dengan tanda pembuka kurung 
  3. Kurung kurawal  {  dan  }  untuk fungsi harus berada di baris baru tanpa ada kode lain
  4. Jika di antara tanda kurung   )  terdapat lebih dari satu argumen, maka argumen dipisahkan oleh tanda koma dan satu spasi
  5. Jika memiliki banyak argumen, maka setiap argumen harus di tulis terpisah per baris, sedangkan tanda awal kurung kurawal  berada setelah tanda penutup kurung  ) 
  6. Jika strict declaration ditambahkan, maka setiap argumen harus memiliki tipe data
  7. Jika fungsi memiliki return value, dianjurkan untuk mengatur tipe data dari return value
  8. Penulisan spread operator atau tiga titik (...) pada argumen mengikuti aturan no 4 

Agar lebih mudah dipahami, berikut adalah contoh kode yang menerapkan aturan-aturan di atas.

Aturan no 1, 2, 3, dan 4
contoh:

<?php

// sebuah fungsi bernama myFunction dengan 3 argumen,
// salah satu argumen memiliki nilai default berupa array kosong

function myFunction($arg1, $arg2, $arg3 = [])
{
    // function body
}

?>

Aturan no 1, 2, 3, dan 5
contoh:

<?php
// sebuah fungsi bernama myFunction
// dengan 3 argumen bertipe data
// dan 1 argumen tanpa tipe data

function myFunction(
    string $arg1,
    string $arg2,
    int $arg3,
    $arg4
) {
    // function body
}?>

Aturan no 1 sampai 6
contoh:

<?php
// deklarasikan strict
declare(strict_types=1);
// sebuah fungsi bernama myFunction dengan 3 argumen bertipe data

function myFunction(
    string $arg1,
    string $arg2,
    int $arg3
) {
    // function body
}?>

Strict declaration  declare(strict_types=1);  berfungsi untuk mengurangi efek Loosely Typed Language sehingga ketika nilai yang diteruskan memiliki data tipe berbeda akan mengakibatkan error.
Contoh tanpa deklarasi strict :

<?php
// Tanpa deklarasi strict
// sebuah fungsi bernama myFunction dengan 2 argumen bertipe data integer

function myFunction(int $arg1, int $arg2)
{
    // buat variabel berisi penambahan
    $hasil = $arg1 + $arg2;

    // print variabel
    echo $hasil; 
}

// panggil fungsi dengan inputan berbeda tipe data
// int dan float
myFunction(4, 3.7);

// output : 7
?>

Contoh di atas tidak mengalami error meski argumen integer mendapat input float.

Selanjutnya tambahkan deklarasi strict :

<?php
// Deklarasi strict
declare(strict_types=1);
// sebuah fungsi bernama myFunction dengan 2 argumen bertipe data integer

function myFunction(int $arg1, int $arg2)
{
    // buat variabel berisi penambahan
    $hasil = $arg1 + $arg2;

    // print variabel
    echo $hasil; 
}

// panggil fungsi dengan inputan berbeda tipe data
// int dan float
myFunction(4, 3.7);

// output : PHP Fatal Error: Argument must be integer
?>

Error terjadi karena strict declaration mengharuskan tipe data pada input sama dengan tipe data argumen.

Aturan no 7 : Tipe data pada return value

Aturan ini sebatas dianjurkan saja, keuntungan dari menentukan tipe data pada return value adalah mengurangi human error.

Contoh fungsi dengan tipe data pada return value :

<?php
declare(strict_types=1);
function myFunction(int $arg1, int $arg2): string
{
    $hasil = $arg1 + $arg2;
    return "${arg1} + ${arg2} = ${hasil}";
}

echo myFunction(1, 2);
// Output: 1 + 2 = 3
?>

Contoh jika return value tidak sama tipe datanya dari yang telah ditentukan:

<?php
declare(strict_types=1);
function myFunction(int $arg1, int $arg2): string
{
    $hasil = $arg1 + $arg2;
    return $hasil;
}

echo myFunction(1, 2);
// Output: PHP Fatal Error: Return value must be string
?>

Aturan no 8 : Spread syntax (...)

Spread syntax atau tiga titik berurutan (...) jika digunakan sebagai argumen pada fungsi PHP, maka kegunaannya sebagai wadah untuk menampung semua input yang dimasukkan ke fungsi. Meski mirip dengan array, namun perbedaan mencolok dari spread syntax dibandingkan dengan array adalah kita perlu memasukkan input array pada fungsi dengan argumen bertipe data array, sedangkan input untuk spread syntax tetap pada tipe data yang ditentukan.

Lebih detil bisa dilihat pada komentar contoh berikut:

<?php
declare(strict_types=1);

// fungsi myFunction beragumen dengan spread syntax
// $args berupa array yang menampung semua input
// Input hanya boleh berupa integer
function myFunction(int ...$args): string
{
    // Algorima : $hasil adalah penjumlahan semua input
    $hasil = 0; // nilai awal
    
    // karena $args adalah array
    // maka bisa gunakan perulangan foreach
    foreach ($args as $arg) {
        // tambahkan setiap input ke dalam $hasil
        $hasil += $arg;
    }
    
    // kembalikan dalam bentuk string
    return "$hasil";
}

echo myFunction(1, 2);
// Output: 3
echo "<br/>". myFunction(100, 200, 123, 321);
// Output: 744
?>

Spread syntax pada PHP akan dibahas lebih dalam pada artikel lainnya.

Sekian artikel ini semoga bermanfaat. 😁


Pengaturan
Mode
Warna
Search panel