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.
Pada PHP, konstanta dapat ditulis dengan dua cara, yaitu menggunakan keyword define atau
const:
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
}
?>
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. 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.
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
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.