Inheritance Uncaught ArgumentCountError: Too few arguments to function

0

I have problems with the child class constructors. In this case I have an abstract ACCOUNTS class. From it inherits CURRENT ACCOUNT and in turn it inherits ACCOUNTNOWABILITY . When wanting instances CURRENT ACCOUNT AND ACCOUNT CONVERTIBILITY pulls error. At the same time I have an INDIVIDUAL class that inherits from CLIENTS . Thanks in advance for the help

 EROOR:
Fatal error:  Uncaught ArgumentCountError: Too few arguments to function CuentaCorriente::__construct(), 2 passed in /Applications/MAMP/htdocs/PHP/Sistema Bancario 2.0/CuentaConvertibilidad.php on line 10 and exactly 3 expected in /Applications/MAMP/htdocs/PHP/Sistema Bancario 2.0/CuentaCorriente.php:8
Stack trace:

#0 /Applications/MAMP/htdocs/PHP/Sistema Bancario 2.0/CuentaConvertibilidad.php(10): CuentaCorriente->__construct(1003, Object(Individual))

#1 /Applications/MAMP/htdocs/PHP/Sistema Bancario 2.0/index.php(17): CuentaConvertibilidad->__construct(1003, Object(Individual))
#2 {main}
  thrown in /Applications/MAMP/htdocs/PHP/Sistema Bancario 2.0/CuentaCorriente.php on line 8

Code:

  

abstract class Cuentas
{

  protected $nroCuenta;
  protected $clienteAsociado;
  protected $saldo=0;

  public function __construct($nroCuenta, $clienteAsociado)
  {
    $this->nroCuenta = $nroCuenta;
    $this->clienteAsociado = $clienteAsociado;
  }

  public function depositar(int $saldo)
  {
    $this->saldo = $saldo+=$saldo;
  }

  public function extraer(int $saldo)
  {
    if ($saldo <= $this->saldo)
    {
        $this->saldo-=$saldo;
        return $saldo;
    }
  }
}    ?>

================================================================================================= ===========

<?php

class CuentaCorriente extends Cuentas
{

  protected $giroDesc;

  public function __construct($giroDesc, $nroCuenta, $clienteAsociado)
  {
    $this->giroDesc = $giroDesc;
    parent::__construct($nroCuenta, $clienteAsociado);
  }

  public function depositarCheque (Cheque $cheque)
  {
    $this->cheque = $cheque;
    return $this->saldo += $this->monto;
  }

  public function extraer (int $saldo)
  {
    if ($saldo > $this->saldo)
    {
      $this->saldo = $this->saldo + $giroDesc;
      if ($saldo > $this->saldo)
      {
        echo "Saldo insuficiente";
      }else {
        $this->saldo-=$saldo;
      }
    }
  }
}
 ?>

================================================================================================= ===========

<?php

class CuentaConvertibilidad extends CuentaCorriente
{

  protected $saldoDolares=0;

  function __construct($nroCuenta, $clienteAsociado)
  {
    parent::__construct($nroCuenta, $clienteAsociado);
  }

  public function depositarDolares(int $saldo)
  {
    $this->$saldoDolares +=$saldo;
  }

  public function extraerDolares(int $saldo)
  {
    if ($saldo <= $this->saldoDolares)
    {
      $this->$saldoDolares-=$saldo;
      return $saldoDolares;
    }else {
        echo "Saldo en dolares insuficiente";
    }
  }

  public function convertirPesos(int $tasa)
  {
    $this->$saldoDolares = $this->$saldoDolares / $tasa;
    return ($this->$saldoDolares);
  }

  public function convertirDolares(int $tasa)
  {
    $this->$saldoDolares = $this->$saldoDolares * $tasa;
    return ($this->$saldoDolares);
  }
}
 ?>

================================================================================================= ===========

<?php

abstract class Clientes
{
  protected $nroCliente;

  public function __construct($nroCliente)
  {
    $this->nroCliente = $nroCliente;
  }

  public function identificar(int $nroCliente)
  {

  }
}
?>

================================================================================================= ===========

<?php

class Individual extends Clientes
{

  protected $nombre;
  protected $apellido;
  protected $dni;

  public function __construct($nombre, $apellido, $dni, $nroCliente)
  {
    $this->nombre = $nombre;
    $this->apellido = $apellido;
    $this->dni = $dni;
    parent::__construct($nroCliente);
  }

}
 ?>

================================================================================================== ===========

================================================================================================= ===========

<?php

echo "<pre>";

require_once('Clientes.php');
require_once('Individual.php');
require_once('Cuentas.php');
require_once('CajaDeAhorro.php');
require_once('CuentaCorriente.php');
require_once('CuentaConvertibilidad.php');


$daniela = new Individual ("Daniela", "Obiols", 31504312, 909);

$cajaDeAhorro = new CajaDeAhorro (5, 1001, $daniela);
$cuentaCorriente = new CuentaCorriente (3000, 1002, $daniela);
$cuentaDeConvertibilidad = new CuentaConvertibilidad (1003, $daniela);

var_dump($daniela);
echo "<br>";

var_dump($cajaDeAhorro);
echo "<br>";

var_dump($cuentaCorriente);
echo "<br>";

var_dump($cuentaDeConvertibilidad);
echo "<br>";

 ?>
    
asked by Daniela Obiols 06.09.2018 в 16:39
source

1 answer

1

CuentaCorriente expects 3 parameters: $giroDesc , $nroCuenta and $clienteAsociado .

class CuentaCorriente extends Cuentas {
  //...
  public function __construct($giroDesc, $nroCuenta, $clienteAsociado)
  {
    $this->giroDesc = $giroDesc;
    parent::__construct($nroCuenta, $clienteAsociado);
  }
//...

But you are passing only 2 in the constructor of CuentaConvertibilidad . You only spend $giroDesc and $nroCuenta .

class CuentaConvertibilidad extends CuentaCorriente
{
  //...
  function __construct($nroCuenta, $clienteAsociado) {
     // solo le especificas 2
    parent::__construct($nroCuenta, $clienteAsociado);
  }

So you need the $clienteAsociado parameter.

    
answered by 06.09.2018 / 16:44
source