Awalnya saya bingung mengapa kedua metode memanggil dalam konstruktor berfungsi, tetapi sekarang saya pikir saya mengerti. Kelas yang diperluas mewarisi metode induk seolah-olah mereka dideklarasikan di kelas itu sendiri, DAN metode ada di induk, jadi keduanya harus berfungsi.
Sekarang saya bertanya-tanya apakah ada cara yang lebih disukai (yaitu praktik terbaik) untuk memanggil metode (melalui parent
atau this
), dan apakah ini benar-benar cara yang identik untuk menjalankan kode yang sama, atau jika ada peringatan saat menggunakannya yang lain.
Maaf, saya mungkin terlalu memikirkan ini.
abstract class Animal {
function get_species() {
echo "test";
}
}
class Dog extends Animal {
function __construct(){
$this->get_species();
parent::get_species();
}
}
$spike = new Dog;
$leg = new leg()
dalamhuman
, bagaimana saya memanggil fungsi manusia dari dalam contoh kaki$leg
?Kecuali saya salah paham dengan pertanyaannya, saya hampir selalu menggunakan $ this-> get_species karena subclass (dalam kasus ini anjing) dapat menimpa metode itu karena ia memperpanjangnya. Jika anjing kelas tidak mendefinisikan kembali metode tersebut maka kedua cara tersebut secara fungsional setara tetapi jika di beberapa titik di masa mendatang Anda memutuskan ingin metode get_species pada anjing harus mencetak "anjing" maka Anda harus kembali melalui semua kode dan ubahlah.
Ketika Anda menggunakan $ this, itu sebenarnya adalah bagian dari objek yang Anda buat dan akan selalu menjadi yang terbaru juga (jika properti yang digunakan telah berubah entah bagaimana selama masa pakai objek) saat menggunakan kelas induk memanggil metode kelas statis.
sumber