如何在类内部犯一系列错误

我希望构造函数验证$contraseña和$rcontraseña以查看它们是否匹配。 如果这样做:散列密码。 如果不符合,请执行以下操作:创建一个错误数组,其中$ errors [password]包含一个字符串,内容为“ Passwords not match”。

以下代码的问题是:

var_dump($ errores);没有显示字符串,可能是因为我尝试填充字符串的方式是错误的。数组在类之外,我还尝试将其设置为公共,私有和受保护的属性,但是这些都不起作用。

<?php
// Array de errores. Si todo está null es porque no hubo errores.
  $errores = [
  "nombre" => "","apellido" => "","usuario" => "","contraseña" => "",];

class Usuario {
  /* atributos */
  protected $nombre;
  protected $apellido;
  protected $usuario;
  protected $contraseña;

  /* Métodos. */
  /* Constructor que setea datos,los verifica y hashea contraseña. */
  public function __construct($nombre,$apellido,$usuario,$contraseña,$rcontraseña){
    $this->nombre = $nombre;
    $this->apellido = $apellido;
    $this->usuario = $usuario;
    if ($rcontraseña == $contraseña) {
      $this->contraseña = password_hash($contraseña,PASSWORD_DEFAULT);
    }
    else {
      $errores['contraseña'] = "Las contraseñas no coinciden.";
    }
    // Verificamos que nombre no esté vacío.



  }


}


$emiliano = new Usuario("Emiliano","Vargas","emicapo","emi123","eemi123");

var_dump($errores);
ramzismo 回答:如何在类内部犯一系列错误

具有这种构造的意义

(char*) malloc(...)

是,因此您可以将$emiliano = new Usuario("Emiliano","Vargas","emicapo","emi123","eemi123"); $emiliano用作两个不同的Usuarios。仅有一个全局$fernando会达到目的。

您应该能够写:

$errores

,并且出现错误仅与该用户有关

为此,您必须在类内部声明错误,并且由于您不需要直接从外部访问错误(函数errores()会为您完成此操作),因此将它们声明为 private

var_dump($emiliano->errores());

在类中,您需要返回错误

class Usuario {
     /* atributos */
     protected $nombre;
     protected $apellido;
     protected $usuario;
     protected $contraseña;

     /* errores,default empty. */
     private $miErrores = [ ];

然后您添加如下错误:

     public function errores() {
         return $this->miErrores;
     }

     public function hayError() {
         return count($this->miErrores);
     }

     protected function nuevoErrore($errore,$texto) {
         $this->miErrores[$errore] = $texto;
         return $this;
     }

     // You might need to remove errors without destroying the object
     protected function borrarErrores() {
         $this->miErrores = [ ];
         return $this;
     }

您可以使用以下方法快速检查错误,

    $this->nuevoErrore('contraseña','Las contraseñas no coinciden.');
本文链接:https://www.f2er.com/3121070.html

大家都在问