Rumah pembangunan bahagian belakang tutorial php PHP中new static() 和 new self() 的区别介绍_php技巧

PHP中new static() 和 new self() 的区别介绍_php技巧

May 16, 2016 pm 08:26 PM
new php perbezaannya

长夜漫漫啊!

今天领导本地搭建一个站。发现用PHP 5.2 搭建不起来,站PHP代码里面有很多5.3以上的部分,领导让苦逼我更改在5.2下能运行。

改着改着发现了一个地方

复制代码 代码如下:

return new static($val);

这尼玛是神马,只见过
复制代码 代码如下:

return new self($val);

于是上网查了下,他们两个的区别。

self – 就是这个类,是代码段里面的这个类。

static – PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。

还是看看老外的专业解释吧。

self refers to the same class whose method the new operation takes place in.

static in PHP 5.3's late static bindings refers to whatever class in the hierarchy which you call the method on.

In the following example, B inherits both methods from A. self is bound to A because it's defined in A‘s implementation of the first method, whereas static is bound to the called class (also see  get_called_class() ).

复制代码 代码如下:

class A {
    public static function get_self() {
        return new self();
    }

    public static function get_static() {
        return new static();
    }
}

class B extends A {}

echo get_class(B::get_self());  // A
echo get_class(B::get_static()); // B
echo get_class(A::get_static()); // A


这个例子基本上一看就懂了吧。

原理了解了,但是问题还没有解决,如何解决掉 return new static($val); 这个问题呢?

其实也简单就是用 get_class($this); 如下

复制代码 代码如下:

class A {
    public function create1() {
        $class = get_class($this);
    return new $class();
    }
    public function create2() {
        return new static();
    }
}

class B extends A {

}

$b = new B();
var_dump(get_class($b->create1()), get_class($b->create2()));

/*
The result
string(1) "B"
string(1) "B"
*/

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.

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)

Pertukaran apa nexo? Pertukaran apa nexo? Mar 05, 2025 pm 07:39 PM

Nexo: Bukan sahaja pertukaran cryptocurrency, tetapi juga pengurus kewangan digital anda. Ia membolehkan pengguna mendapatkan pinjaman dalam cryptocurrency sebagai cagaran dan menyediakan perkhidmatan untuk mendapatkan faedah. Walaupun Nexo juga menawarkan keupayaan membeli, menjual dan penebusan cryptocurrency, perniagaan terasnya adalah pinjaman crypto. Artikel ini akan meneroka model operasi dan keselamatan Nexo secara mendalam untuk memberikan pelabur dengan pemahaman yang lebih komprehensif. Model operasi Nexo ditubuhkan pada tahun 2018 dan beribu pejabat di Zug, Switzerland, dan merupakan perintis dalam bidang kewangan digital. Ia berbeza dari pertukaran terpusat lain dan memberi tumpuan lebih kepada menyediakan perkhidmatan kewangan yang komprehensif. Pengguna boleh membeli, menjual, perdagangan kriptografi tanpa menjual aset dan

Perbezaan antara eter dan bitcoin Apakah perbezaan antara eter dan bitcoin Perbezaan antara eter dan bitcoin Apakah perbezaan antara eter dan bitcoin Mar 19, 2025 pm 04:54 PM

Perbezaan antara Ethereum dan Bitcoin adalah penting. Secara teknikal, Bitcoin menggunakan POW, dan Ether telah beralih dari POW ke POS. Kelajuan perdagangan lambat untuk Bitcoin dan Ethereum pantas. Dalam senario aplikasi, Bitcoin memberi tumpuan kepada penyimpanan pembayaran, sementara Ether menyokong kontrak pintar dan DAPP. Dari segi pengeluaran, jumlah bitcoin adalah 21 juta, dan tidak ada jumlah duit syiling eter tetap. Setiap cabaran keselamatan tersedia. Dari segi nilai pasaran, bitcoin berada di peringkat pertama, dan turun naik harga kedua -duanya adalah besar, tetapi disebabkan oleh ciri -ciri yang berbeza, trend harga Ethereum adalah unik.

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah perbezaan antara roti kacang dan deepseek Apakah perbezaan antara roti kacang dan deepseek Mar 12, 2025 pm 01:24 PM

Perbezaan teras antara Bun Bun dan Deepseek adalah ketepatan pengambilan dan kerumitan. 1. Doubao didasarkan pada pemadanan kata kunci, mudah dan langsung, dengan kos yang rendah, tetapi ketepatan yang rendah, dan hanya sesuai untuk data berstruktur; Pilihan akhir bergantung kepada senario aplikasi dan batasan sumber.

Mentaliti pelaburan Crypto sangat penting! Bagaimana untuk mengelakkan kebimbangan yang tidak perlu dan membuat keputusan yang betul? Mentaliti pelaburan Crypto sangat penting! Bagaimana untuk mengelakkan kebimbangan yang tidak perlu dan membuat keputusan yang betul? Mar 05, 2025 pm 07:24 PM

Ketakutan, ketidakpastian dan keraguan pelaburan crypto: Bagaimana membuat keputusan yang tepat? Ramai pelabur crypto menghadapi ketakutan "ini adalah kitaran terakhir", serta kebimbangan mengenai tempoh pasaran lembu, ditambah dengan tekanan dari orang lain, yang bersama -sama membawa kepada keputusan pelaburan yang buruk. Artikel ini akan meneroka cara mengatasi cabaran ini dan membuat pilihan pelaburan yang lebih bijak. Risiko yang berpotensi: Gangguan: Babut mengejar bintik -bintik panas dan mengabaikan nilai aset teras. Pessimisme dan Ragu -ragu: Ketidakpastian membawa kepada kekurangan keyakinan, ketidakupayaan untuk bertahan lama, dan bahkan keluar dari pasaran. Kekurangan kepercayaan: Kekurangan penyelidikan mendalam mengenai projek dan tidak dapat mengatasi ketidaktentuan pasaran. Kekurangan strategi membuat keuntungan: Posisi penjelasan awal kerana takut akan pulih, kehilangan potensi pulangan. Strategi Mengatasi: 1. Fokus pada bidang teras:

Pengenalan terperinci untuk pembukaan dan masa penutup Ouyi Okex Pengenalan terperinci untuk pembukaan dan masa penutup Ouyi Okex Mar 18, 2025 pm 01:06 PM

Platform Perdagangan Aset Digital Ouyi Okex adalah berbeza daripada pasaran sekuriti tradisional. Walau bagaimanapun, platform akan mengumumkan terlebih dahulu dan menyesuaikan masa atau peraturan perdagangan sementara dalam kes peningkatan sistem penyelenggaraan atau acara pasaran khas (seperti keadaan pasaran yang melampau yang menyebabkan turun naik pasaran yang teruk), seperti menggantung perdagangan atau mengubahsuai peraturan pembukaan kedudukan perdagangan kontrak. Oleh itu, adalah disyorkan bahawa pengguna memberi perhatian kepada pengumuman platform dan trend pasaran, merebut peluang perdagangan dan melakukan pekerjaan yang baik dalam pengurusan risiko. Hanya dengan memahami masa dagangan Ouyi Okex dan pelarasan peraturan, anda boleh menjadi selesa dalam pasaran mata wang digital.

Perbezaan antara roti kacang dan deepseek Perbezaan antara roti kacang dan deepseek Mar 12, 2025 pm 01:57 PM

Perbezaan utama antara Doubao dan DeepSeek ialah: 1. Doubao adalah enjin carian kata kunci yang bergantung pada pemadanan kata kunci; 2. Sumber data beg kacang adalah luas tetapi kualiti tidak sekata. 3. Hasil Bun Bean dibentangkan dalam bentuk senarai, dan DeepSeek dapat memberikan jawapan dan maklumat konteks yang lebih kaya. 4. Buns kacang mudah digunakan, dan DeepSeek mungkin memerlukan penyataan pertanyaan yang lebih kompleks. Oleh itu, roti kacang sesuai untuk mencari maklumat dengan cepat, sementara DeepSeek sesuai untuk carian semantik dan perlombongan maklumat yang mendalam, dan pilihannya bergantung kepada keperluan khusus.

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

See all articles