J'ai une classe avec plusieurs propriétés publiques dont les objets sont utilisés dans différentes parties du système. Le problème est que je n'ai besoin de charger que certaines de ces propriétés publiques dans chaque endroit où j'utilise les objets de la classe, car charger la liste complète des propriétés à chaque fois prendrait une éternité.Comment charger des variables uniquement en cas de besoin dans PHP
Est-il possible d'utiliser __autoload
ou une fonction similaire pour appeler les fonctions qui chargent différentes variables au moment où elles sont appelées?
E.g.
class Bread {
public
$Ingredients,
$Price,
$Color;
public function magicLoading($var) {
switch($var) {
case "Ingredients" : return loadIngredients();
case "Price" : return loadPrice();
case "Color" : return loadColor();
default : break;
}
}
public function loadIngredients() {
$this->Ingredients = ...
}
}
foreach($Bread->Ingredients as $Ingredient) {
//do stuff here
}
Je pense qu'il vaut la peine d'expliquer explicitement comment la propriété créée lors de l'exécution est par défaut publique, et contourne ainsi les futurs appels '__get()'. (Par conséquent, cette méthode n'est pas bonne si vous voulez une charge paresseuse en lecture seule ... mais si ce n'est pas problématique, c'est une bonne astuce à utiliser.) – Matthew
Bon détail, konforce. Il convient de mentionner, bien que Cat les ait déjà définis comme «publics», alors dans ce cas, je ne pense pas que ce soit un problème. –