私は、オブジェクトがシステムのさまざまな部分で使用されている複数のパブリックプロパティを持つクラスを持っています。問題は、クラスのオブジェクトを使用している各場所でこれらのパブリックプロパティの一部だけをロードする必要があることです。プロパティのリスト全体をロードするたびに永久にかかるためです。PHPで必要なときにのみ変数をロードする方法
__autoload
または同様の関数を使用して、呼び出された時点で異なる変数をロードする関数を呼び出す方法はありますか?
など。
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
詳細、konforce。言及しておきたいことだが、Catはすでにそれらを「公的」と定義していたが、この場合は問題ではないと私は考えている。 –