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
:
- Contoh cara penulisan konstanta dengan
define
<?php 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:
- Nama konstanta harus diawali dengan huruf atau underscore dan nama konstanta hanya boleh berisi huruf, angka dan underscore;
- 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;
- 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.
- Nama konstanta bisa sama dengan keyword PHP seperti
echo
, namun ketika memanggilnya harus menggunakan fungsiconstant
, misal:<?php define('echo', 'Saya Konstanta'); 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
- Gunakan nama konstanta yang mencerminkan nilainya;
- Gunakan huruf kapital semua, pisahkan antar kata dengan underscore, misal
CONFIG_DB
; - 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;
- Untuk menghindari konflik dengan konstanta lain dapat dilakukan dengan menguji apakan konstanta tersebut telah ada, jika belum, maka kita definisikan konstanta tersebut. contoh:
<?php $list = array('SITE_NAME' => 'JagoWebDev', 'SITE_URL' => 'www.jagowebdev.com'); foreach($list as $const_name => $const_val) { if (!defined($const_name)) { define($const_name, $const_val); } } 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:
define
dapat di deklarasikan pada conditional statement, sedangkanconst
tidak, contoh:<?php if (!defined('NAMA_SITUS')) define('NAMA_SITUS', 'Agus PH'); // Valid if (defined('URL_SITUS')) const URL_SITUS = 'www.agusph.com'; // Error ?>
define
dapat bernilai expresi seperti operasi aritmatika atau penggabungan string (concantenate), sedangkanconst
tidak, namun mulai PHP 5.6const
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, sedangkanconst
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, sedangkandefine
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); } } ?>
- Karena dijalankan pada saat compile,
const
sedikit lebih cepat daripada define, perbedaan terasa jika penggunaan konstanta dalan jumlah besar. - 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. - Semoga kedepan
const
akan memiliki fitur sama dengandefine
.
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 |
---|---|
__LINE__ |
Untuk mendapatkan baris keberapa dari kode, dihitung dari paling atas. contoh:
|
__FILE__ |
Untuk mendapatkan full path dari file beserta nama filenya. contoh:
|
__DIR__ |
Untuk mendapatkan full path direktori dari file. Contoh:
|
__FUNCTION__ |
Mendapatkan nama dari fungsi. Contoh:
|
__CLASS__ |
Mendapatkan nama dari class termasuk namespace (PHP 5.3). contoh:
|
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.
Subscibe Now
Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com