我有一个已经扩展基类的任意数量的类,我希望每个扩展类都有一个具有相同名称的静态函数。这个功能通常非常昂贵,本质上只需要计算一次,因为它的结果总是相同的。因此,如果尚未缓存,我想将其缓存为属性。
我想要实现的棘手的事情是让这个缓存延迟加载,即。仅在调用静态函数时才加载。可能只会使用其中一个类,并且我们希望避免将所有类都缓存,无论它们是否会被使用。
我目前的工作原理,但我想知道是否有更好的方法。
<?php
echo Inside1::something() . "\n";
echo Inside2::something();
class Outside {
}
class Inside1 extends Outside {
private static $name;
public static function something(){
if(!self::$name){
self::$name = "Inside 1";
}
return self::$name;
}
}
class Inside2 extends Outside {
private static $name;
public static function something(){
if(!self::$name){
self::$name = "Inside 2";
}
return self::$name;
}
}