Warisan lwn. Komposisi dalam PHP ?
Apabila kita memprogram berorientasikan objek, adalah penting untuk memahami perbezaan antara Warisan dan Komposisi:
Warisan
Satu kelas mewarisi daripada kelas yang lain, menggunakan semula dan melanjutkan tingkah lakunya.
class Motor { public function ligar() { return "Motor Ligado!"; } } class Carro extends Motor{} $carro = new Carro(); $carro->ligar();
Komposisi
Kelas mengandungi contoh kelas lain untuk mewakilkan tanggungjawab. Komposisi sering diutamakan untuk mencipta sistem yang lebih fleksibel dan mengelakkan masalah dengan pewarisan mendalam.
Contoh Praktikal
Pernahkah anda berhenti untuk berfikir bahawa apabila kita menghidupkan kereta, kita sebenarnya menghidupkan enjin? Berikutan alasan ini, kita boleh mencipta dua objek: satu dipanggil Enjin dan satu lagi dipanggil Kereta. Dengan cara ini, objek Kereta akan mengandungi contoh objek Enjin, yang akan bertanggungjawab untuk menghidupkan kereta.
Kod
class Motor { public function ligar() { return "Motor Ligado!"; } } class Carro { private Motor $motor; public function __construct(Motor $motor) { $this->motor = $motor; } public function ligar() { return $this->motor->ligar(); } }
Pemahaman
Daripada kelas Kereta yang mempunyai logik untuk menghidupkan enjin yang dibina secara langsung, ia mewakilkan tanggungjawab ini kepada objek Enjin. Ini memastikan kelas Kereta fokus pada perkara yang sepatutnya dilakukan, menjadikan kod lebih modular dan lebih mudah diselenggara. Pada masa hadapan, anda boleh menukar atau menambah baik enjin tanpa mengubah suai kod kelas Kereta.
Ujian
$motorV4 = new Motor(); $carro = new Carro($motorV4); echo $carro->ligar(); // Saída: Motor Ligado!
Kelebihan
Pendekatan ini lebih fleksibel kerana ia membolehkan kereta mempunyai jenis enjin yang berbeza (contohnya, enjin V4, V6 atau elektrik) tanpa perlu menukar kelas Kereta. Modulariti ini memudahkan penyelenggaraan dan pengembangan sistem.
Atas ialah kandungan terperinci Komposisi lwn Warisan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!