Re: [心得] 關於 未設定變數警告

看板PHP作者 (吹笛牧童)時間15年前 (2009/07/24 19:40), 編輯推噓5(5017)
留言22則, 3人參與, 最新討論串3/4 (看更多)
※ 引述《buganini (霸格尼尼)》之銘言: : 有點難懂 : 我想 你的意思是 有['conf']的是舊帳號 沒有的是新帳號? : 如果區分新舊帳號的判定規則是這樣的話 那unset就可以偽造新帳號 我要偽造出新帳號 據以測試程式中可能出現什麼問題 而且我希望看到問題發生 : 前面unset掉了 後面當然沒有basic這個index : 難不成你們是 : $dev['name'] = $data['basic']['name']; : if(empty($dev['name'])){ : //old account : }else{ : //new account : } : 這樣判斷新舊帳號!? 我沒有必要判斷,而是希望看到問題冒出來 你說 "後面當然沒有basic這個index" 這是對的;我不是不懂,而是我希望得到一個錯誤訊息,據以證明我找到同一個問題了 而問題是,並沒有冒出 NOTICE 當你知道有 BUG,但卻沒顯示錯誤訊息時 那也是一種麻煩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.65.16

07/24 19:47, , 1F
所以到底是有unset會有NOTICE還是相反?
07/24 19:47, 1F

07/24 19:49, , 2F
有unset的話應該$data = &$dev['conf'];就要噴錯了
07/24 19:49, 2F

07/24 19:51, , 3F
所以你想法和我一樣;事實上有 unset 不會有 NOTICE
07/24 19:51, 3F

07/24 19:54, , 4F
但如果改成 echo $dev['conf'] 是有警告的,這 OK
07/24 19:54, 4F

07/24 19:55, , 5F
在 $data=&dev.... 這行後再去 echo 呢?又沒 NOTICE 了
07/24 19:55, 5F
※ 編輯: HuangJC 來自: 61.219.65.16 (07/24 19:55)

07/24 19:56, , 6F
也就是說, & 運算疑似把不存在的變數,變存在了..
07/24 19:56, 6F

07/24 19:58, , 7F
不過幸好 isset 的判斷還是正確的
07/24 19:58, 7F

07/24 20:07, , 8F
所以 其實跟unset沒有關係? 是&的錯?
07/24 20:07, 8F

07/24 20:07, , 9F
unset 不是程式的一部份,是我模擬測試需求..
07/24 20:07, 9F

07/24 20:08, , 10F
真正的新帳號會有錯誤訊息;而模擬的不會有!!
07/24 20:08, 10F

07/24 20:10, , 11F
呃 所以說是你模擬的不夠精確..
07/24 20:10, 11F

07/24 20:10, , 12F
也不是unset的錯 &的行為php.net也有寫
07/24 20:10, 12F

07/24 20:10, , 13F
07/24 20:10, 13F

07/24 20:11, , 14F
Note: If you assign, pass, or return an undefined
07/24 20:11, 14F

07/24 20:11, , 15F
variable by reference, it will get created.
07/24 20:11, 15F

07/24 20:13, , 16F
沒錯,就是這樣;QA是堅持實測的單位,RD則不能經常如此
07/24 20:13, 16F

07/24 20:14, , 17F
所以我也不打算模擬了,繼續找更真實的測試方法..
07/24 20:14, 17F

07/24 20:15, , 18F
抱歉浪費大家時間了 Orz
07/24 20:15, 18F

07/24 20:17, , 19F
對了,真的刪除並重建帳號後,又幫同事抓到一個 BUG
07/24 20:17, 19F

07/24 20:18, , 20F
就是'舊帳號還可存取',酷 XD;但 DB 裏真的刪了
07/24 20:18, 20F

07/24 20:18, , 21F
原來是同事寫了 cache,而 cache 沒清..一堆地雷~
07/24 20:18, 21F
<?php $data=null; $dev['name'] = $data['basic']['name']; ?> 算了算了,這樣都沒警告 自己小心點 *_* ※ 編輯: HuangJC 來自: 61.219.65.16 (07/24 20:27)

07/25 02:10, , 22F
有人知道為什麼上面的寫法不會有警告嗎? 蠻好奇的@@
07/25 02:10, 22F
文章代碼(AID): #1AQPt4C8 (PHP)
文章代碼(AID): #1AQPt4C8 (PHP)