Anda di halaman 1dari 6

Memahami Konstanta Pada PHP

Setelah sebelumnya kita membahas mengenai variabel dalam php pada kesempatan kali ini kita
akan membahas mengenai konstanta pada PHP.

PHP menyediakan 2 jenis tempat penyimpanan nilai yaitu variabel (variable) dan konstanta
(constant), sehingga konstanta ini sendiri fungsinya sama seperti variabel yaitu menyimpan
nilai, namun bedanya nilai yang disimpan konstanta tidak dapat diubah.

Karena sifat nilainya yang tetap, konstanta sering digunakan untuk data konfigurasi, seperti
nama server, nama database, dll.

I. Cara Penulisan Konstanta Pada PHP

Pada PHP, konstanta dapat ditulis dengan dua cara, yaitu menggunakan keyword define atau
const:

1. Contoh cara penulisan konstanta dengan define


2. <?php
3. define('URL_SITUS', 'www.jagowebdev.com');
echo URL_SITUS; //www.jagowebdev.com

Catatan: penulisan define dapat digunakan dimana saja kecuali di dalam class, contoh:

<?php
class siteProp()
{
define('URL_SITUS', 'www.jagowebdev.com'); // Error
public function getProp()
{
// code
}
}
?>
Contoh penulisan konstanta dengan const
<?php
const URL_SITUS = 'www.jagowebdev.com';
echo URL_SITUS; //www.jagowebdev.com

Catatan: penulisan const dapat digunakan dimana saja, namun pada PHP versi < 5.3, hanya
dapat digunakan di dalam kelas (class) contoh:
<?php
const URL_SITUS = 'www.jagowebdev.com'; // Valid pada PHP > 5.3
class siteProp()
{
const URL_SITUS = 'www.jagowebdev.com'; // Valid
}
?>

Terdapat beberapa ketentuan dalam penulisan konstanta pada PHP, yaitu:

1. Nama konstanta harus diawali dengan huruf atau underscore dan nama
konstanta hanya boleh berisi huruf, angka dan underscore;
2. Nama konstanta bersifat case sensitive untuk penggunaan keyword const, yang berarti
membedakan antara huruf besar dan huruf kecil, sedangkan jika menggunakan define,
secara default bersifat case sensitive, namun optional dapat di buat case insensitive;
3. Konstanta hanya dapat diisi nilai scalar, seperti boolean, int, float, atau string dan array
tidak dapat diisi selain itu, seperti object (class).

Mulai PHP 7, Konstanta dapat diisi array, contoh penggunaannya ada dibagian: Contoh
Penggunaan Konstanta Pada PHP.

4. Nama konstanta bisa sama dengan keyword PHP seperti echo, namun ketika
memanggilnya harus menggunakan fungsi constant, misal:
5. <?php
6. define('echo', 'Saya Konstanta');
7. echo constant('echo'); // Saya Konstanta
?>

lebih jauh mengenai perbedaan penggunaan define dan const akan disampaikan pada bagian
akhir tulisan ini.
II. Tips Terkait Penggunaan Konstanta Pada PHP
Beberapa tips yang dapat digunakan untuk penulisan konstanta

1. Gunakan nama konstanta yang mencerminkan nilainya;


2. Gunakan huruf kapital semua, pisahkan antar kata dengan underscore, misal CONFIG_DB;
3. Hindari penggunaan nama yang diawali dengan dua underscore dan diakhiri dua
underscore, seperti: __NAMA__, karena selain akan membuat rancu, juga akan
berpotensi bentrok dengan konstanta bawaan PHP. Jika bentrok, maka tidak akan muncul
pesan error tetapi nilai konstanta yang dihasilkan adalah nilai konstanta bawaan PHP;
4. Untuk menghindari konflik dengan konstanta lain dapat dilakukan dengan menguji
apakan konstanta tersebut telah ada, jika belum, maka kita definisikan konstanta tersebut.
contoh:
5. <?php
6. $list = array('SITE_NAME' => 'JagoWebDev', 'SITE_URL' =>
'www.jagowebdev.com');
7. foreach($list as $const_name => $const_val)
8. {
9. if (!defined($const_name))
10. {
11. define($const_name, $const_val);
12. }
13. }
14.
15. echo SITE_URL; // www.jagowebdev.com
?>
III. Scope
Konstanta bersifat global, sehingga konstanta yang telah di deklarasikan dapat digunakan
dimanapun baik di dalam fungsi maupun diluar fungsi.

IV. Perbedaan Penggunaan define dan const


Sejak versi 5.3, PHP mengijinkan penulisan konstanta dengan keyword const digunakan di luar
class. define dieksekusi saat program run time, sedangkan const pada saat compile kode
program, sehingga memunculkan beberapa perbedaan, berikut beberapa perbedaan tersebut:

1. define dapat di deklarasikan pada conditional statement, sedangkan const tidak, contoh:
2. <?php
3. if (!defined('NAMA_SITUS'))
4. define('NAMA_SITUS', 'Agus PH'); // Valid
5.
6. if (defined('URL_SITUS'))
7. const URL_SITUS = 'www.agusph.com'; // Error
?>
define dapat bernilai expresi seperti operasi aritmatika atau penggabungan string
(concantenate), sedangkan const tidak, namun mulai PHP 5.6 const juga dapat
bernilai exspresi. Contoh:
<?php
define('MAX_EXEC', 60 * 3); // Valid
define('MAX_TIME', MAX_EXEC + 360); // Valid
define('NAMA_LENGKAP', NAMA_DEPAN . NAMA_BELAKANG) // Valid
const MAX_EXEC = 60 * 3; // Valid mulai PHP 5.6
?>
define dapat di buat menjadi case insensitive, sedangkan const tidak. contoh:
<?php
define('MAX_EXEC', 180, true);
echo MAX_EXEC; // 180
echo max_exec; // 180
const MAX_TIME = 180;
echo MAX_TIME; // 180
echo max_time; // Error
?>
const hanya menerima plain text untuk nama, sedangkan define tidak (bisa variabel), contoh
seperti syntax sebelumnya:
<?php
$list = array('SITE_NAME' => 'Agus PH', 'SITE_URL' => 'www.agusph.com');
foreach($list as $const_name => $const_val)
{
if (!defined($const_name))
{
define('CFG_' . $const_name, $const_val);
}
}
?>
5. Karena dijalankan pada saat compile, const sedikit lebih cepat daripada define,
perbedaan terasa jika penggunaan konstanta dalan jumlah besar.
6. Penggunaakn const dirasa lebih bagus dari segi estetika penulisan, karena mengikuti
pola deklarasi yang umum digunakan (menggunakan tanda =), disamping juga konsisten
dalam penulisan baik didalam class maupun diluar class dan dalam penggunaan
namespace.
7. Semoga kedepan const akan memiliki fitur sama dengan define.

V. Konstanta Pada PHP (built-in)


PHP sendiri menyediakan beberapa konstanta yang bisa langsung kita gunakan, konstanta ini
dibuat oleh berbagai ekstensi, sehingga hanya tersedia ketika ekstensi tersebut tersedia baik pada
saat loading atau saat kompilasi. beberapa diantaranya:

Nama Konstanta Keterangan


Untuk mendapatkan baris keberapa dari kode, dihitung dari paling atas. contoh:
<?php
__LINE__
echo __LINE__; // 3
?>
Untuk mendapatkan full path dari file beserta nama filenya. contoh:
__FILE__ <?php
echo __FILE__; // E:xampp-1.8.3.2htdocstuts.php
?>
Untuk mendapatkan full path direktori dari file. Contoh:
__DIR__ <?php
echo __DIR__; // E:xampp-1.8.3.2htdocs
?>
Mendapatkan nama dari fungsi. Contoh:
<?php
function testFunction()
__FUNCTION__ {
echo __FUNCTION__;
}
testFunction(); // testFunction
?>
Mendapatkan nama dari class termasuk namespace (PHP 5.3). contoh:
<?php
namespace AppLibraries;

class testClass
{
__CLASS__ public function testMagicConstant()
{
echo __CLASS__;
}
}
$class = new testClass;
$class->testMagicConstant(); // AppLibrariestestClass
?>
VI. Contoh Penggunaan Konstanta Pada PHP
Mulai PHP versi 7, kita dapat mendefinisikan konstanta dengan array. Penggunaan array akan
mempermudah kita dalam mengelompokkan jenis konstanta. Contoh kali ini kita akan
menggunakan konstanta sebagai konfigurasi server:

file config.php

define ('SITE_NAME', 'jagowebdev');


define ('DB_CONFIG', ['host' => 'localhost',
'port' => '3306',
'db_name' => 'jagowebdev',
'user' => 'root',
'pass' => ''
]
);

file connect.php

<?php
include 'config.php';
try
{
$service = new PDO(
'mysql:host='.DB_CONFIG['host'].';port='.DB_CONFIG['port'] . ';dbname=' .
DB_CONFIG['db_name'],
DB_CONFIG['user'],
DB_CONFIG['pass'],

array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1)
);
$service->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
$errMessage = 'Gagal terhubung ke Database';
echo $errMessage . ':' . $e->getCode() . ':' . $e->getMessage();
}
?>
Demikian pembahasan mengenai konstanta pada PHP, semoga bermanfaat dan selamat mencoba.

Anda mungkin juga menyukai