php - 如果变量具有特定值,则中断
问题描述
我尝试侦听变量的值并在它具有特定值时执行一些代码。
例如,我在 switch 语句中执行函数,如果值为false element()
,我必须执行。break
$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;
但这失败了。还有其他方法吗?例如,如果值为false ,我可以添加一个break
在switch case 中自动执行的EventListener吗?$element
解决方案
在构建函数时,通常最好将它们设计为解耦,而不是耦合。这意味着, element() 不应该关心调用它的内容。
因此,试图从 element() 中中断开关将是一个糟糕的编程设计。
如果 element() 在到达某个位置时应该总是停止执行,无论调用它的是什么,你都应该考虑抛出一个异常。但是,这不会简化您的 switch 语句中的代码,因为您必须使用 try、catch 块。
话虽如此,由于 PHP 允许在条件中赋值,您可以将您编写的代码简化为:
if ($element = $sel->element("class name", "btn-primary", true)) {
$element->click("");
}
推荐阅读
- windows - 如何使用 LLVM/clang++ 工具链链接 Microsoft Windows 资源 (.res) 文件
- javascript - Vanilla JavaScript XMLHttpRequest - 如何正确设置 Header(示例:Pastebin Api)
- javascript - 处理程序更改在反应js中选择输入对象
- java - 如何让用户在 Java 中选择类型?
- matlab - Matlab程序没有进入if语句
- class - 如何更改班级成员?
- php - AJAX 更新和显示/隐藏 Div
- nsis - NSIS 命令排序
- javascript - 与 JavaScript 相比,从 HTML 设置属性时的不同行为
- c++ - C++ fork() - 如何使用 fork 和 pstree 显示进程树?