Menu
CoddyTech

Konstanta dalam class

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 16 dari 91.

Terkadang, kamu membutuhkan nilai dalam class yang tidak boleh berubah. Konstanta class menyediakan cara untuk menetapkan nilai tetap yang sama di semua instance dan tidak dapat diubah setelah dideklarasikan.

Kamu mendefinisikan konstanta menggunakan kata kunci const di dalam class. Berdasarkan konvensi, nama konstanta ditulis dengan huruf kapital:

<?php
class Circle {
    const PI = 3.14159;
    
    public $radius;
    
    public function __construct($radius) {
        $this->radius = $radius;
    }
    
    public function area() {
        return self::PI * $this->radius * $this->radius;
    }
}

$circle = new Circle(5);
echo $circle->area();

Output:

78.53975

Seperti property statis, konstanta adalah milik class, bukan object individual. Kamu mengaksesnya dengan self::CONSTANT_NAME di dalam class atau ClassName::CONSTANT_NAME dari luar:

<?php
class HttpStatus {
    const OK = 200;
    const NOT_FOUND = 404;
    const SERVER_ERROR = 500;
}

echo HttpStatus::OK . "\n";
echo HttpStatus::NOT_FOUND;

Output:

200
404

Poin Penting: Berbeda dengan property statis, konstanta tidak dapat diubah setelah didefinisikan. Konstanta cocok untuk nilai yang harus tetap sepanjang aplikasi, seperti nilai konfigurasi, kode status, atau konstanta matematika.

challenge icon

Tantangan

Mudah

Mari buat utilitas konversi suhu yang menggunakan konstanta class untuk menyimpan nilai konversi tetap yang tidak pernah berubah.

Kamu akan membuat dua file untuk mengatur kodemu:

  • Temperature.php: Definisikan class Temperature yang menangani konversi suhu. Class ini harus memiliki tiga konstanta: FREEZING_POINT_C bernilai 0, BOILING_POINT_C bernilai 100, dan CONVERSION_FACTOR bernilai 1.8 (digunakan untuk konversi Celsius ke Fahrenheit). Sertakan property public $celsius dan constructor yang menerima serta menetapkan nilai Celsius. Tambahkan method toFahrenheit() yang mengonversi suhu Celsius yang tersimpan ke Fahrenheit menggunakan rumus: (celsius * CONVERSION_FACTOR) + 32. Tambahkan juga method getStatus() yang mengembalikan "Freezing" jika suhu sama dengan konstanta titik beku, "Boiling" jika sama dengan konstanta titik didih, atau "Normal" jika tidak.
  • main.php: Sertakan file class Temperature. Buat tiga object Temperature dengan nilai 0, 100, dan 25. Untuk setiap suhu, cetak hasil konversi Fahrenheit diikuti statusnya pada baris yang sama dengan format ini: "[fahrenheit]F - [status]". Setiap suhu harus berada di barisnya sendiri. Setelah mencetak ketiganya, akses konstanta BOILING_POINT_C secara langsung dari class (menggunakan Temperature::BOILING_POINT_C) lalu cetak pada baris baru.

Ingat, konstanta diakses menggunakan self::CONSTANT_NAME di dalam class dan ClassName::CONSTANT_NAME dari luar. Berbeda dengan property, konstanta tidak menggunakan simbol $ saat diakses.

Coba sendiri

<?php

require_once 'Temperature.php';

// TODO: Buat tiga object Temperature dengan nilai 0, 100, dan 25

// TODO: Untuk setiap suhu, cetak dengan format: "[fahrenheit]F - [status]"
// Cetak setiap suhu pada baris terpisah

// TODO: Akses dan cetak konstanta BOILING_POINT_C langsung dari class
// Gunakan sintaks ClassName::CONSTANT_NAME

?>
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online