2017-02-19 41 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类以外调用。