2017-01-07 3 views
0

私は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よう

+1

最初のコードブロック 'パブリック関数の__construct($ nombres、$ apellidosで確認コードください...'正しい貼り付けコード。 – JimL

+0

質問を書いたときに誤ってタイプしているようですが、修正しました。ソースが正しいです –

+0

次にXdebugを使ってステップしますコードを実行して、2つの実行が分岐する場所(変数値、メソッド呼び出しなど)を確認してください – JimL

答えて

0
  1. あなたの方法は、今、彼らは何を返すされていない、またはtruefalseを返す必要があり、NULLを意味します。
  2. PHPのoperators precedenceをご覧ください。このようなカッコで等号の右側の式を締結するようにしてください: $this->valido = ($this->NombreOApellidoValido($nombres, 'nombresValido')); $this->valido = ($this->valido && $this->NombreOApellidoValido($apellidos, 'apellidosValido'));
+0

メソッド実際の協力者にこれらの値を返すde。また、ブラケットについてあなたが言うことを試したところ、問題は解決しませんでしたが、ありがとうございました。 –

関連する問題