new static() 和 new self() 的区别异同,staticself
new static() 和 new self() 的区别异同,staticself
长夜漫漫啊!
今天领导本地搭建一个站。发现用PHP 5.2 搭建不起来,站PHP代码里面有很多5.3以上的部分,领导让苦逼我更改在5.2下能运行。
改着改着发现了一个地方
<span>return</span> <span>new</span> <span>static</span>(<span>$val</span>);
这尼玛是神马,只见过
<span>return</span> <span>new</span> self(<span>$val</span>);
于是上网查了下,他们两个的区别。
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 <span><span>get_called_class()</span></span>
).
<span>class</span><span> A { </span><span>public</span> <span>static</span> <span>function</span><span> get_self() { </span><span>return</span> <span>new</span><span> self(); } </span><span>public</span> <span>static</span> <span>function</span><span> get_static() { </span><span>return</span> <span>new</span> <span>static</span><span>(); } } </span><span>class</span> B <span>extends</span><span> A {} </span><span>echo</span> <span>get_class</span>(B::get_self()); <span>//</span><span> A</span> <span>echo</span> <span>get_class</span>(B::get_static()); <span>//</span><span> B</span> <span>echo</span> <span>get_class</span>(A::get_static()); <span>//</span><span> A</span>
这个例子基本上一看就懂了吧。
原理了解了,但是问题还没有解决,如何解决掉 return new static($val); 这个问题呢?
其实也简单就是用 get_class($this); 如下
<span>class</span><span> A { </span><span>public</span> <span>function</span><span> create1() { </span><span>$class</span> = <span>get_class</span>(<span>$this</span><span>);<br /></span><span> return</span> <span>new</span> <span>$class</span><span>(); } </span><span>public</span> <span>function</span><span> create2() { </span><span>return</span> <span>new</span> <span>static</span><span>(); } } </span><span>class</span> B <span>extends</span><span> A { } </span><span>$b</span> = <span>new</span><span> B(); </span><span>var_dump</span>(<span>get_class</span>(<span>$b</span>->create1()), <span>get_class</span>(<span>$b</span>-><span>create2())); </span><span>/*</span><span> The result string(1) "B" string(1) "B" </span><span>*/</span>
东西多了点。呵呵。帮你详细说一下。
1. new和new[]的区别
new 用于单个对象或实例的创建,就是调用类的构造函数。
new [] 用于创建对象或实例的数组实例,并且地址是连续的。(内存分配的时候有可能不连续,但地址链表是连续的。)
2. 虚函数(这个没办法说,只能举例子)
class person
{
public :
virtual say();
}
class techer : public person
{
public :
protected override say();
}
class student : public person
{
public :
protected override say();
}
第三个没理解什么意思。
前面两个不知道你看懂没有。没有的话联系我。
在java中
public static void main(String args[])这句话是一个主方法,
java程序可以有多个方法,但是主方法只能有一个,
用ststic修饰的方法称为类方法(main也是类方法)。
A a=new A()是创建一个实例对象 static 起的是修饰作用

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Ledakan pelaburan Bitcoin terus memanaskan. Walaupun China pernah menjadi pasaran terbesar untuk bitcoin, kesan dasar telah membawa kepada sekatan transaksi. Hari ini, Korea Selatan telah menjadi salah satu pasaran Bitcoin utama di dunia, menyebabkan pelabur mempersoalkan perbezaan di antara ia dan bitcoin domestiknya. Artikel ini akan menjalankan analisis mendalam tentang perbezaan antara pasaran bitcoin kedua-dua negara. Analisis perbezaan antara Korea Selatan dan pasaran Bitcoin China. Sebagai contoh, pada akhir Oktober 2024, harga bitcoin di Korea Selatan sekali

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 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.

Bitcoin: Derivatif Digital Emas atau Perdagangan Saham? Analisis mendalam tentang sifat pelaburannya. Artikel ini akan membincangkan secara mendalam dari aspek definisi, sifat, mekanisme terbitan, dan lain-lain, dan mengumumkan misteri pelaburan Bitcoin. Bitcoin dan Stok: Perbezaan penting antara Bitcoin dan saham adalah: melabur dalam Bitcoin tidak sama dengan melabur dalam stok. Bitcoin adalah mata wang digital yang terdesentralisasi yang dimiliki oleh kategori aset digital atau aset maya. Konsep ini dicadangkan oleh Satoshi Nakamoto pada tahun 2009. Tidak seperti mata wang tradisional,

Perbezaan antara multithreading dan asynchronous adalah bahawa multithreading melaksanakan pelbagai benang pada masa yang sama, sementara secara tidak sengaja melakukan operasi tanpa menyekat benang semasa. Multithreading digunakan untuk tugas-tugas yang berintensifkan, sementara asynchronously digunakan untuk interaksi pengguna. Kelebihan multi-threading adalah untuk meningkatkan prestasi pengkomputeran, sementara kelebihan asynchronous adalah untuk tidak menghalang benang UI. Memilih multithreading atau asynchronous bergantung kepada sifat tugas: tugas-tugas intensif pengiraan menggunakan multithreading, tugas yang berinteraksi dengan sumber luaran dan perlu menyimpan respons UI menggunakan asynchronous.

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.

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:

Kontrak Mata Wang: Pedang bermata dua dengan risiko tinggi dan pulangan yang tinggi. Ramai veteran dalam bulatan mata wang telah tertarik dengan potensi besar perdagangan kontrak, yang bukan sahaja boleh membawa pulangan yang murah hati tetapi juga membawa kepada kerugian besar. Perdagangan kontrak pada dasarnya adalah terbitan mata wang digital, dan risiko tinggi dan pulangan yang tinggi telah menarik banyak perhatian. Jadi, bagaimana untuk meningkatkan kebarangkalian keuntungan dalam perdagangan kontrak mata wang? Ini memerlukan beberapa kemahiran utama. Artikel ini akan meneroka secara mendalam bagaimana untuk mengurangkan risiko dan meningkatkan keuntungan. Strategi Keuntungan Kontrak Dalam Lingkaran Mata Wang: Dalam pasaran cryptocurrency yang tidak menentu, jika anda ingin mencapai keuntungan yang stabil dalam perdagangan kontrak, anda perlu merumuskan strategi yang komprehensif dan melaksanakannya dengan tegas: Pengurusan Risiko Pertama: Menetapkan titik kehilangan berhenti adalah kunci. Tetapkan harga berhenti terlebih dahulu untuk mengawal potensi kerugian dan elakkan urus niaga tunggal
