如果变量具有特定值则中断

时间:2018-07-16 14:12:14

标签: php

我尝试侦听变量的值并执行一些具有特定值的代码。

例如我在switch语句中执行函数element(),如果break的值为false,则必须执行$element

此刻我是这样的:

switch(strtolower($testcase)) {
    case 'test':
        $element = $sel->element("class name", "btn-primary", true);
        if ($element == false) { break; }
        $element->click("");
...

public function element($using, $value, $takeScreenshot=false, $customMessage="")
{   
    try {
        $element = $this->driver->element($using, $value);

    } catch(PHPWebDriver_UnhandledWebDriverError $exception) {

        $msg = "<b>PHPWebDriver_UnhandledWebDriverError: $using</b> is "
                . "not a valid value for the parameter <b>\$using</b>!";

        if ($customMessage !== "") {
            $msg = "<b>$customMessage</b><br>$msg";
        }

        $this->setMessage(1, $msg, $exception, $takeScreenshot, $value);
        return false;

    } catch(PHPWebDriver_NoSuchElementWebDriverError $exception) {
        $msg = "<b>PHPWebDriver_NoSuchElementWebDriverError:</b> No "
                . "Element with <b>'$using'</b> and value <b>'$value'</b> found !";

        if ($customMessage !== "") {
            $msg = "<b>$customMessage</b><br>$msg";
        }

        $this->setMessage(1, $msg, $exception, $takeScreenshot, $value);
        return false;
    }

    return $element;
}

但是我想简化一下,以便不再需要行if ($element == false) { break; }。例如

switch(strtolower($testcase)) {
    case 'test':
        $element = $this->element("class name", "btn-primary", true);
        $element->click("");
...

我尝试return break;,但是失败了。还有另一种方法吗?例如如果break的值为false,我可以添加一个在切换时自动执行$element的EventListener吗?

1 个答案:

答案 0 :(得分:1)

构建函数时,通常最好将它们设计为不耦合的,而不是耦合的。这意味着element()不必在乎它是什么。

因此,试图从element()中断开开关将是一个糟糕的编程设计。

如果element()在碰到某个位置时总是停止执行,无论调用什么,都应考虑引发异常。但是,这不会简化switch语句中的代码,因为您必须使用try,catch块。

话虽如此,由于PHP允许在条件中进行赋值,因此您可以简化编写为的代码:

    if ($element = $sel->element("class name", "btn-primary", true)) {
         $element->click("");
    }