私はUbuntuのXAMPP 7.0.13-1(PHP 7.0.9)です。 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;
}
}
私は理解していません。入力は両方のシナリオで同じですが、唯一の違いは1つのデバッグで、私はそうではありません。出力によって判断すると、PHPは正常に実行されたときにEmailValido($email)
を実行していません。 NombreOApellidoValido
よう
最初のコードブロック 'パブリック関数の__construct($ nombres、$ apellidosで確認コードください...'正しい貼り付けコード。 – JimL
質問を書いたときに誤ってタイプしているようですが、修正しました。ソースが正しいです –
次にXdebugを使ってステップしますコードを実行して、2つの実行が分岐する場所(変数値、メソッド呼び出しなど)を確認してください – JimL