Function pada PHP

Function atau fungsi pada program digunakan untuk mengeksekusi sejumlah perintah dengan satu panggilan.

function hello() {
  echo 'Hello world!";
}

Di atas adalah contoh deklarasi suatu fungsi untuk menampilkan teks hello world. Fungsi di atas belum melakukan apa-apa sampai dipanggil. Untuk memanggil fungsi, cukup ketik nama fungsi tersebut.

hello();

Output:

Hello world!

Return pada fungsi PHP

Suatu fungsi dapat memiliki suatu nilai seperti suatu variabel bila menggunakan statement return.

function tanggalSQL() {
  $now = time();
  return date('Y-m-d', $now);
}

Fungsi di atas mengembalikan tanggal hari ini pada komputer dengan format ISO yang dapat langsung diinsert ke database. Untuk menggunakan fungsi seperti di atas, dapat langsung echo tanggalSQL(); atau dimasukkan ke variabel seperti berikut:

$today = tanggalSQL();
$perintah = "INSERT INTO catatan VALUES ('hari ini belajar fungsi', '$today');"
echo $perintah;

output:

INSERT INTO catatan VALUES ('hari ini belajar fungsi', '2016-06-25');

Fungsi PHP dengan parameter

Argumen atau parameter adalah variabel yang dioper ke dalam fungsi. Fungsi dengan parameter sangat fleksibel dalam pemakaiannya. Sehingga kebanyakan fungsi selalu memiliki argumen. Contoh:

function tanggalSQL($timestamp) {
  return date('Y-m-d', $timestamp);
}
function kemarin() {
  return tanggalSQL(time()-3600*24));
}

Maka fungsi di atas dapat digunakan seperti:

$besok = tanggalSQL(time() + 3600*24);
$kemarin = kemarin();
echo "Tanggal kemarin: $kemarin, besok: $besok. Hari ini tanggal berapa?";

Output:

Tanggal kemarin: 2016-04-24, besok: 2016-04-25. Hari ini tanggal berapa?

Fungsi PHP dengan parameter opsional

Seandainya terkadang kita ingin menggunakan fungsi tanggalSQL() tanpa parameter, dan terkadang dengan parameter, maka kita dapat membuatnya opsional dengan cara:

function tanggalSQL($timestamp='') {
  if ($timestamp == '') $timestamp = time();
  return date('Y-m-d',$timestamp);
}
echo 'Hari ini tanggal '.tanggalSQL();

Output:

Hari ini tanggal 2016-06-25

Fungsi PHP dengan multi parameter

function initDB($db, $user, $pass, $port=3306) {
  $host = 'localhost';
  $pdo = new \PDO("mysql:host=$host;port=$port;dbname=$db;",$user,$pass,[
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ
  ]);
  return $pdo;
}

Dengan fungsi di atas, kita dapat melakukan:

$db = initDB('test','root','');
$db->query('CREATE TABLE IF NOT EXISTS test (id INT PRIMARY KEY AUTO_INCREMENT, nama VARCHAR(100)) engine=innodb;');
$stmt = $db->query('SELECT COUNT(*) FROM test');
$jumbar = $stmt->fetch(\PDO::FETCH_NUM)[0];
$db->query("INSERT INTO test VALUES (NULL,'nama".++$jumbar."')");
$db->query("INSERT INTO test VALUES (NULL,'nama".++$jumbar."')");
$db->query("INSERT INTO test VALUES (NULL,'nama".++$jumbar."')");
$stmt = $db->query('SELECT * FROM test');
$hasil = $stmt->fetchAll();
echo "<pre>".print_r($hasil,true)."</pre>";

Output:

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [nama] => nama1
        )

    [1] => stdClass Object
        (
            [id] => 2
            [nama] => nama2
        )

    [2] => stdClass Object
        (
            [id] => 3
            [nama] => nama3
        )

)

Variable scope pada fungsi PHP

Pada PHP, variabel yang dideklarasi di luar fungsi, tidak dikenal di dalam fungsi. Contoh:

$kalimat = "Hari ini belajar fungsi PHP";
function testing() {
  echo "Isi kalimat: $kalimat";
}
testing();

Akan mengakibatkan warning, dan $kalimat akan kosong.

Notice: Undefined variable: kalimat in D:\webcodes\SSBIN\public\test.php on line 7
Isi kalimat:

Agar variabel tersebut dapat dibaca, ada dua pilihan, yaitu menggunakan keyword global:

$kalimat = "Hari ini belajar fungsi PHP";
function testing() { global $kalimat;
  echo "Isi kalimat: $kalimat";
}
testing();

Atau menggunakan variabel $GLOBALS

$kalimat = "Hari ini belajar fungsi PHP";
function testing() { global $kalimat;
  echo "Isi kalimat: ".$GLOBALS['kalimat'];
}
testing();

Output dari kedua potongan program di atas:

Isi kalimat: Hari ini belajar fungsi PHP