ffCCBot/2.0 (http://commoncrawl.org/faq/)
NEW!! Buku Query MySQL Lihat Detail » x

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.

Recomended Post

Silakan tinggalkan komentar

Like Us

Dapatkan update artikel terbaru via E-Mail
  1. Eksklusif Cheat Sheet PHP Bahasa Indonesia – Pendamping Belajar PHP

  2. PHP FORM III: Menampilkan Data MySQL Dengan PHP dan Form HTML

  3. Tutorial PHP Form II: Menampilkan Hasil Input Form HTML dengan PHP

  4. Tutorial PHP Form I: Menghubungkan Form HTML dengan PHP

  5. Menampilkan Data Dari Beberapa Tabel MySQL – JOIN Pada MYSQL

  6. Memahami dan Menampilkan Tanggal dan Waktu Pada PHP

  7. Menghitung Selisih Waktu Dengan PHP – Cara Termudah

  8. Memahami Fungsi Date Pada PHP

  9. Memahami Fungsi Time, Strtotime, dan Mktime Pada PHP – Memanipulasi Waktu

  10. Memahami Zona Waktu (Timezone) dan Selisih Waktu Pada PHP