PHP - Penyukatan Kekeras: Panduan Pemula

Hai sana, para ahli PHP masa depan! Saya begitu gembira untuk membawa anda dalam perjalanan melalui dunia yang menarik penyukatan keras PHP. Sebagai seseorang yang telah mengajar PHP selama tahun, saya dapat mengatakan bahwa memahami konsep ini akan membuat anda menjadi pemrogram yang jauh lebih baik. Jadi, mari kita masuk ke dalam!

PHP - Strict Typing

Apa Itu Penyukatan Keras?

Sebelum kita masuk ke dalam hal-hal kecil, mari kita memahami apa yang dimaksud penyukatan keras. Bayangkan anda sedang memasak kue. Anda tidak akan menggunakan garam sebagai ganti gula, kan? Itu karena resep itu ketat tentang bahan-bahan yang harus digunakan. Demikian pula, penyukatan keras di PHP adalah tentang being tepat dengan jenis data yang kita gunakan dalam kode kita.

Mengapa Penyukatan Keras Penting

Anda mungkin bertanya-tanya, " Mengapa harus peduli tentang penyukatan keras?" Well, teman kecil, penyukatan keras membantu mencegah kutu, membuat kode anda lebih dapat dipercaya, dan bahkan dapat meningkatkan kinerja. Itu seperti memiliki penjaga waspada untuk kode anda!

Contoh: Bahaya Penyukatan Longgar

Mari kita mulai dengan contoh sederhana untuk menunjukkan mengapa penyukatan keras bisa menjadi penyelamat:

function addNumbers($a, $b) {
return $a + $b;
}

echo addNumbers(5, "10");  // Output: 15
echo addNumbers("5", "10");  // Output: 15

Dalam contoh ini, PHP secara otomatis mengkonversi string "10" menjadi integer. Perilaku ini, yang disebut jongkeng jenis, kadang-kadang dapat menyebabkan hasil yang tak terduga. Apa jika seseorang secara kebetulan mengirimkan string yang tidak dapat dikonversi menjadi nomor? Kacau ensues!

Memasuki Type Hints

Type hints seperti name tags untuk parameter fungsi anda. Mereka memberitahu PHP, "Hey, saya hanya ingin jenis data spesifik ini di sini!"

Mari kita tingkatkan contoh sebelumnya:

function addNumbers(int $a, int $b) {
return $a + $b;
}

echo addNumbers(5, 10);  // Output: 15
echo addNumbers("5", "10");  // Melempar TypeError

Sekarang, jika seseorang mencoba mengirimkan string sebagai ganti integer, PHP akan marah (teknisnya, melempar TypeError). Itu seperti memiliki penjaga di klub yang memeriksa ID!

Type Hints Tersedia

PHP menawarkan berbagai type hints. Berikut adalah tabel yang praktis dari yang paling umum:

Type Hint Deskripsi
int Bilangan bulat
float Bilangan pecahan
string String teks
bool Nilai Boolean (benar/salah)
array Array
object Object apa saja
callable Fungsi atau metode yang dapat dipanggil
iterable Array atau objek yang mengimplementasi Traversable
self Sama jenis kelas seperti yang digunakan
?type Jenis nullable (bisa jenis spesifik atau null)

Kuasa strict_types

Sekarang, mari kita tingkatkan lagi dengan strict_types. Ini seperti mengaktifkan "mode super ketat" untuk PHP.

Untuk mengaktifkan penyukatan keras, tambahkan baris ini di bagian atas file PHP anda:

<?php
declare(strict_types=1);

function divideNumbers(int $a, int $b): float {
return $a / $b;
}

echo divideNumbers(10, 3);  // Output: 3.3333333333333
echo divideNumbers(10, "3");  // Melempar TypeError

Dengan strict_types diaktifkan, PHP menjadi jauh lebih selektif tentang jenis. Itu bahkan tidak akan mencoba mengkonversi "3" ke integer lagi. Itu seperti memiliki guru matematika yang menegaskan perhitungan tepat!

Tipe Return

Apakah anda melihat : float setelah parameter fungsi? Itu adalah deklarasi tipe return. Itu memberitahu PHP bahwa fungsi ini harus mengembalikan nilai float.

function greet(string $name): string {
return "Hello, $name!";
}

echo greet("Alice");  // Output: Hello, Alice!
echo greet(123);  // Melempar TypeError

Contoh Praktis: Kalkulator Sederhana

Mari kita gabungkan semua dengan contoh yang lebih praktis:

<?php
declare(strict_types=1);

class Calculator {
public function add(float $a, float $b): float {
return $a + $b;
}

public function subtract(float $a, float $b): float {
return $a - $b;
}

public function multiply(float $a, float $b): float {
return $a * $b;
}

public function divide(float $a, float $b): float {
if ($b == 0) {
throw new Exception("Pembagian oleh nol tidak diperbolehkan");
}
return $a / $b;
}
}

$calc = new Calculator();

try {
echo $calc->add(5.5, 3.2) . "\n";  // Output: 8.7
echo $calc->subtract(10, 4) . "\n";  // Output: 6
echo $calc->multiply(2.5, 3) . "\n";  // Output: 7.5
echo $calc->divide(15, 3) . "\n";  // Output: 5
echo $calc->divide(10, 0);  // Melempar Exception
} catch (TypeError $e) {
echo "Type Error: " . $e->getMessage();
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}

Dalam contoh ini, kita telah membuat kelas Calculator dengan metode yang menggunakan penyukatan keras. Perhatikan bagaimana kita menggunakan float untuk semua nomor untuk menangani baik integer dan desimal.

Kesimpulan

Selamat! Anda baru saja mengambil langkah pertama ke dunia penyukatan keras PHP. Ingat, penyukatan keras seperti menggunakan sabuk pengaman saat mengoding - mungkin merasa membatasi pada awalnya, tetapi itu ada untuk melindungi anda dari kutu dan kecelakaan.

Sebagai anda terus mengembangkan perjalanan PHP anda, terus berlatih dengan penyukatan keras. Itu akan membuat anda menjadi pemrogram yang lebih disiplin dan dapat dipercaya. Dan siapa tahu? Pada suatu hari, mungkin anda adalah yang mengajarkan orang lain tentang keajaiban penyukatan keras di PHP!

Happy coding, dan silakan jenis anda selalu keras dan kesalahan sedikit!

Credits: Image by storyset