作用域會碰到什麼問題嗎?
就是有可能在當你想要使用別的Class某個私有化方法或變數時,
發現紅蚯蚓跟你說不能用,這關係到我們方法跟變數的存取權
1.default 預設 : 在同一個目錄下的Class可以使用 ,
使用對象 => class類別,Interface接口,變數及function方法
2.private 私有化 : 在同一個類別裡可以使用 , 使用對象 => 變數,function方法
3.protected : 同一個目錄下及所有子類別可以使用 , 使用對象 =>變數,function方法
4.public : 所有類別皆可使用 , 使用對象 => class類別,Interface 接口,變數,function方法
存取權限嚴謹度, 用看的也知道私有化肯定是最囉嗦的呀!!!!
都叫私有化了 , 就是只能是我的的意思(๑´ڡ`๑)
下面是小菜鳥整理的圖, 看圖會比看文字容易...
稍稍講完簡單的存取權概念後...接下來要提的是, 如何從API 和 Action裡取得request的值
取得request的值當然很重要, 尤其是在Action或客製化API的時候 ,
一般我們的post or put or patch 方法會取得request的值並將它set到相對應實體類的欄位裡 ,
在客製化API裡或Action裡我們也許只想取得request的值, 然後透過這個值去Repository撈資料 ,
接著回傳我們所撈到的資料
兩個差別差在哪呢 ... ? 用的Class 不一樣,取的方法也有那麼一點點點點不一樣
在Action的時候 ,我們所使用的是Request這個Class
然後透過以下方法去取得request的值
$request->request->all()
2.取得某個欄位的request值
$request->request->get('birthday')
在客製化API的時候,我們所使用的是RequestStack這個Class ,
客製化API 要使用依賴注入的方式,注入RequestStack來取得request,
如果是用Request的話,會報500error跟你說沒有這個Service可以用
1.取得所有的request
$request->query->all()
2.取得某個欄位的request值
$request->query->get('birthday')
最後說一下小菜鳥剛入職時一直犯的錯誤.....
就是Repository 有時候 ,是可能撈不到東西的 ,撈不到東西就會是null ,
然後 我常常就是, 沒判斷撈出來有沒有東西,就直接對我想要的欄位做動作,
這時候就會500 error , 很生氣地告訴我 , 阿就null , 你是想幹嘛啦!!?
而且這次數....不誇張 , 大概從入職到現在 有個20次跑不掉 , 雖然 有一直在銳減啦..到現在終於學乖了இдஇ