亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

就本章講的內容而已,對兩個構造函數表示非常不解

1、不明白為什么要在adminController的構造函數里進行跳轉

假設是第一次訪問,從PC::run進入,緊接著在 C() 函數里就會執行 new?adminController,這時候構造函數就會被執行,此時當然還沒有登錄,然后就會觸發跳轉到登錄頁,但同時 C() 函數的第二個參數是要執行的方法,這個參數帶什么好呢?如果帶 GET 方式的 login,等于又觸發一次打開 login.html,如果帶 POST 方式的 login,此時用戶都還沒輸入用戶名密碼呢,到哪來 POST 參數;

2、不明白為什么要在?authModel 的構造函數里對 $this->auth 賦值

覺得很多余,因為第一次創建?authModel 對象時,$_SESSION['auth'] 肯定還沒值,只有執行過authModel::loginsubmit()方法后,它才有值,假設在此之后如果別的地方又要用到?authModel 了,new 了第二個對象,此時?$_SESSION['auth'] 有值了,也完全沒必要賦給?$this->auth呀,以后不管是需要獲取 auth 也好,還是判斷是否已登錄,直接從?$_SESSION['auth'] 里拿值就好啊,把值賦給 $this->auth ,再從$this->auth拿值豈不是很多余?

3、接問題2,在我的猜測里,只有一種可能會需要對$this->auth賦值,那就是?$_SESSION['auth'] 的值會變時才有必要。也就是 A 用戶登錄,new一個 authModel,將?$_SESSION['auth'] 賦值給?$this->auth,然后 B 用戶又登錄,又 new 了一個authModel,然后再把新的?$_SESSION['auth'] 賦值給新的authModel對象的 $this->auth。

當然,我對 php 的多線程機制很不了解,聽說php是不支持多線程的,只有多進程模式,不知道是不是這種原因導致的才需要這么古怪的賦值方式,感覺和 C++、JAVA的面向對象完全不同。

正在回答

4 回答

回答 3 web環境 尤其是nginx+fpm環境下 php程序被載入運行輸出后就結束了。每個用戶的請求都是在一個phpfpm的子進程里完成的。每個子進程每次只處理一個用戶的請求,處理完再處理下一個

1 回復 有任何疑惑可以回復我~
#1

金澤城 提問者

非常感謝!
2017-03-11 回復 有任何疑惑可以回復我~
#2

金澤城 提問者

感謝老師細致耐心的回復!很抱歉在我提出這個問題前,對于php的運行機制還不甚了解,還在以C++固有的面向對象編程的設計思想去硬套,所以就得出了這些可笑的問題。感謝您的認真指點,讓我進一步加深了理解,堅定了學習的步伐,非常感謝!
2017-03-11 回復 有任何疑惑可以回復我~
#3

PengCheng 回復 金澤城 提問者

感謝收聽
2017-03-13 回復 有任何疑惑可以回復我~

回答1 構造函數在類實例化之后立即執行。課程例子里在跳轉的同時用exit終止了 下面代碼的執行。所以不管c的第二個參數是神馬 都沒有執行的機會。

2 回復 有任何疑惑可以回復我~

回答2 面向對象里 我們寫的auth類作為一個對象來看 他的核心屬性 就是$auth? 而session里的auth僅僅是個值。在其他地方我們只管問$auth要結果好了。 而不關心他的值究竟來自哪里:沒準現在是session 下次就是cookie 或者api驗證 等等。

2 回復 有任何疑惑可以回復我~

最后一句“古怪的賦值方式”改成“古怪的構造邏輯”。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
MVC架構模式分析與設計
  • 參與學習       82428    人
  • 解答問題       954    個

通過學習MVC理論知識,由淺入深帶您實現人生第一個MVC框架

進入課程

就本章講的內容而已,對兩個構造函數表示非常不解

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號