日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

ThinkPHP--initialize()方法

發布時間:2023/12/18 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ThinkPHP--initialize()方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ?最近部門趕項目在做一個微商城,在做后臺時,做用戶信息功能這塊,出現一個問題,就是在public/header 文件中,需要在頭部顯示用戶姓名和狀態,底層寫了個base控制器,控制器中判斷用戶是否登錄,并將用戶信息assign到頁面,所有(除了login)控制器都繼承這個base控制器,但在渲染時,發現所有模塊下都無法識別username ,想來想去,一直找不到原因,后來,突然靈機一動,發現父類base控制器和子控制器中都有一個_initialize()這個構造函數,理論上說,若子類中方法與父類中的方法同名,在子類中是會重載這個方法的,所以,之前assign 的username變量所在的方法一遍重載,根本不存在,要想使 兩個同名方法都起作用,需要在子類_initialize()方法中添加:

parent::_initialize();

舉個例子:

創建的FatherAction.class.php文件

<?phpclass FatherAction extends Action{public function __construct(){echo 'father';} }?>

創建的SonAction.class.php文件

<?phpclass 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()


總結

以上是生活随笔為你收集整理的ThinkPHP--initialize()方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。