¿Puedo crear una clase PHP que no pueda tener propiedades que se le agregan dinámicamente en el tiempo de ejecución?

StackOverflow https://stackoverflow.com/questions/8924163

  •  30-10-2019
  •  | 
  •  

Pregunta

Tome esta clase para un ejemplo:

<?php

class Person
{
    private $name = null;
    private $dob = null;

    public function __construct($name, $dob)
    {
        $this->name = $name;
        $this->dob = $dob;
    }
}

$potts = new Person('Matt', '01/01/1987');
var_dump($potts);

$potts->job = 'Software Developer'; // new dynamic property
var_dump($potts);

var_dump(get_object_vars($potts));

La salida es la siguiente:

object(Person)#1 (2) {
  ["name":"Person":private]=>
  string(4) "Matt"
  ["dob":"Person":private]=>
  string(10) "01/01/1987"
}

object(Person)#1 (3) {
  ["name":"Person":private]=>
  string(4) "Matt"
  ["dob":"Person":private]=>
  string(10) "01/01/1987"
  ["job"]=>
  string(18) "Software Developer"
}

array(1) {
  ["job"]=>
  string(18) "Software Developer"
}

¿Es posible detener las propiedades dinámicas? ¿Es posible obtener una lista de propiedades definidas por clase? (es decir, no es dinámica, las propiedades agregadas en tiempo de ejecución)

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top