Atributos de una clase en php8

Una de las nuevas características en php8 es que ya no hace falta necesariamente declarar los tipos de una clase específicamente.

En una serie de posts quiero ir añadiendo las nuevas ventajas de php8 respecto a sus versiones anteriores. Este post también inaugura la categoría de blog de programación.

Anteriormente cuando se quería inicilalizar en un constructor inicializar los tipos declarados se tenía que hacer de la siguiente manera:

<?php
class CuentaBancaria
{
   private $numeroCuenta;
   private $saldo;

   function __construct( $numeroCuenta, $saldo )
   {
     //Lo que sea
   }
}

Lo cual resulta bastante redundante ¿no? ya que tenemos que declarar los atributos de la clase y además volverlos a manejar en la función constructora, bueno, pues para eliminar esta reduncancia en php8 ahora se puede inicializar la clase de la siguiente manera:

<?php
class CuentaBancaria
{
   function __construct( private $numeroCuenta, private $saldo)
   {
     //Lo que sea
   }
}

Cuando la función recibe el argumento ya crea dinámicamente la propiedad de la clase. Chulo. Así php8 elimina la redundancia de cómo se tenía que hacer antes.

Pero entonces… ¿si tenemos que pasar un valor a una propiedad que si está declarada en php8?

En el caso de que queramos combinar creactión de atributos de una clase y además asignar valores de construcción en esa clase a un atributo declarado, es decir, usar la nueva manera y la vieja en una misma clase, lo podemos hacer de la siguiente manera:

<?php
class CuentaBancaria
{
   private $saldo
   
   function __construct( private $numeroCuenta, $saldo)
   {
     $this->saldo = $saldo;

     //Lo que sea
   }
}

En este caso, saldo se convierte en un parámetro de función normal y corriente.

El elefante es la mascota de PHP, el copyright de la foto es de Megan Coughlin

También te podría gustar...

Deja una respuesta

Debes acceder para comentar. Si no tienes acceso puedes registrarte
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad