Rumah pembangunan bahagian belakang tutorial php 关于后期静态绑定,该怎么解决

关于后期静态绑定,该怎么解决

Jun 13, 2016 am 10:17 AM
function public static who

关于后期静态绑定
看了php手册中关于后期静态绑定,还是不太明白,原文地址http://cn2.php.net/manual/zh/language.oop5.late-static-bindings.php

其中第四个例子

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?phpclass A {    public static function foo() {        static::who();    }    public static function who() {        echo __CLASS__."\n";    }}class B extends A {    public static function test() {        A::foo();        parent::foo();        self::foo();    }    public static function who() {        echo __CLASS__."\n";    }}class C extends B {    public static function who() {        echo __CLASS__."\n";    }}C::test();?>
Salin selepas log masuk

结果是:
A
C
C
当调用到parent::foo()和self::foo()时,为什么会调用C类的who()?
哪位朋友能解释一下,谢谢。

------解决方案--------------------
关于static操作符的解释:
后期静态绑定试图通过引入一个关键字表示运行时最初调用的类来绕过限制。
而这个最初调用的类就是C

A::foo(); 调用的是A类的方法,这你明白
self::foo(); // 这个self实际上是C类。明白吗? C::test() C继承了B的test()方法
parent::foo(); // 由于static::who(); 而不是self::who()。该方法调用的当前的类,也就是C类的foo()方法

也许你觉得还是弄不懂 A类中又为什么没有调用C的who()方法,这是由于parent的特殊关系。延迟静态绑定就是专门为了解决子类与父类间继承方法的问题才出现的。
------解决方案--------------------
手册不是说得很清楚么
------------------------------------------------------
”后期绑定“的意思是说,static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为”静态绑定“,因为它可以用于(但不限于)静态方法的调用。
-------------------------------------------------------

#1说的有个小问题

PHP code
self::foo(); // 这个self实际上是C类。明白吗? C::test() C继承了B的test()方法<div class="clear">
                 
              
              
        
            </div>
Salin selepas log masuk
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)

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.

Penggunaan dan perbezaan antara arahan whoami dan who am i dalam Linux Penggunaan dan perbezaan antara arahan whoami dan who am i dalam Linux Feb 18, 2024 pm 11:15 PM

Penggunaan dan perbezaan antara perintah whoami dan whoami dalam Linux memerlukan contoh kod khusus Dalam sistem Linux, whoami dan whoami ialah dua arahan yang biasa digunakan, digunakan untuk melihat nama pengguna pengguna yang sedang log masuk. Walaupun fungsinya serupa, terdapat beberapa perbezaan dalam hasil penggunaan dan output. Artikel ini akan memperkenalkan penggunaan dan perbezaan kedua-dua arahan ini dan memberikan contoh kod khusus. Arahan whoami Arahan whoami digunakan untuk memaparkan nama pengguna pengguna yang sedang log masuk. ia tidak memerlukan apa-apa

Apakah perbezaan antara versi pembangun dan versi awam iOS? Apakah perbezaan antara versi pembangun dan versi awam iOS? Mar 01, 2024 pm 12:55 PM

Setiap tahun sebelum Apple mengeluarkan versi utama baharu iOS dan macOS, pengguna boleh memuat turun versi beta beberapa bulan lebih awal untuk mengalaminya terlebih dahulu. Memandangkan perisian ini digunakan oleh orang awam dan pembangun, Apple telah melancarkan versi pembangun dan awam, yang merupakan versi beta awam bagi versi beta pembangun, untuk kedua-duanya. Apakah perbezaan antara versi pembangun dan versi awam iOS? Secara literal, versi pembangun ialah versi ujian pembangun dan versi awam ialah versi ujian awam. Versi pembangun dan versi awam menyasarkan khalayak yang berbeza. Versi pembangun digunakan oleh Apple untuk ujian oleh pembangun Anda memerlukan akaun pembangun Apple untuk memuat turun dan meningkatkannya.

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.

Penggunaan dan fungsi fungsi Vue.use Penggunaan dan fungsi fungsi Vue.use Jul 24, 2023 pm 06:09 PM

Penggunaan dan Fungsi Fungsi Vue.use Vue ialah rangka kerja bahagian hadapan yang popular yang menyediakan banyak ciri dan fungsi berguna. Salah satunya ialah fungsi Vue.use, yang membolehkan kami menggunakan pemalam dalam aplikasi Vue. Artikel ini akan memperkenalkan penggunaan dan fungsi fungsi Vue.use dan memberikan beberapa contoh kod. Penggunaan asas fungsi Vue.use adalah sangat mudah, cuma panggilnya sebelum Vue diwujudkan, menghantar pemalam yang anda ingin gunakan sebagai parameter. Berikut ialah contoh mudah: //Perkenalkan dan gunakan pemalam

See all articles