在討論這個問題的細節之前,我想指出,我從來沒有見過這樣做,並且會很好奇,看它是否真的可以做好了,如果是的話,怎麼去做。我現在正坐在一個模板加載器上,爲了編寫它,我選擇稍微修改HAML文件格式,並用一些邏輯運算符(主要是循環)對其進行擴展。爲了有效地做到這一點,我需要將參數列表傳遞給模板解析器......如果可能,我寧願避免這種情況。雖然頭腦風暴的替代品,這個想法來了,也許,也許,也許,它可能會引用函數被調用的範圍。有沒有辦法將整個範圍傳遞給一個函數
目前,我正在爲文件調用模板解析器,如下所示。假設test()
是一條路線。
function test() {
$q = $UserModel->tether($userID)->fetchPermissions();
Util::Templating()->parse("file.haml");
}
我試圖避免的是能夠訪問$ q而不通過一個龐大的數組作爲第二個參數。我最初的想法是,parse()
可能會繼承其最初調用的範圍(此處,在test
之內),而不是擁有自己的範圍。有沒有辦法來管理這個,如果是的話,它有多高效?
聽起來像一個非常糟糕的主意。可能是http://php.net/manual/en/book.reflection.php中的內容。但它會很慢。 –
@E_p:這正是我想要衡量的:這種方法的效率。如果它超過陣列版本的5-10%,那麼這是一個不行。畢竟,便利是方便的。 –
雖然我不確定它會如何適應Reflection。我認爲問題的核心是如何引用來自被調用者的調用者範圍或來自被調用者的調用者 - 因爲我誠實地知道沒有辦法可靠和毫不含糊地執行此操作。 –