Bonjour,

Je suis entrain de me développer un petit framework afin d'améliorer mes compétences et je souhaite, à un moment, déclarer des variables "protégées" automatiquement.

Vous trouverez ci-dessous un exemple de code :

class Model
{
    public function __construct(array $databases)
    {
        foreach ($databases as $name => $param)
            $this->$name = new Database($param);
    }
}

class MonModel extends Model
{

}

$databases = [
    "db1" => [...], // Diverses informations sur la connexion
    "db2" => [...],
    "db3" => [...]
];

$monModel = new MonModel($databases);

Voilà le "code de base" et lorsque je fais un var_dump() de $monModel, j'obtiens :

object(MonModel)[12]
  public 'db' => object(Database)[13]

Ma question est : Peut-on déclarer AUTOMATIQUEMENT une variable en "protected" au lieu de public ?

Je vous remercie d'avoir lu et éventuellement de votre réponse.

PS: Si jamais vous ne trouvez pas ça assez claire, faite le moi savoir, je tâcherai de me rendre un peu plus précis.

1 réponse


AlexJM
Réponse acceptée

Je pense pas que tu peux faire comme tu le souhaite. Qui plus-est, ce n'est pas très propre de ne pas définir des variables.

Tu ne pourrais pas faire genre :

class Model
{
    protected $dbs = [];
    public function __construct(array $databases)
    {
        foreach ($databases as $name => $param)
            $this->dbs[$name] = new Database($param);
    }
}

class MonModel extends Model
{

}

$databases = [
    "db1" => [...], // Diverses informations sur la connexion
    "db2" => [...],
    "db3" => [...]
];

$monModel = new MonModel($databases);

Et utiliser la surcharge de propriétés (http://php.net/manual/fr/language.oop5.overloading.php) pour y accéder si tu ne veux pas accéder par le tableau ?