PHP:具有本地化数据的类

时间:2015-04-23 16:53:16

标签: php

我创建了一个类来放置我的本地标签:

SELECT *
FROM MyTable mt
CROSS APPLY dbo.splitstring(mt.Name, 'test') y -- First alias
      CROSS APPLY dbo.splitstring(y.Name, '_') x -- Reference the preceding alias
WHERE ISNUMERIC(x.Name) = 1 AND LEN(x.Name) = 3; -- Must reference the last alias (x)

所以我可以通过输入 Local :: closed('fr');

来调用它们

我问自己一个问题:这不会减慢我网站的性能,因为每次调用这个公共静态函数时,都会创建一个新的Local类实例。

有没有更好的方法来优化此类的性能,如果有,我该怎么做?

2 个答案:

答案 0 :(得分:4)

不,这并不意味着你实现了这个类:STATIC方法是可以访问的,没有实例化类http://php.net/manual/en/language.oop5.static.php

答案 1 :(得分:2)

如果您每次调用课程时都担心重新填充数组,可以尝试使用名为memoization的技术。此过程基本上采用一个值并计算一次并保存该计算的结果以供以后使用,以便不必再次计算。

class Local {
    protected static $translations = [];

    public static function closed($lang = 'en') {
        // This is the shortcut.  The value has already been computed.
        if(isset(self::$translations[$lang])) {
            return self::$translations[$lang];
        }
        self::$translations['nl'] = 'Gesloten';
        self::$translations['fr'] = 'Fermer';
        self::$translations['en'] = 'Closed';
        return self::$translations[$lang];
    }
}

缺点是,通过加快处理速度,您还可以增加脚本占用的内存量,因为该脚本将保留在内存中,直到脚本终止。

但是,在一天结束时,这种问题恕我直言更适合于配置类型的解决方案,而不是基于类的解决方案。