就本章講的內(nèi)容而已,對兩個構(gòu)造函數(shù)表示非常不解
1、不明白為什么要在adminController的構(gòu)造函數(shù)里進(jìn)行跳轉(zhuǎn)
假設(shè)是第一次訪問,從PC::run進(jìn)入,緊接著在 C() 函數(shù)里就會執(zhí)行 new?adminController,這時候構(gòu)造函數(shù)就會被執(zhí)行,此時當(dāng)然還沒有登錄,然后就會觸發(fā)跳轉(zhuǎn)到登錄頁,但同時 C() 函數(shù)的第二個參數(shù)是要執(zhí)行的方法,這個參數(shù)帶什么好呢?如果帶 GET 方式的 login,等于又觸發(fā)一次打開 login.html,如果帶 POST 方式的 login,此時用戶都還沒輸入用戶名密碼呢,到哪來 POST 參數(shù);
2、不明白為什么要在?authModel 的構(gòu)造函數(shù)里對 $this->auth 賦值
覺得很多余,因為第一次創(chuàng)建?authModel 對象時,$_SESSION['auth'] 肯定還沒值,只有執(zhí)行過authModel::loginsubmit()方法后,它才有值,假設(shè)在此之后如果別的地方又要用到?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。
當(dāng)然,我對 php 的多線程機(jī)制很不了解,聽說php是不支持多線程的,只有多進(jìn)程模式,不知道是不是這種原因?qū)е碌牟判枰@么古怪的賦值方式,感覺和 C++、JAVA的面向?qū)ο笸耆煌?/p>
2017-03-10
回答 3 web環(huán)境 尤其是nginx+fpm環(huán)境下 php程序被載入運(yùn)行輸出后就結(jié)束了。每個用戶的請求都是在一個phpfpm的子進(jìn)程里完成的。每個子進(jìn)程每次只處理一個用戶的請求,處理完再處理下一個
2017-03-10
回答1 構(gòu)造函數(shù)在類實例化之后立即執(zhí)行。課程例子里在跳轉(zhuǎn)的同時用exit終止了 下面代碼的執(zhí)行。所以不管c的第二個參數(shù)是神馬 都沒有執(zhí)行的機(jī)會。
2017-03-10
回答2 面向?qū)ο罄?我們寫的auth類作為一個對象來看 他的核心屬性 就是$auth? 而session里的auth僅僅是個值。在其他地方我們只管問$auth要結(jié)果好了。 而不關(guān)心他的值究竟來自哪里:沒準(zhǔn)現(xiàn)在是session 下次就是cookie 或者api驗證 等等。
2017-03-05
最后一句“古怪的賦值方式”改成“古怪的構(gòu)造邏輯”。