我最近开始在我的项目中使用类,其中一个用途是在private
数组中设置和存储全局常量。我想知道这是不是常见的做法,不好,而且最重要的是,如果我在课堂上对fetch函数进行大量调用时很慢(很多时候我需要网站名称,电子邮件地址或MySQL详细信息) )。
我没有发布代码,因为它非常基本;只是一个函数,returns
数组中项目的值与给定的键。
答案 0 :(得分:2)
不要担心。
通过这种方式,您将来到Singleton和Registry模式。不要使用这些图案,它是反模式。
尝试通过SOLID principles构建设计,您的对象将越来越少地耦合。站点名称将存储在类中,该类将输出内容到页面,其他类将不需要此常量。电子邮件地址将仅存储在Mailer类中(或其配置文件中),其他类不需要此常量。等等。
Class,它包含所有常量和所有配置,它都是'God object',它也是一种反模式(不良实践)。
不要担心getter和setter的性能。
答案 1 :(得分:0)
除非你在那个数组中声明了数百个元素,否则应该没问题,看起来非常适合获取和设置:)
我在这里注意到的是,为什么不直接声明实例变量,而不是将所有信息存储在私有数组中?例如,而不是
<?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';
?>