0
我在TYPO3 Extbase中創建了一個體面的模型/視圖/控制器擴展。調查員和調查員之間有一個n:1的關係。避免「在MVC中調用一個非對象成員函數[...]錯誤?
我需要檢查當前登錄用戶(調查員)是否有權訪問當前查詢。請參閱以下功能。
當詢問沒有分配給一個調查員(和對象因此是空的),if($inquiry->getInvestigator()->getUid())
返回致命錯誤的方法:
Call to a member function getUid() on a non-object
。
是否有避免該錯誤的簡單方式只有一個if條件?或者這是乾淨的方式嗎?
/**
* has the user access to inquiry?
*
* @param Tx_MyExt_Domain_Model_Inquiry
* @return boolean
*/
protected function hasInquiryAccess(Tx_MyExt_Domain_Model_Inquiry $inquiry) {
if ($inquiry->getInvestigator()) {
if ($inquiry->getInvestigator()->getUid() == $this->user->getUid()) {
return TRUE;
} else {
return FALSE;
}
} else {
return FALSE;
}
}
這似乎是合理的,非常感謝。但它並不完全回答我的問題 - 我仍然需要多個if條件來檢查調查員和登錄用戶是否相同。 在我的上下文中,'$ inquiry-> getInvestigator()'和'!is_null($ inquiry-> getInvestigator()'具有相同的返回值。 – Mateng
它對藝術有一點藝術,但如果你想要一個單一的如果只是make:if(!is_null($ query-> getInvestigator())&& $ query-> getInvestigator() - > getUid()== $ this-> user-> getUid()){return true;} else {return false;}'我認爲這是最簡單和最快捷的方法,你不會找到任何原生的typo3方法 – Fixus
我在答案中增加了'instanceof'替代方法,也許重要的是要知道如果你有多個條件,如在Fixus的例子,如果第一個條件失敗,第二個不被評估,所以不會有一個致命錯誤 – lorenz