【发布时间】:2017-05-22 08:50:40
【问题描述】:
我在 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)。
【问题讨论】:
-
确保第一个代码块
public function __construct($nombres, $apellidos...中的代码是正确的。粘贴的代码有错别字,请注意额外的 ' 使一半代码变成红色,因为它认为它是一个字符串。 -
我在写问题时似乎输入错误。我纠正了它。来源是正确的。
-
然后使用 Xdebug 单步执行代码,查看两次执行的分歧点(变量值、方法调用等)
-
当我这样做时,程序的工作方式完全符合我的预期。但是当我不这样做时,它不会。有趣的事
标签: php netbeans xampp xdebug ubuntu-16.04