Php 在类中存储全局常量的性能
我最近开始在我的项目中使用类,其中一个用途是在Php 在类中存储全局常量的性能,php,performance,class,Php,Performance,Class,我最近开始在我的项目中使用类,其中一个用途是在private数组中设置和存储全局常量。我想知道这是否是一种常见的做法,如果我在类中大量调用fetch函数,那么这种做法很糟糕,而且最重要的是,如果我需要站点名称、电子邮件地址或MySQL详细信息,那么调用速度会很慢 我不会发布代码,因为它非常基本;只需一个函数,返回数组中具有给定键的项的值。不用担心。 走这条路,您将看到模式Singleton和Registry。不要使用这些模式,这是反模式 试着按顺序构建设计,对象之间的耦合会越来越少。站点名称将存
private
数组中设置和存储全局常量。我想知道这是否是一种常见的做法,如果我在类中大量调用fetch函数,那么这种做法很糟糕,而且最重要的是,如果我需要站点名称、电子邮件地址或MySQL详细信息,那么调用速度会很慢
我不会发布代码,因为它非常基本;只需一个函数,
返回数组中具有给定键的项的值。不用担心。
走这条路,您将看到模式Singleton和Registry。不要使用这些模式,这是反模式
试着按顺序构建设计,对象之间的耦合会越来越少。站点名称将存储在类中,该类将向页面输出内容,其他类不需要此常量。电子邮件地址将仅存储在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';
?>
我不明白你在做什么。您是在查找数组值,还是在进行数据库调用?或者两者都有?为什么要将常量存储在数组中?我会使用类变量。您是否会问,将某个对象作为常量是否比将其存储在类中并调用访问器方法来获取其值更好?我想这取决于数据。如果它更适合设计成为一个类的一部分。性能我不认为有什么区别。优化您的数据库查询,不要担心变量访问和常量访问的性能。让可读性成为决定因素。过早的优化是万恶之源。test->database='testDB'它将抛出致命错误,因为它是一个私有字段。不要试图改变对“公共”的访问。我没注意到,孩子们的错误,只是把太多的注意力放在了你的问题上。使用一个只包含声明并由当前类继承的类怎么样?因此,可以从子类私下或保护地访问实例变量。让我来做上面的编辑。这不是我的问题。1) 继承—这不是对象之间通信的最佳方式。使用构图。2) 阅读上帝对象
:在getter和setter中使用此方法(返回帖子)的问题是,因为变量是硬编码的,getter和setter也必须是bareval()
,这很愚蠢。这就是为什么我需要一个数组,虽然它不是很整齐。非常感谢OZ!。也谢谢你的链接:-)