我有一个包含多个公共属性的类,其中的对象正在系统的不同部分中使用。问题是我只需要在每个使用类对象的地方加载一些公共属性,因为每次加载整个属性列表都将永远占用。如何仅在PHP中需要时加载变量
有没有什么办法可以使用__autoload
或类似的函数来调用在调用它们时加载不同变量的函数?
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
}
我认为值得明确解释在运行时创建的属性如何默认为public,从而绕过未来的`__get()`调用。 (因此,如果你想要一个只读的懒惰负载,这种方法是不好的,但如果这不是问题,这是一个很好的'技巧') – Matthew 2010-12-01 18:52:01