【问题标题】:Looking for a way to stop a process while calling a function without return寻找一种在调用函数时停止进程而不返回的方法
【发布时间】:2013-03-26 12:20:56
【问题描述】:

我养成了使用 return 来阻止代码序列执行的习惯,即使 return 用于不返回任何内容的函数

$form = $this->getForm('activity');    
$this->view->form = $form;
return $this->render('create'); // Like this

在 Zend Framework 中,它停止执行当前操作并呈现名称为函数$this->render() 参数的视图。

我最近在我的代码上运行了PHPMD,所有这些语句都被标记为Void function result used

我想知道,这个习惯有多糟糕,什么会更好?

【问题讨论】:

    标签: php zend-framework coding-style phpmd


    【解决方案1】:

    我看到的唯一一点是 $this->render('create') 返回不应再次返回的 void

    如果该操作不需要任何返回值(Zend Framework 1),那么您应该将您的 return 放在单独的一行,而不需要任何返回值。

    $form = $this->getForm('activity');    
    $this->view->form = $form;
    $this->render('create'); // Like this
    return;
    

    这是 Zend Framework 中的常见语法,至少对于 forward 而言。您也经常会看到它用于redirect,但这个在 Zend 代码中已经有一个退出语句。根据ZF1 documentation,转发的目的是执行当前动作,然后还执行第二个动作。但在他们的代码示例中,他们也使用return $this->_forward()。然而,在我的工作中,我学会了将return 放到一个新行上,以明确没有返回任何内容。

    作为替代方案,您当然可以使用if else 块。但是,在我看来,它们并不总是更清晰(而且我不喜欢这些严格的 Java 规则)。

    if ($something) {
        $this->_forward();
    } else {
        // do other code
    }
    

    【讨论】:

    • 使用return; 给你一个missing return argument 这并不是更好(是的,它的Zend Framework 1)
    • 快速提问。是否返回;返回空?
    • @Ignas:经过测试,是的。
    猜你喜欢
    • 2011-08-17
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多