PHP - Strict Typing: A Beginner's Guide

Halo teman-teman masa depan yang akan menjadi ahli PHP! Saya sangat antusias untuk membawa Anda dalam perjalanan menarik melalui dunia yang menarik dari PHP strict typing. Sebagai orang yang telah mengajar PHP selama bertahun-tahun, saya bisa katakan bahwa memahami konsep ini akan membuat Anda menjadi pemrogram yang jauh lebih baik. Jadi, mari kita masuk ke dalamnya!

PHP - Strict Typing

Apa Itu Strict Typing?

Sebelum kita masuk ke detilnya, mari kita pahami apa itu strict typing. Bayangkan Anda sedang membuat kue. Anda tidak akan menggunakan garam sebagai ganti gula, kan? Itu karena resep itu ketat tentang bahan-bahan yang harus digunakan. Demikian pula, strict typing di PHP adalah tentang menjadi presisi dengan jenis data yang kita gunakan dalam kode kita.

Mengapa Strict Typing Penting

Anda mungkin bertanya-tanya, "Mengapa saya perlu khawatir tentang strict typing?" Well, teman kecil, strict typing membantu mencegah kutu, membuat kode Anda lebih dapat dipercaya, dan bahkan dapat meningkatkan kinerja. Itu seperti memiliki penjaga yang waspada untuk kode Anda!

Contoh: Bahaya Loose Typing

mari kita mulai dengan contoh sederhana untuk menunjukkan mengapa strict typing 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 mengonversi string "10" menjadi integer. Perilaku ini, yang disebut type juggling, kadang-kadang bisa menyebabkan hasil yang tidak diharapkan. Apa bila seseorang secara tidak sengaja mensampaikan string yang tidak bisa dikonversi menjadi nomor? Kacau!

Memasuki Type Hints

Type hints adalah seperti name tag untuk parameter fungsi Anda. Mereka memberitahu PHP, "Hai, saya hanya mau jenis data tertentu di sini!"

Marilah 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 mensampaikan string sebagai ganti integer, PHP akan marah (teknisnya, melempar TypeError). Itu seperti memiliki bouncer di klub yang memeriksa ID!

Type Hints yang Tersedia

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

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 bisa dipanggil
iterable Array atau object yang mengimplementasi Traversable
self Class yang sama seperti dimana itu digunakan
?type Jenis nullable (bisa jenis tertentu atau null)

Kuasa strict_types

Sekarang, mari kita tingkatkan lagi dengan strict_types. Itu seperti menyalakan "mode super ketat" di PHP.

Untuk mengaktifkan strict typing, 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 picky tentang jenis. Itu bahkan tidak akan mencoba mengkonversi "3" ke integer lagi. Itu seperti memiliki guru matematika yang menegaskan perhitungan yang presisi!

Jenis Kembalian

Apakah Anda melihat : float setelah parameter fungsi? Itu adalah deklarasi jenis kembalian. 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: Calculator Sederhana

Marilah kita gabungkan semua ini 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 dengan nol tidak diijinkan");
}
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 class Calculator dengan metode yang menggunakan strict typing. Catatlah bagaimana kita menggunakan float untuk semua nomor untuk menangani baik integer maupun desimal.

Kesimpulan

Selamat! Anda baru saja mengambil langkah pertama ke dunia PHP strict typing. Ingat, strict typing adalah seperti memakai sabuk keselamatan saat mengoding – mungkin merasa membatasi awalnya, tapi itu ada untuk melindungi Anda dari kutu dan kecelakaan yang memalukan.

Sekarang, teruslatih dengan strict typing. Itu akan membuat Anda menjadi pemrogram yang lebih disiplin dan dapat dipercaya. Dan siapa tahu? Suatu hari, Anda mungkin menjadi orang yang mengajarkan orang lain tentang keajaiban strict typing di PHP!

Happy coding, dan may your types always be strict and your errors few!

Credits: Image by storyset