NEW!! » Premium Support - PHP, MySQL, Dll Buku Query MySQL Lihat Detail » x

Trik Coding Cepat dan Efisien Pada PHP

Coding PHP dengan cepat dan efektif merupakan suatu hal yang senantiasa ingin kita lakukan untuk itu dikesempatan kali ini, saya akan membagi beberapa pengalaman coding yang akan menghemat penulisan coding Anda dan bisa jadi akan kelihatan lebih canggih.

Menulis code seperti menyusun puisi, “seni menyusun kata” banyak sekali pilihan cara yang dapat kita lakukan untuk menempuh suatu tujuan. Cara tersebut tentu berbeda beda bagi tiap programmer, tergantung pengetahuan, pengalaman, dan jam terbang masing – masing.

Langsung saja, berikut ini beberapa alternatif coding yang bisa sobat gunakan untuk mempercepat coding:

1. Menggunakan fungsi list()

Ketika menyusun ulang susunan kata (string), kita sering menggunkan fungsi explode untuk memecah string tersebut menjadi array, kemudian menyusun ulang sesuai dengan susunan yang kita inginkan.

Sebagai contoh, biasanya format tanggal yang ada di database adalah yyyy-mm-dd, misal 2020-09-01 nah untuk menyusun ulang menjadi format dd-mm-yyyy kita melakukan coding berikut:

$nama_bulan = [1=>'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];
$tanggal_db = '2020-10-05';
$split = explode('-', $tanggal_db);
echo $split[2] . ' ' . $nama_bulan[$split[1]] . ' ' . $split[0];
// Hasil 05 Oktober 2020

Bisa juga si, yang jauh lebih ringkas:

setlocale(LC_ALL,  'id-ID');
echo strftime(%d %B %Y", strtotime('2020-10-05'));
// Hasil 05 Oktober 2020

Taruhlah kita menggunakan cara yang pertama, karena kita ingin sudah terbiasa menggunakan fungsi date (cara kedua tidak bisa diterapkan di fungsi date), maka akan lebih cepat dan mudah dibaca jika kita menggunakan fungsi list() sebagai berikut:

list($tahun, $bulan, $tanggal) = explode('-', $tanggal_db);
echo $tanggal . ' ' . $nama_bulan[$bulan] . ' ' . $tahun;

Jadi setiap menggunakan explode ingat kemungkinan bisa menggunakan fungsi list()

2. Menambahkan angka 0 di awal

Contoh kedua adalah ketika kita ingin membuat angka dengan jumlah digit yang sama, misal: 1,2,3,4,5, … 99 ingin kita buat memiliki dua digit semua, sehingga angka dibawah 10 kita tambahkan 0 didepannya

Bagaimana melakukannya?

Mungkin ada yang menggunakan cara seperti ini:

if ($angka < 10) {
	$angka = '0' . $angka;
}

Jika sobat masih menggunakan cara seperti itu, coba cara berikut:

$angka = substr('0' . $angka, -2);

Lebih ringkas dan mudah bukan?

Contoh implementasinya adalah ketika menuliskan opsi bulan sebagai berikut:

<select name="bulan">
<option value="01">Januari</option>
<option value="02">Februari</option>
<option value="03">Maret</option>
<option value="04">April</option>
<option value="05">Mei</option>
<option value="06">Juni</option>
<option value="07">Juli</option>
<option value="08">Agustus</option>
<option value="09">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">Desember</option>
</select>

Untuk membuat dropdown diatas ada yang menulisnya dengan code berikut:

$bulan = [1 => 'Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember'];

echo '<select name="bulan">';
for ($i = 1; $i <= 12; $i++) {
	if ($i < 10) {
		echo '<option value="0' . $i . '">' . $bulan[$i] . '</option>';
	} else {
		echo '<option value="' . $i . '">' . $bulan[$i] . '</option>';
	}
}
echo '</select>';

Penulisan diatas dapat diringkas menjadi:

echo '<select name="bulan">';
for ($i = 1; $i <= 12; $i++) {
	echo '<option value="' . substr('0' . $i, -2) . '">' . $bulan[$i] . '</option>';
}
echo '</select>';

Dari contoh diatas, juga dapat diambil pelajaran bahwa jika sobat menulis kode yang panjang dan berulang, maka ajukan pertanyaan ke diri sendiri, bisakah menggunakan loop?

Jika ya, dan kebanyakan ya, maka gunakan loop

Pada contoh diatas, selain lebih cepat dan ringkas, jika ada perubahan pada option kita tinggal mengubah data pada array saja

3. Menulis Query SQL Dengan Cepat

Contoh lain adalah ketika ingin memasukkan data pada database menggunakan perintah sql INSERT, misal kita ingin memasukkan data profil user pada form registrasi sebagai berikut:

$sql = 'INSERT INTO user( email ,  nama ,  alamat ,  no_hp ,  password )
		VALUES ("' . $_POST['email'] . '"
				, "' . $_POST['nama'] . '"
				, "' . $_POST['alamat'] . '"
				, "' . $_POST['no_hp'] . '"
				, "' . password_hash($_POST['nama'], PASSWORD_DEFAULT) . '"
		)';

Bandingkan dengan cara berikut ini:

<?php
$list_field = ['email', 'nama', 'alamat', 'no_hp', 'password'];

foreach ($list_field as $field) {
	if ($field == 'password') 
		$list_value[] = password_hash($_POST['nama'], PASSWORD_DEFAULT);
	else 
		$list_value[] = $_POST[$field];
}
$sql = 'INSERT INTO user(' . join($list_field, ', ') . ') VALUES ("' . join($list_value, '", "') . '")';

Cara diatas lebih aman dan stabil, karena jika ada perubahan data, kita cukup mengganti nilai yang ada pada array saja, misal kita ingin menambahkan field kota, maka kita cukup merubah data $list_field menjadi:

$list_field = ['email', 'nama', 'alamat', 'no_hp', 'kota', 'password'];

Cara diatas juga merupakan penerapan prinsip DRY (don’t repeat yourself), dimana sebisa mungkin kita menghindari penulisan yang sama di lebih dari satu tempat, pada cara diatas, ketika ada perubahan data, kita perlu mengubah script di dua tempat, yaitu di nama kolom dan di value kolom (di variabel $_POST.

4. Logika dengan banyak kondisi OR

Ketika coding kita pasti sering menggunakan banyak operator logika seperti if pada operator logika tersebut, terkadang mengandung banyak operator OR.

Sebagai contoh kita ambil data anggaran dari database kemudian kita uji kode anggarannya sebagai berikut:

$sql = 'SELECT * FROM anggaran';
$conn = mysqli_conncect('localhost', 'root', 'pass', 'anggaran');
$query = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($query)) {
	if ($row['kode'] == 'A' || $row['kode'] == 'a') {
		echo $row['jumlah_anggaran'];
	}
}

Pada baris 5 kita mengakomodir semua kondisi, seharusnya didatabse penulisan kode menggunakan huruf besar yaitu “A”, tetapi untuk antisipasi salah input menjadi huruf kecil “a” kita tulis dua kondisi.

Kondisi ini dapat dipersingkat sebagai berikut:

$kode = strtolower($row['kode']);
if ($kode == 'a') {
	echo $row['jumlah_anggaran'];
}

Selanjutnya jika kondisi OR lebih dari satu, maka biasanya kita menulis:

$kode = strtolower($row['kode']);
if ($kode == 'a' || $kode == 'b' || $kode == 'c') {
	echo $row['jumlah_anggaran'];
}

Kode diatas tidak masalah dan sudah wajar, namun, bisa lebih dipersingkat lagi dengan fungsi in_array() sebagai berikut:

$kode = strtolower($row['kode']);
if ( in_array($kode, ['a','b','c']) ) {
	echo $row['jumlah_anggaran'];
}

Dengan cara diatas, jika ada perubahan kondisi, kita tambahkan element pada array, jauh lebih simpel, tapi mungkin lebih sulit dipahami dibanding menulis operator OR secara manual

But, at least ketika kita sudah terbiasa, akan lebih nyaman.

Sekian dulu trik coding php dari saya, soalnya baru itu yang keinget, mungkin ada dari pembaca yang punya trik juga? silakan share di comment ya…

Salam…

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.

16 Feedback dari pembaca

  • list($tahun, $bulan, $tanggal) = explode(‘-‘, $tanggal_db);
    echo $tanggal . ‘ ‘ . $nama_bulan[$bulan] . ‘ ‘ . $tahun;

    Cara ini tidak jalan. Karena key dari array nama_bulan itu 1, 2, 3 dst
    dalam kasus format tgl 2020-01-01

  • Sudah mas.
    Variable tanggalnya
    $tanggal_db = “2020-01-01”;

    Array nama bulannya
    $nama_bulan = [1 => “Januari”, “Februari”];

    Solusi saya,
    $tanggal_db = date(“Y-n-d”, strtotime($tanggal_db);

    Fitur balas komentar kok g bisa ya? Saya pake HP.

    Maturnuwun.. Semoga ilmu yg mas bagikan berkah dan menjadikan tambahnya kebaikan untuk mas dan pembaca. Amin

    • Aamiin, terima kasih mas…
      Terima kasih juga atas report error di bagian comment reply

      Coding lengkapnya seperti apa mas?
      Yang seperti ini saya coba bisa jalan dengan baik:

      $tanggal_db = "2020-01-01";
      $nama_bulan = [1 => "Januari", "Februari"];
      list($tahun, $bulan, $tanggal) = explode("-", $tanggal_db);
      $bulan = (int) $bulan;
      echo $tanggal . ' ' . $nama_bulan[$bulan] . ' ' . $tahun;
      • Saya waktu itu pake tutorial mas yang ini:

        $nama_bulan = [1=>'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];
        $tanggal_db = '2020-10-05';
        
        list($tahun, $bulan, $tanggal) = explode('-', $tanggal_db);
        echo $tanggal . ' ' . $nama_bulan[$bulan] . ' ' . $tahun;
        

        hanya saja, $tanggal_db nya saya ganti ke 2020-01-01. Hasilnya tidak work, karena $bulan isinya adalah 01, bukan 1. kalau tanggalnya persis seperti tutorial mas, work. karena memang isi dari $bulan adalah 10, dan key >10 itu ada.

        kalau yang code mas coba ini:

        $tanggal_db = "2020-01-01";
        $nama_bulan = [1 => "Januari", "Februari"];
        list($tahun, $bulan, $tanggal) = explode("-", $tanggal_db);
        $bulan = (int) $bulan;
        echo $tanggal . ' ' . $nama_bulan[$bulan] . ' ' . $tahun;
        

        jelas work, karena isi dari $bulan jadi 1, bukan 01.
        dan ini lebih simpel dari pada problem solved saya. hehehe.. Makasih mas.
        cukup dengan (int) saja. gak perlu panjang-panjang seperti ini $tanggal_db = date(“Y-n-d”, strtotime($tanggal_db);

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com

Jasa Konsultasi PHP MySQL Website Dengan Ahlinya

Like Us