在类中存储全局常量的性能


Performance of storing global constants in a class

我最近开始在项目中使用类,其中一个用途是在private数组中设置和存储全局常量。我想知道这是否是一种常见的做法,如果我在类中对fetch函数进行了大量调用(无论何时,只要我需要网站名称、电子邮件地址或MySQL详细信息,都会进行大量调用),这是否很糟糕,最重要的是,速度是否很慢。

我不会发布代码,因为它非常基本;只是一个函数,returns是给定键的数组中某个项的值。

不用担心
通过这种方式,您将看到模式Singleton和Registry。不要使用这些模式,这是反模式。

试着按照SOLID原则构建设计,你的对象就会越来越不耦合。网站名称将存储在类中,该类将向页面输出内容,其他类不需要此常量。电子邮件地址将仅存储在Mailer类(或其配置文件)中,其他类不需要此常量。等等。

类,它包含所有常量和所有配置——这有点像"上帝对象",也是一种反模式(糟糕的做法)。

不要担心getter和setter的性能。

除非您在该数组中声明数百个元素,否则应该没问题,这看起来非常好:)

我在这里注意到的是,与其将所有信息存储在一个私有数组中,为什么不直接声明实例变量呢?例如,代替

<?php
class Test() {
    private info = array('sitename' => 'Site Name'; 'database' => 'Database Name');
}
?>

像这样做应该是更好的做法

<?php
class Test() {
    private sitename = 'Site Name';
    private database = 'Database Name';
}
?>

这背后的原因是,当你需要获得网站的一条信息时,你不需要获得整个数组,只需要获得其中的一个元素,这看起来不是很好。使用实例变量只是更方便地获取和设置。

<?php
$test = new Test();
echo $test->info['sitename'];
$test->info['database'] = 'testDB';
?>

下面的代码看起来更好更方便吗?

<?php
$test = new Test();
echo $test->sitename;
$test->database = 'testDB';
?>