codeigniterフレームワークにはこのようなクラスがあります(より明確にするために編集しました。完全な機能はここにありますhttp://pastebin.com/K33amh7r):
function &load_class($class, $directory = 'libraries', $prefix = 'CI_')
{
static $_classes = array();
// Does the class exist? If so, we're done...
if (isset($_classes[$class]))
{
return $_classes[$class];
}
is_loaded($class);
$_classes[$class] = new $name();
return $_classes[$class];
}
したがって、クラスが最初にロードされる(この関数に渡される)ときに、この静的変数に保存されます。次回同じクラスがロードされるときに、この関数はクラスがすでに存在するかどうかをチェックし(静的に割り当てられている場合、キャッシュされている場合、これがメモリにどのように格納されているかわかりません)、存在する場合はロードされます(NOT *インスタンス化*また )
私が見る限り、唯一の目的は時間またはメモリを節約することであり、同じクラスを2回インスタンス化することではありません。
ここでの私の質問は、クラスを実際にインスタンス化すると、メモリを消費したり、読み込み時間を消費したりする可能性があるため、このようにキャッシュする必要があるのでしょうか。