详细介绍ThinkPHP中类的构造函数_construct()与_initialize()的区别
这篇文章主要介绍了ThinkPHP中类的构造函数_construct()与_initialize()的区别,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
前言
相信熟悉THINKPHP的phper基本上都很熟悉_initialize()
这个方法,我们似乎也很少去使用_construct()
,除非自己写插件,否则还真是很少用到。
今天查看代码突然看到_construct()
这个php自带的构造方法,我的第一感觉是比较陌生,虽然之前学习java时经常遇到,但是很久不用基本忘记。我平时的习惯是将知识的重点写
在我那本小笔记上,但是很久不写字,曾经高中那个那种飘逸灵动的书写笔法彻底丢到异次元。再加上之前的想法,所以就来学习学习技术大牛们写写博客,这不是为了装逼,而只是让自己工作成果的点点滴滴都能不随时间流逝而消散。下面来看看详细的介绍吧。
先贴上代码(我的环境是wamp,使用了TP框架):
创建的FatherAction.class.php文件
<?php class FatherAction extends Action{ public function construct(){ echo 'father'; } } ?>
创建的SonAction.class.php文件
<?php class SonAction extends FatherAction{ public function construct(){ echo 'son'; } function index(){ } } ?>
运行子类SonAction里的index()
可以看到输出的结果:
son
如果将子类改为:
<?php class SonAction extends FatherAction{ public function construct(){ parent::construct(); echo 'son'; } function index(){ } } ?>
运行结果为;
fatherson
上面的结果可以得出结论:
在执行子类的构造函数时并不会自动调用父类的构造函数,如果你要调用的话,那么要加上parent::construct()
当我们把上述的构造方法改为THINKPHP_initialize()
方法时运行会发现:结果与前面的一致,若要执行父类的_initialize()
方法,也需要使用这一句:parent::_initialize()
那是不是说明php自带的构造函数construct()
与THINKPHP的_initialize()
方法一样的呢?
先贴上两段代码:
<?php class FatherAction extends Action{ public function construct(){ echo 'father'; } } ?>
<?php class SonAction extends FatherAction{ public function _initialize(){ echo 'son'; } function index(){ } } ?>
当执行子类SonAction的index方法时发现,输出的结果为:father
即子类调用了父类的构造函数,而没有调用子类的_initialize()
方法
再贴上两段代码:
<?php class FatherAction extends Action{ public function construct(){ if(method_exists($this,"hello")){ $this->hello(); } echo 'father'; } } ?>
<?php class SonAction extends FatherAction{ public function _initialize(){ echo 'son'; } function index(){ } function hello(){ echo 'hello'; } } ?>
执行子类SonAction的index方法,发现输入的结果为hellofather
由此可以得出结论:
当THINKPHP的父类有构造函数而子类没有时,THINKPHP不会去执行子类的_initialize()
;
当THINKPHP的父类子类均有构造函数时,要调用父类的构造函数必须使用parent::construct()
----------------- _initialize()
同理;
当THINKPHP的子类同时存在construct
构造函数和_initialize()
方法,只会执行子类的construct
构造函数(这个本人亲测,上述代码没有)。
总结
Atas ialah kandungan terperinci 详细介绍ThinkPHP中类的构造函数_construct()与_initialize()的区别. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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

Untuk menjalankan projek ThinkPHP, anda perlu: memasang Komposer untuk mencipta projek, masukkan direktori projek dan laksanakan php bin/console serve;

ThinkPHP mempunyai berbilang versi yang direka untuk versi PHP yang berbeza. Versi utama termasuk 3.2, 5.0, 5.1 dan 6.0, manakala versi kecil digunakan untuk membetulkan pepijat dan menyediakan ciri baharu. Versi stabil terkini ialah ThinkPHP 6.0.16. Apabila memilih versi, pertimbangkan versi PHP, keperluan ciri dan sokongan komuniti. Adalah disyorkan untuk menggunakan versi stabil terkini untuk prestasi dan sokongan terbaik.

Langkah-langkah untuk menjalankan ThinkPHP Framework secara setempat: Muat turun dan nyahzip ThinkPHP Framework ke direktori tempatan. Buat hos maya (pilihan) yang menunjuk ke direktori akar ThinkPHP. Konfigurasikan parameter sambungan pangkalan data. Mulakan pelayan web. Mulakan aplikasi ThinkPHP. Akses URL aplikasi ThinkPHP dan jalankannya.

Perbandingan prestasi rangka kerja Laravel dan ThinkPHP: ThinkPHP umumnya berprestasi lebih baik daripada Laravel, memfokuskan pada pengoptimuman dan caching. Laravel berfungsi dengan baik, tetapi untuk aplikasi yang kompleks, ThinkPHP mungkin lebih sesuai.

"Cadangan Pembangunan: Cara Menggunakan Rangka Kerja ThinkPHP untuk Melaksanakan Tugas Asynchronous" Dengan perkembangan pesat teknologi Internet, aplikasi Web mempunyai keperluan yang semakin tinggi untuk mengendalikan sejumlah besar permintaan serentak dan logik perniagaan yang kompleks. Untuk meningkatkan prestasi sistem dan pengalaman pengguna, pembangun sering mempertimbangkan untuk menggunakan tugas tak segerak untuk melaksanakan beberapa operasi yang memakan masa, seperti menghantar e-mel, memproses muat naik fail, menjana laporan, dsb. Dalam bidang PHP, rangka kerja ThinkPHP, sebagai rangka kerja pembangunan yang popular, menyediakan beberapa cara mudah untuk melaksanakan tugas tak segerak.

Langkah pemasangan ThinkPHP: Sediakan persekitaran PHP, Komposer dan MySQL. Buat projek menggunakan Komposer. Pasang rangka kerja dan kebergantungan ThinkPHP. Konfigurasikan sambungan pangkalan data. Hasilkan kod aplikasi. Lancarkan aplikasi dan lawati http://localhost:8000.

ThinkPHP ialah rangka kerja PHP berprestasi tinggi dengan kelebihan seperti mekanisme caching, pengoptimuman kod, pemprosesan selari dan pengoptimuman pangkalan data. Ujian prestasi rasmi menunjukkan bahawa ia boleh mengendalikan lebih daripada 10,000 permintaan sesaat, dan digunakan secara meluas dalam tapak web dan sistem perusahaan berskala besar seperti JD.com dan Ctrip dalam aplikasi praktikal.

Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk pembangunan API Dengan pembangunan berterusan Internet, kepentingan API (Antara Muka Pengaturcaraan Aplikasi) telah menjadi semakin menonjol. API ialah jambatan untuk komunikasi antara aplikasi yang berbeza Ia boleh merealisasikan perkongsian data, panggilan fungsi dan operasi lain, dan menyediakan pembangun kaedah pembangunan yang agak mudah dan pantas. Sebagai rangka kerja pembangunan PHP yang sangat baik, rangka kerja ThinkPHP adalah cekap, berskala dan mudah digunakan.
