Dari apa yang saya tahu dari Scala dan Hack-
Mixin:
- Dapat memiliki status (mis. Properti instance)
- Hanya bisa memberikan metode konkret
- Dapat memiliki konstruktor, yang dipanggil dalam urutan yang sama dengan kelas mereka dicampur
- Jika
A
dicampurB
danC
,A instanceof B == false
danA instanceof C == false
Sifat:
- Hanya dapat memberikan metode, bukan negara
- Dapat mendeklarasikan metode abstrak, yang harus diterapkan oleh konsumen
- Tidak dapat memiliki konstruktor
- Jika
A
menerapkan sifatB
danC
,A instanceof B == false
danA instanceof C == false
Apakah ini benar atau saya kehilangan sesuatu? Apakah definisi ini akurat untuk bahasa OO atau hanya untuk yang disebutkan di atas?
Jawaban:
PHP tidak memiliki konsep mixin, namun memiliki sifat-sifat yang terlihat seperti campuran sifat dan mixin dari hack / scala:
Saya tidak berpikir bahwa ada satu hal pun yang akan bekerja dengan cara yang sama di semua bahasa OO. Bahkan beberapa dasar seperti pewarisan dan antarmuka memiliki beberapa variasi, belum lagi konstruk yang lebih kabur seperti sifat / mixin.
sumber
Ciri-ciri adalah akses statis di PHP seperti yang dijelaskan oleh Benjamin Eberlei di blog-nya . Mereka mirip dengan copy-paste kode otomatis.
Ini tidak berarti bahwa sifat-sifat itu benar-benar jahat, tetapi mereka sebagian besar sering menimbulkan masalah penggandaan.
Mixin secara umum adalah penggunaan multiple inheritance yang biasa (agak aman). Bahasa dengan banyak pewarisan dan pengetikan by-ref (bebek) seperti Python menawarkan penggunaan elegan untuk mixin.
sumber