Menggunakan sprintf () jauh lebih bersih dan aman untuk memformat string Anda.
Misalnya ketika Anda berurusan dengan variabel input, itu mencegah kejutan yang tidak terduga dengan menentukan format yang diharapkan di muka (misalnya, bahwa Anda mengharapkan string [ %s
] atau angka [ %d
]). Ini berpotensi membantu dengan kemungkinan risiko injeksi SQL , tetapi itu tidak akan mencegah jika string terdiri dari tanda kutip.
Ini juga membantu menangani float, Anda dapat secara eksplisit menentukan presisi digit (misalnya %.2f
) yang menyelamatkan Anda dari menggunakan fungsi konversi.
Keuntungan lainnya adalah bahwa sebagian besar bahasa pemrograman utama memiliki implementasi sendiri sprintf()
, jadi setelah Anda terbiasa, itu bahkan lebih mudah digunakan, daripada belajar bahasa baru (seperti cara menggabungkan string atau mengubah float).
Singkatnya, ini adalah praktik yang baik untuk digunakan agar memiliki kode yang lebih bersih dan lebih mudah dibaca.
Misalnya, lihat contoh nyata di bawah ini :
$insert .= "('".$tr[0]."','".$tr[0]."','".$tr[0]."','".$tr[0]."'),";
Atau beberapa contoh sederhana yang mencetak misalnya '1','2','3','4'
:
print "foo: '" . $a . "','" . $b . "'; bar: '" . $c . "','" . $d . "'" . "\n";
dan mencetak dengan string yang diformat:
printf("foo: '%d','%d'; bar: '%d','%d'\n", $a, $b, $c, $d);
di mana printf()
setara dengan sprintf()
, tetapi menghasilkan string yang diformat alih-alih mengembalikannya (ke variabel).
Mana yang lebih mudah dibaca?