Heredoc Pada PHP

Sebagaimana telah dibahas pada artikel  Cara Penulisan String Pada PHP  Salah satu cara  penulisan  string pada PHP adalah menggunakan dua tanda kutip (double quote), namun pada kondisi tertentu string  yang  ingin kita tullis bentuknya  panjang misal kode HTML atau SQL (contoh ada di paling bawah). Jika didalam string tersebut terdapat banyak  dua tanda kutip, maka banyak kekurangan yang kita dapati:

  • jika ada kesalahan akan lebih sulit untuk diperbaiki.
  • akan merepotkan jika kita harus melakukan escape untuk setiap penulisan tanda kutip.
  • kode terlihat tidak rapi.

untuk itu salah satu solusinya adalah menggunakan heredoc.

I. Apa itu Heredoc Pada PHP

Heredoc adalah cara lain penulisan string pada PHP dimana kita tidak perlu melakukan escape (menuliskan \) untuk setip dua  tanda kutip yang kita tulis. Dengan heredoc seolah olah kita menulis string dengan  doubel quote namun tanpa harus melakukan escape  pada dua tanda kutip (double quote) yang kita tulis

II. Cara Penulisan Heredoc pada PHP

Penulisan heredoc harus memenuhi ketentuan sebagai berikut:

  1. Heredoc diawali dengan menuliskan operator <<< diikuti dengan identifier, penulisan identifier bebas namun harus memenuhi syarat:
    • Hanya boleh menggunakan alphanumeric dan underscore.
    • Tidak boleh diawali dengan angka maupun underscore.
    • Antara operator <<< dan identifier boleh dipisah dengan spasi.
  2. Tulis string yang diinginkan pada baris baru  setelah identifier.
  3. Heredoc  ditutup dengan identifier yang sama dan harus memenuhi syarat:
    • Identifier penutup ditulis pada baris baru dan pada kolom pertama dan diikuti  dengan semicolon (;), tidak ada spasi antara  identifier dan semicolon.
    • Sebelum atau sesudah identifier dan semicolon, tidak boleh ada karakter lain termasuk spasi atau indent, sehingga baris tersebut hanya berisi identifier dan  semicolon.

III. Beberapa Contoh Penulisan Heredoc Pada PHP

Setelah mengetahui cara  penulisan heredoc, berikut ini merupakan contoh penulisan  heredoc pada  PHP:

<?php
$str = <<<LABEL_SAYA
Contoh penulisan heredoc pada PHP.
Menulis string tanpa escape (back slash) pada PHP.
Contoh kata Jum'at dengan satu tanda kutip atau
Jum"at dengan dua tanda kutip
LABEL_SAYA;

echo $str;

pada contoh diatas kita menggunakan LABEL_SAYA sebagai indentifier, disana kita bebas menggunakan tanda kutip baik satu tanda kutip (single quote) maupun dua tanda kutip (doubel quote). Perhatikan juga bahwa kita menulis kalimat dalam beberapa baris, namun ketika kita jalankan di browser, output yang kita peroleh hanya satu baris, itu disebabkan karena untuk membentuk baris baru kita memerlukan tag <br/>, sedangkan di contoh diatas  tidak ada tag tersebut.

IV. Memasukkan/Menulis Variabel  Pada Heredoc

Untuk menambahkan variabel di dalam heredoc, terdapat beberapa cara penulisan, yaitu:

  • Dapat langsung ditulis nama variabelnya.
  • Dapat menggunakan kurung kurawa {} untuk mengisolali variable.

berikut ini contoh penulisan variabel didalam heredoc, dimana tipe data  variabel tersebut berupa primitive, array dan object:

class Siswa 
{	
	private $nama;
	private $alamat;
	public $nis;
	
	public function __construct() {
		$this->nama = 'agusph';
		$this->alamat = 'Jakarta';
		$this->nis = '1234';
	}
	
	public function getNama() {
		return $this->nama;
	}
	
	public function getAlamat() {
		return $this->alamat;
	}
}

$siswa 		= new Siswa(); // Tipe data object
$lang 		= 'php'; // Tipe data primitive (string)
$tbl_prefix	= 'xxs_';
$identitas 	= array('nama' => 'agusph', 'ttl' => 'Jakarta'); // Tipe data array

$str = <<<EOD
Contoh penulisan heredoc pada $lang.
Contoh menggunakan heredoc untuk menulis
variabel: "$lang", 
variabel: nama tabel {$tbl_prefix}nilai_siswa, 
array dengan satu tanda kutip: {$identitas['nama']},
array dengan dua tanda kutip: {$identitas["ttl"]}, 
object property: $siswa->nis, dan
object method: {$siswa->getNama()}
EOD;

echo $str;

Contoh diatas menghasilkan output: Contoh penulisan heredoc pada php. Contoh menggunakan heredoc untuk menulis variabel: “php”, variabel: nama tabel xxs_siswa, array dengan satu tanda kutip: agusph, array dengan dua tanda kutip: Jakarta, object property: 1234, dan object method: agusph

Catatan: pada contoh diatas kita menggunakan EOD  sebagai indentifier, terkadang kita sering menemukan  identifier seperti EOD atau EOT, yang merupakan kependekan dari End Of Document/Data (EOD) dan End Of Text (EOT)

V. Memasukkan/Menulis  Constant Pada Heredoc

Dalam heredoc, kita tidak dapat memasukkan constant, hanya bisa memasukkan  variabel, sehingga jika ingin memasukkan constant, terlebih dahulu  kita simpan nilai constant tersebut ke dalam variabel, kemudian memasukkannya kedalam heredoc, contoh:

<?php
define('HARI', 'jum\'at');
define('HARI2', 'jum"at');

$hari = HARI;
$hari2 = HARI2;

$str = <<<EOT
Contoh penulisan constant pada heredoc.
Menulis string tanpa escape (back slash) pada PHP.
Contoh kata $hari dengan satu tanda kutip atau
$hari2 denngan dua tanda kutip
EOT;

echo $str;

bagaimana jika constant yang ingin kita masukkan jumlahnya banyak?, untuk mengatasi hal tersebut, terlebih dahulu kita simpan nama  fungsi yaitu constant ke dalam variabel kemudian memanggilnya di dalam heredoc. Contoh:

<?php
define('HARI', 'jum\'at');
define('HARI2', 'jum"at');
define('NAMA', 'agusph');
define('ALAMAT', 'Solo');

$constant = 'constant';

$str = <<<EOT
Contoh penulisan heredoc pada PHP.
Menulis string tanpa escape (back slash) pada PHP.
Contoh kata {$constant('HARI')} dengan satu tanda kutip atau
{$constant('HARI2')} denngan dua tanda kutip.
Nama {$constant('NAMA')} alamat {$constant('ALAMAT')}
EOT;

echo $str;

VI. Memasukkan/Menulis Fungsi Pada  Heredoc

Pertanyaan selanjutnya adalah bisakah kita  memasukkan fungsi ke dalam heredoc? jawabnya adalah bisa. Caranya adalah sama dengan ketika kita memasukkan fungsi constant dalam php (seperti contoh sebelumnya), yaitu menyimpan nama fungsi kedalam variabel. Berikut ini contoh memasukkan fungsi kedalam heredoc:

<?php
function predikat($nilai)
{
	if ($nilai > 8)
		return 'sangat baik';
	else
		return 'perlu ditingkatkan';
}

$fungsi = 'predikat';
$nilai1 = 9;
$nilai2 = 7;

$str = <<<EOT
Contoh penulisan fungsi pada PHP. <br/>
Nilai Fulan {$fungsi($nilai1)} dan nilai Abdul {$fungsi(9)}, 
sedangkan nilai Fulanah {$fungsi($nilai2)}
EOT;

echo $str;

contoh diatas menghasilkan output:  Contoh penulisan fungsi pada PHP.  Nilai Fulan sangat baik dan nilai Abdul sangat baik, sedangkan nilai Fulanah perlu ditingkatkan.perlu

VII. Contoh Penulisan Kode HTML dan SQL Dengan Heredoc

Berikut ini contoh lain penggunaan heredoc yaitu penulisan koe HTML dan SQL, dengan heredoc  kita tidak  terganggu oleh keharusan menggunakan  escape untuk setiap tanda kutip yang kita tuliskan.

Contoh heredoc untuk penulisan kode HTML:

<?php
$str = <<<HTML
<form method="POST" action="">
	<input type="text" name="email" value="{$_POST['email']}">
	<input type="text" name="nama" value="{$_POST['nama']}">
	<input type="text" name="ttl" value="{$_POST['ttl']}">
	<input type="text" name="username" value="{$_POST['username']}">
	<input type="text" name="password" value="{$_POST['password']}">
	<input type="submit" name="submit" value="Daftar">
</form>
HTML;

echo $str;

Contoh penggunaan heredoc untuk penulisan SQL:

<?php
$sql = <<<SQL
SELECT CONCAT(byr.kd_plg, "-", byr.kd_kntr, ".", byr.kd_cab) AS id_plg,
		SUM(CASE 
			WHEN tgl_byr > "20140100" 
				AND tgl_byr < "20141299" 
			THEN jml_byr 
			ELSE 0 
			END
		) AS total_2014, 
		SUM(CASE 
			WHEN(
					(kd_unit = "TVLED" AND kd_prod = "1115")
					OR (kd_unit = "TVLED" AND kd_prod = "1215") 
					OR (kd_unit = "KLKS" AND kd_prod = "1115")
					OR (kd_unit = "ACSPLIT" AND kd_prod = "1115") 
					OR (kd_unit = "ACSPLIT" AND kd_prod = "1215") 
				)
				AND tgl_prod LIKE "%2015" 
				AND	tgl_byr > "20150100" 
				AND tgl_byr < "20151299"
			THEN jml_byr 
			ELSE 0 
			END
		) AS rutin_2015, 
		SUM(CASE 
				WHEN tgl_byr > "20150100" 
					AND tgl_byr < "20151299" 
				THEN jml_byr 
				ELSE 0 END
			) AS total_2015 
FROM byr
LEFT JOIN pelanggn USING(kd_plg, kd_kntr, kd_cab)
LEFT JOIN produk USING(kd_prod)
WHERE (tgl_byr > "20140100" AND tgl_byr < "20141299") 
		OR (tgl_byr > "20150100" AND tgl_byr < "20151299") 
GROUP BY kd_npwp, kd_cabang
ORDER BY total_2015 DESC
SQL;

$stmt->prepare($sql);
$result = $stmt->execute();

Demikian pembahasan tentang  heredoc pada PHP, semoga dapat bermanfaat.

Subscibe Now

Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com

Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun.

2 Feedback dari pembaca

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com