Я нахожусь на XAMPP 7.0.13-1 (PHP 7.0.9) на Ubuntu. Я установил Xdebug 2.5.0 и в настоящее время использую его с NetBeans 8.5.PHP НОРМАЛЬНО не вызовет этот метод, но с xdebug CALLED
меня такая ситуация: Когда я запускаю следующую отладку кода, окончательное значение 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)
, когда он работает нормально.
Убедитесь, что код в первом блоке кода 'публичной функции __construct ($ nombres, $ apellidos ...' правильно вставленный код. имеет опечатку, обратите внимание на добавление «, что делает половину кода красным, поскольку он считает, что это строка. – JimL
Кажется, у меня есть тип, который по ошибке при написании вопроса. Я исправил его. Источник правильный. –
Затем используйте Xdebug для шага через код и посмотреть, где два исполнения расходятся (значения переменных, вызовы методов и т. д.) – JimL