Puis-je créer une classe PHP qui ne peut pas avoir des propriétés y ajouter dynamiquement au moment de l'exécution?

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

  •  30-10-2019
  •  | 
  •  

Question

Prenez ce cours pour un exemple:

<?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 sortie est la suivante:

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"
}

Est-il possible d'arrêter des propriétés dynamiques ajoutées? Est-il possible d'obtenir une liste de propriétés définies par classe? (c'est-à-dire pas dynamique, des propriétés ajoutées du temps))

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top