新手问题,但后来我是新手...
我有一个注册用户的类,我有不同验证的功能。基本上,我运行“mainTest”,从表单中提取变量,然后运行每个函数(test1,test2)。在这些函数中,如果某些内容未在函数内验证,我将名为$ error的变量设置为true。我在“mainTest”函数中尝试做的是检查变量$ error是否已在任何其他函数中设置为true,但是当我回显$ error变量时它只是说null,即函数没有链接。 (尽量不使用全局变量)。
这里的任何想法都是我如何做到这一点的一个例子......
class myClass {
private function test1($var1, $var2) {
if....
else {
$error = true;
return $error;
}
}
private function test2($var3, $var4) {
if....
else {
$error = true;
return $error;
}
}
public function mainTest($var1, $var2, $var3, $var4) {
$this->test1($var1, $var2);
$this->test2($var3, $var4);
if ($error == true) {
//do something
}
}
}
答案 0 :(得分:1)
在类中使用实例变量,即..
class myClass {
private $error = '';
function test2()
{
//some code here
$this->error = true;
return $this->error;
}
现在,您可以使用$this
关键字访问其他函数中的错误变量
$this->error
,这里有点reading
答案 1 :(得分:0)
由于您return
TRUE
布尔值,您可以查看每个函数的输出以查看它是否为TRUE
:
public function mainTest($var1, $var2, $var3, $var4) {
if ($this->test1($var1, $var2) === TRUE) || $this->test2($var3, $var4) === TRUE) {
// an error occurred, because your function returned a TRUE boolean
}
}
如果您想重新构建代码,可以将公共变量声明为类的一部分,并使用您的函数进行设置。
class myClass {
// ...
private $error;
private function test1($var1, $var2) {
if....
else {
$this->error = true;
}
}
// ...
public function mainTest($var1, $var2, $var3, $var4) {
$this->test1($var1, $var2);
$this->test2($var3, $var4);
if ($this->error === TRUE) {
// an error occurred
}
}
}
答案 2 :(得分:0)
根据您提交的代码方式,所有函数都返回一个布尔值。这意味着您可以在mainTest
内部执行以下操作:
$ error = test1()|| TEST2();
这意味着,如果test1
或test2
中的任何一个返回true,则error
将设置为true。但如果它们都失败了,error
就是假的。你可以多次使用||
运算符,例如我的例子:
function one(){
return false;
}
function two(){
return false;
}
function three(){
return false;
}
$var = one() || two() && three();
var_dump($var);
在此示例中,var
将是设置为false的布尔变量。但是,如果三个函数中的任何一个返回true,那么var
将是真实的。
有了这个,你在语义上说“一个或两个结果的结果或三个结果”。使用||
true优先于false,意味着任何事情都是真的,最终结果为true。
在您的示例中,使用类变量方法的问题是,如果test1()
将error
设置为true,然后test2()
将其设置为false,那该怎么办? 。可以克服这种问题,但是在mainTest
函数中需要更多逻辑。基本上,您需要在每个函数后检查error
的值。