2017-02-19 30 views
-1

的mulltiple方法在我Helper() I類有2種方法,看起來是這樣的:調用同一類

public function is_active_page($page) { 
    $url = explode("/",$_SERVER["REQUEST_URI"]); 
    if (end($url) === $page) { 
     return true; 
    } 
} 

public function go_to_dashboard() { 
    if (isset($_SESSION['login'])) { 
     header('Location: http://example.com'); 
    } 
} 

現在我想打電話給他們這樣的:$helper->is_active_page('page')->go_to_dashboard();而不是使用2線對每種方法。

由於某種原因,這不適合我。爲什麼?

+2

這是錯誤的想法,'is_active_page()'方法應該根據其語義返回布爾結果 – RomanPerekhrest

回答

1

爲了能夠鏈接方法,這些方法需要返回原始的Helper實例。嘗試從方法內部返回$this。像RomanPerekhrest評論但是,我不認爲你在這裏列出的方法適合鏈接。如果在課堂中添加另一種方法,將您在此處陳述的兩種方法結合起來,您會更好。

我不完全知道你正在嘗試做的,而是沿着以下線的東西可能是你在找什麼:

public function redirect($page){ 
    if($this->is_active_page($page)){ 
     $this->go_to_dashboard(); 
    } 
} 

最後,你會考慮減少範圍的is_active_pagego_to_dashboard函數,如果它們不再需要從Helper類以外調用。