在php的面向对象编程中,总会遇到class test{public static function test(){self::func();static::func();}public static function func(){} }可你知道self和static的区别么?其实区别很简单,只需要写几个d" /> 在php的面向对象编程中,总会遇到class test{public static function test(){self::func();static::func();}public static function func(){} }可你知道self和static的区别么?其实区别很简单,只需要写几个d">
Rumah pembangunan bahagian belakang tutorial php php面向对象中self和static的区别

php面向对象中self和static的区别

Jul 29, 2016 am 08:51 AM
function model self static

data-id="1190000005060322" data-license="sa">

在php的面向对象编程中,总会遇到

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

    static::func();
  }

  public static function func(){}
}</code>
Salin selepas log masuk

可你知道self和static的区别么?

其实区别很简单,只需要写几个demo就能懂:

Demo for self:

<code>class Car
{
  public static function model(){
    self::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();</code>
Salin selepas log masuk

得到输出

<code>This is a car model
This is a car model
</code>
Salin selepas log masuk

可以发现,self在子类中还是会调用父类的方法

Demo for static

<code>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();
</code>
Salin selepas log masuk

得到输出

<code>This is a car model
This is a Taxi model
</code>
Salin selepas log masuk

可以看到,在调用static,子类哪怕调用的是父类的方法,但是父类方法中调用的方法还会是子类的方法(好绕嘴。。)

在PHP5.3版本以前,static和self还是有一点区别,具体是什么,毕竟都是7版本的天下了。就不去了解了。

总结呢就是:self只能引用当前类中的方法,而static关键字允许函数能够在运行时动态绑定类中的方法。

参考

  1. http://www.programmerinterview.com/index.php/php-questions/php-self-vs-static/

以上就介绍了php面向对象中self和static的区别,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya Mar 01, 2024 pm 01:20 PM

Sebab ralat adalah NameResolutionError(self.host,self,e)daripada, yang merupakan jenis pengecualian dalam pustaka urllib3 Sebab ralat ini adalah bahawa resolusi DNS gagal, iaitu nama hos atau alamat IP yang telah cuba diselesaikan tidak dapat ditemui. Ini mungkin disebabkan oleh alamat URL yang dimasukkan tidak betul atau pelayan DNS tidak tersedia buat sementara waktu. Bagaimana untuk menyelesaikan ralat ini Mungkin terdapat beberapa cara untuk menyelesaikan ralat ini: Semak sama ada alamat URL yang dimasukkan adalah betul dan pastikan ia boleh diakses Pastikan pelayan DNS tersedia, anda boleh cuba menggunakan arahan "ping" dalam baris arahan untuk menguji sama ada pelayan DNS tersedia Cuba akses tapak web menggunakan alamat IP dan bukannya nama hos jika di belakang proksi

Apakah maksud fungsi? Apakah maksud fungsi? Aug 04, 2023 am 10:33 AM

Fungsi bermaksud fungsi. Ia adalah blok kod yang boleh digunakan semula dengan fungsi tertentu Ia boleh menerima parameter input, melakukan operasi tertentu, dan mengembalikan hasil daripada blok yang boleh digunakan semula. kod untuk meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod.

Bagaimana untuk menggunakan diri dalam Python Bagaimana untuk menggunakan diri dalam Python May 17, 2023 pm 10:40 PM

Sebelum memperkenalkan penggunaan diri dalam Python, mari kita mula-mula memperkenalkan kelas dan contoh dalam Python diwakili oleh kelas Pelajar. Instance ialah "objek" khusus yang dibuat berdasarkan kelas Setiap objek mewarisi kaedah yang sama daripada kelas, tetapi datanya mungkin berbeza. 1. Ambil kelas Pelajar sebagai contoh Dalam Python, kelas ditakrifkan seperti berikut: classStudent(object):pass(Object) menunjukkan kelas mana yang diwarisi oleh kelas Object

Trezor Cold Wallet: Ciri dan Panduan Penggunaan Model One dan Model T Trezor Cold Wallet: Ciri dan Panduan Penggunaan Model One dan Model T Jan 19, 2024 pm 04:12 PM

Selepas masalah berlaku dalam banyak bursa berpusat, semakin ramai pelabur mata wang mula memindahkan aset ke dompet sejuk untuk mengurangkan risiko yang ditimbulkan oleh pertukaran berpusat. Artikel ini akan memperkenalkan Trezor, penyedia dompet sejuk terawal di dunia Sejak dompet sejuk pertama dilancarkan pada 2014, ia telah dijual di banyak negara di seluruh dunia. Produk Trezor termasuk Model One yang dilancarkan pada 2014 dan versi lanjutan Model T yang dilancarkan pada 2018. Berikut akan terus memperkenalkan perbezaan antara kedua-dua produk ini dan dompet sejuk yang lain. Apakah dompet sejuk Trezor? Pada 2014, Trezor melancarkan dompet sejuk pertama ModelOne. Sebagai tambahan kepada BTC biasa, ETH, USDT dan mata wang lain, dompet itu juga menyokong lebih daripada 1,000 mata wang lain.

Apakah tujuan fungsi 'enumerate()' dalam Python? Apakah tujuan fungsi 'enumerate()' dalam Python? Sep 01, 2023 am 11:29 AM

Dalam artikel ini, kita akan belajar tentang fungsi enumerate() dan tujuan fungsi "enumerate()" dalam Python. Apakah fungsi enumerate()? Fungsi enumerate() Python menerima pengumpulan data sebagai parameter dan mengembalikan objek penghitungan. Objek penghitungan dikembalikan sebagai pasangan nilai kunci. Kuncinya ialah indeks yang sepadan dengan setiap item, dan nilainya ialah item. Syntax enumerate(iterable,start) Parameters iterable - Yang diluluskan dalam pengumpulan data boleh dikembalikan sebagai objek enumeration, dipanggil iterablestart - Seperti namanya, indeks permulaan objek enumeration ditakrifkan oleh permulaan. kalau kita abaikan

Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc Mar 16, 2024 am 09:03 AM

Penjelasan terperinci tentang peranan dan fungsi jadual MySQL.proc ialah sistem pengurusan pangkalan data relasi yang popular Apabila pembangun menggunakan MySQL, mereka sering melibatkan penciptaan dan pengurusan prosedur tersimpan (StoredProcedure). Jadual MySQL.proc ialah jadual sistem yang sangat penting Ia menyimpan maklumat yang berkaitan dengan semua prosedur tersimpan dalam pangkalan data, termasuk nama, definisi, parameter, dsb. prosedur tersimpan. Dalam artikel ini, kami akan menerangkan secara terperinci peranan dan kefungsian jadual MySQL.proc

Apakah fungsi dan penggunaan statik dalam bahasa C Apakah fungsi dan penggunaan statik dalam bahasa C Jan 31, 2024 pm 01:59 PM

Peranan dan penggunaan statik dalam bahasa C: 1. Skop pembolehubah; 3. Fungsi dalaman 4. Ubah suai fungsi; Jika terdapat kata kunci statik di hadapan pembolehubah, maka skop pembolehubah adalah terhad kepada fail di mana ia diisytiharkan Dalam erti kata lain, pembolehubah adalah "skop peringkat fail", yang sangat berguna untuk mencegah masalah "definisi pendua" pembolehubah; 2. Kitaran hayat, pembolehubah statik dimulakan sekali apabila program mula dilaksanakan, dan dimusnahkan apabila program tamat, dsb.

Cara menggunakan statik, ini, super, dan akhir di Jawa Cara menggunakan statik, ini, super, dan akhir di Jawa Apr 18, 2023 pm 03:40 PM

1. statik Sila lihat program berikut dahulu: publicclassHello{publicstaticvoidmain(String[]args){//(1)System.out.println("Hello, world!");//(2)}} Pernah melihat ini Program segmen biasa kepada kebanyakan orang yang telah mempelajari Java. Walaupun anda belum mempelajari Java tetapi telah mempelajari bahasa peringkat tinggi yang lain, seperti C, anda seharusnya dapat memahami maksud kod ini. Ia hanya mengeluarkan "Hello, dunia" dan tidak mempunyai kegunaan lain Walau bagaimanapun, ia menunjukkan tujuan utama kata kunci statik.

See all articles