Je suis sur XAMPP 7.0.13-1 (PHP 7.0.9) sur Ubuntu. J'ai installé Xdebug 2.5.0 et l'utilise actuellement avec NetBeans 8.5.PHP NORMALEMENT ne pas appeler cette méthode mais avec xdebug est CALLED
J'ai cette situation: Quand je lance le débogage de code suivant, la valeur finale de dump
est NombreOApellidoValidoNombreOApellidoValidoContraseñaValidaEmailValido
(attendu). Mais quand je lance sous les mêmes données d'entrée sans débogage, je reçois NombreOApellidoValidoNombreOApellidoValidoContraseñaValida
(inattendu):
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;
}
}
Je ne comprends pas pourquoi cela se passe. L'entrée est la même dans les deux scénarios, la seule différence est que dans un je débogue et dans le je ne le fais pas. A en juger par la sortie, PHP n'exécute pas EmailValido($email)
lorsqu'il s'exécute normalement.
Assurez-vous que le code dans le premier bloc de code 'fonction publique __construct ($ nombres, $ apellidos ...' est correct Le code collé. a une faute de frappe, notez l'extra 'qui fait rouge la moitié du code car il pense qu'il s'agit d'une chaîne – JimL
Je semble avoir tapé par erreur lors de l'écriture de la question, je l'ai corrigé.La source est correcte –
Ensuite, utilisez Xdebug à l'étape à travers le code et voir où les deux exécutions divergent (valeurs variables, appels de méthode, etc) – JimL