Perbezaan antara diri dan statik dalam kemahiran programming_php berorientasikan objek php

WBOY
Lepaskan: 2016-05-16 09:00:14
asal
2772 orang telah melayarinya

Dalam pengaturcaraan berorientasikan objek PHP, anda akan sentiasa menghadapi

class test{
 public static function test(){
  self::func();

  static::func();
 }

 public static function func(){}
}

Salin selepas log masuk

Tetapi adakah anda tahu perbezaan antara diri dan statik?

Malah, perbezaannya sangat mudah Anda hanya perlu menulis beberapa demo untuk memahami:

Demo untuk diri sendiri:

class Car
{
 public static function model(){
  self::getModel();
 }

 protected static function getModel(){
  echo "This is a car model";
 }
}

Salin selepas log masuk

Kereta::model();

Class Taxi extends Car
{
 protected static function getModel(){
  echo "This is a Taxi model";
 }
}

Salin selepas log masuk

Teksi::model();
Dapatkan output

This is a car model
This is a car model
Salin selepas log masuk

Anda boleh mendapati bahawa diri masih akan memanggil kaedah kelas induk dalam subkelas

Demo untuk statik

class Car
{
 public static function model(){
  static::getModel();
 }

 protected static function getModel(){
  echo "This is a car model";
 }
}

Car::model();

Class Taxi extends Car
{
 protected static function getModel(){
  echo "This is a Taxi model";
 }
}

Taxi::model();

Salin selepas log masuk

Dapatkan output

This is a car model
This is a Taxi model
Salin selepas log masuk

Anda boleh melihat bahawa apabila memanggil statik, walaupun subkelas memanggil kaedah kelas induk, kaedah yang dipanggil dalam kaedah kelas induk akan tetap menjadi kaedah subkelas (sangat mengelirukan...)

Sebelum versi PHP5.3, masih terdapat sedikit perbezaan antara statik dan diri Apa sebenarnya, semuanya dikuasai oleh versi 7. Saya tidak akan memahaminya lagi.

Ringkasannya ialah: diri hanya boleh merujuk kepada kaedah dalam kelas semasa dan kata kunci statik membenarkan fungsi untuk mengikat kaedah secara dinamik dalam kelas semasa masa jalan.

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan