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.53975Seperti 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
404Poin 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.
Tantangan
MudahMari 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 classTemperatureyang menangani konversi suhu. Class ini harus memiliki tiga konstanta:FREEZING_POINT_Cbernilai0,BOILING_POINT_Cbernilai100, danCONVERSION_FACTORbernilai1.8(digunakan untuk konversi Celsius ke Fahrenheit). Sertakan propertypublic $celsiusdan constructor yang menerima serta menetapkan nilai Celsius. Tambahkan methodtoFahrenheit()yang mengonversi suhu Celsius yang tersimpan ke Fahrenheit menggunakan rumus:(celsius * CONVERSION_FACTOR) + 32. Tambahkan juga methodgetStatus()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 nilai0,100, dan25. 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 konstantaBOILING_POINT_Csecara langsung dari class (menggunakanTemperature::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
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengenalan OOPclass vs objectKata Kunci $thismethodpropertyConstructor (__construct)Destructor (__destruct)Ringkasan: Kalkulator Sederhana4Pewarisan
Pewarisan DasarKata Kunci parent::Penimpaan methodKata Kunci finalClass AbstrakRingkasan: Hierarki Karyawan7Enkapsulasi
Public, Protected, PrivateModifier Akses secara MendalamGetter dan SetterPenyembunyian InformasiPromosi Constructor (8.0)Ulasan: Sistem Catatan Siswa2Namespace dan Autoloading
Pengenalan NamespaceKata Kunci useStandar Autoloading PSR-4Autoloader ComposerRingkasan: Proyek yang Terorganisasi5Interface dan Kontrak
Pengenalan InterfaceMengimplementasikan InterfaceImplementasi Beberapa InterfaceInterface vs Abstract ClassPetunjuk Tipe dengan InterfaceRekap: Kalkulator Bentuk8Magic Methods
Pengantar Magic Methods__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Cloning Object__serialize & __unserializeRingkasan: Koleksi Kustom11Sistem Tipe Data dan Penanganan Error
Deklarasi TipeTipe NullableTipe Union dan IntersectionClass ExceptionHierarki Exception KustomTry, Catch, FinallyRekap: Validator Form3Property dalam class
Property instance vs staticKonstanta dalam classMethod & property staticProperty private & protectedProperty readonly (PHP 8.1)Ulasan: Pengelola Rekening Bank6Polimorfisme
Meninjau Kembali Method OverridingPolimorfisme melalui AntarmukaPetunjuk Tipe dan Tipe UnionPengikatan Statis TertundaRangkuman: Pemroses PembayaranLatihan sendiri: Compiler PHP online