就本章講的內(nèi)容而已,對(duì)兩個(gè)構(gòu)造函數(shù)表示非常不解
1、不明白為什么要在adminController的構(gòu)造函數(shù)里進(jìn)行跳轉(zhuǎn)
假設(shè)是第一次訪問,從PC::run進(jìn)入,緊接著在 C() 函數(shù)里就會(huì)執(zhí)行 new?adminController,這時(shí)候構(gòu)造函數(shù)就會(huì)被執(zhí)行,此時(shí)當(dāng)然還沒有登錄,然后就會(huì)觸發(fā)跳轉(zhuǎn)到登錄頁,但同時(shí) C() 函數(shù)的第二個(gè)參數(shù)是要執(zhí)行的方法,這個(gè)參數(shù)帶什么好呢?如果帶 GET 方式的 login,等于又觸發(fā)一次打開 login.html,如果帶 POST 方式的 login,此時(shí)用戶都還沒輸入用戶名密碼呢,到哪來 POST 參數(shù);
2、不明白為什么要在?authModel 的構(gòu)造函數(shù)里對(duì) $this->auth 賦值
覺得很多余,因?yàn)榈谝淮蝿?chuàng)建?authModel 對(duì)象時(shí),$_SESSION['auth'] 肯定還沒值,只有執(zhí)行過authModel::loginsubmit()方法后,它才有值,假設(shè)在此之后如果別的地方又要用到?authModel 了,new 了第二個(gè)對(duì)象,此時(shí)?$_SESSION['auth'] 有值了,也完全沒必要賦給?$this->auth呀,以后不管是需要獲取 auth 也好,還是判斷是否已登錄,直接從?$_SESSION['auth'] 里拿值就好啊,把值賦給 $this->auth ,再?gòu)?this->auth拿值豈不是很多余?
3、接問題2,在我的猜測(cè)里,只有一種可能會(huì)需要對(duì)$this->auth賦值,那就是?$_SESSION['auth'] 的值會(huì)變時(shí)才有必要。也就是 A 用戶登錄,new一個(gè) authModel,將?$_SESSION['auth'] 賦值給?$this->auth,然后 B 用戶又登錄,又 new 了一個(gè)authModel,然后再把新的?$_SESSION['auth'] 賦值給新的authModel對(duì)象的 $this->auth。
當(dāng)然,我對(duì) 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é)束了。每個(gè)用戶的請(qǐng)求都是在一個(gè)phpfpm的子進(jìn)程里完成的。每個(gè)子進(jìn)程每次只處理一個(gè)用戶的請(qǐng)求,處理完再處理下一個(gè)
2017-03-10
回答1 構(gòu)造函數(shù)在類實(shí)例化之后立即執(zhí)行。課程例子里在跳轉(zhuǎn)的同時(shí)用exit終止了 下面代碼的執(zhí)行。所以不管c的第二個(gè)參數(shù)是神馬 都沒有執(zhí)行的機(jī)會(huì)。
2017-03-10
回答2 面向?qū)ο罄?我們寫的auth類作為一個(gè)對(duì)象來看 他的核心屬性 就是$auth? 而session里的auth僅僅是個(gè)值。在其他地方我們只管問$auth要結(jié)果好了。 而不關(guān)心他的值究竟來自哪里:沒準(zhǔn)現(xiàn)在是session 下次就是cookie 或者api驗(yàn)證 等等。
2017-03-05
最后一句“古怪的賦值方式”改成“古怪的構(gòu)造邏輯”。