¿Puedo crear una clase PHP que no pueda tener propiedades que se le agregan dinámicamente en el tiempo de ejecución?
-
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