1
這是一個棘手的問題。Laravel中的自定義setter和getters
我在Laravel構建了一個框架,我希望我的對象能夠以透明的方式與Rackspace進行交互。 從現在起我使我們能夠上傳/刪除對象,而無需考慮Rackspace公司
$model->file = Input::file('thing'); // and it uploads to Rackspace.
下一步我要實現的是用我的配置文件,以獲得的路由。例如$route = $file->source
(例如數據庫中帶有hello.jpg的源文件),並獲取$ route作爲rackspace.com/WHATEVER/hello.jpg。部分rackspace.com/WHATEVER在我的配置文件中,所以我唯一需要的是如何做到這一點。
我一直在廣泛搜索,我只找到__call()
方法來做到這一點。 我想這樣的表現的字段是動態的,從數組被設置好的如:
public static $rackspaceable = array('source' => 'images-demo');
當圖像 - 演示是Rackspace的容器。
有誰知道要實現這一點,如果它甚至有可能?
哇安東尼奧,這是一個偉大的答案!它非常完美!另外,你是否知道從__get($ key)方法訪問$ model-> source的方法?如果我做$ this - > {$ key},我得到一個'code ErrorException:Undefined property:RackFile :: $ source'錯誤。 –
我不認爲你可以,因爲它會導致遞歸調用。 –
嘿!經過4個小時對我的屏幕猛擊我的頭後,我發現了一個使用特徵的酷解決方案。 在特性中,我實現了'code __get($ name)'方法,並檢查getter是否屬於我想要監視的某些字段。結構與此類似: '代碼公共職能__get($名){ 如果($名稱== variableOfInterest){ 回報doSomethingSpecial } 否則返回父:: __得到($名) }' 這樣我可以避免無限遞歸。也許它對別人有幫助! :D 再次感謝你安東尼奧! –