我在Ubuntu上使用XAMPP 7.0.13-1(PHP 7.0.9)。我已经安装了Xdebug 2.5.0,目前在NetBeans 8.5中使用它。
我遇到这种情况:当我运行以下代码调试时,dump
的最终值为NombreOApellidoValidoNombreOApellidoValidoContraseñaValidaEmailValido
(预期)。但是当我在相同的输入数据下运行它而不进行调试时,我得到NombreOApellidoValidoNombreOApellidoValidoContraseñaValida
(意外):
public function __construct($nombres, $apellidos, $contraseña, $repContraseña, $email, IUsuarioDB $capaDatos){
$this->dump = "";
$this->capaDatos = $capaDatos;
$this->valido = $this->NombreOApellidoValido($nombres, 'nombresValido');
$this->valido = $this->valido && $this->NombreOApellidoValido($apellidos, 'apellidosValido');
$this->valido = $this->valido && $this->ContraseñaValida($contraseña, $repContraseña);
$this->valido = $this->valido && $this->EmailValido($email);
$this->nombres = $nombres;
$this->apellidos = $apellidos;
$this->contraseña = $contraseña;
$this->email = $email;
echo $this->dump;
if($this->valido){
$this->codigoActivacion = md5(time());
$this->capaDatos->GuardarUsuario($this);
}
}
public function NombreOApellidoValido($nombres, $aValidar){
$this->dump .= "NombreOApellidoValido";
//Do stuff
}
public function ContraseñaValida($contraseña, $repContraseña){
$this->dump .= "ContraseñaValida";
//Do stuff
}
public function EmailValido($email){
$this->dump .= "EmailValido";
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
$this->emailValido = true;
if($this->capaDatos->EmailUnico($email)){
$this->emailUnico = true;
return true;
}else{
$this->emailUnico = false;
return false;
}
}else{
$this->emailValido = false;
return false;
}
}
我不明白为什么会这样。在两种情况下输入都是相同的,唯一的区别是在一个我调试和在我没有。根据输出判断,PHP在正常运行时没有执行EmailValido($email)
。
答案 0 :(得分:0)
NombreOApellidoValido
之类的方法必须返回true
或false
,现在它们不返回任何内容,意味着NULL
。
$this->valido = ($this->NombreOApellidoValido($nombres, 'nombresValido'));
$this->valido = ($this->valido && $this->NombreOApellidoValido($apellidos, 'apellidosValido'));