将PHP类设置存储在变量中或从方法返回它们
发布时间:2020-12-13 16:17:36 所属栏目:PHP教程 来源:网络整理
导读:当人们处理扩展其他类的类并根据类中的某些设置提供功能时,我会看到两种不同的实现. 变量用于存储设置. 方法用于返回设置. 使用变量: class Model { var $fields = array(); function getFields() { return array_keys($this-fields); } function getRules(
当人们处理扩展其他类的类并根据类中的某些设置提供功能时,我会看到两种不同的实现.
>变量用于存储设置. 使用变量: class Model { var $fields = array(); function getFields() { return array_keys($this->fields); } function getRules() { return $this->fields; } } class Person extends Model { var $fields = array( 'name' => array('maxLength'=>10),'email' => array('maxLength'=>50,'validEmail'=>true),); } 使用方法: class Model { function getFields() {} } class Person extends Model { function getFields() { return array('name','email'); } function getRules() { return array( 'name' => array('maxLength'=>10),); } } 两个示例都实现了相同的结果,我可以执行诸如$person-> getFields()和$person-> getRules()之类的操作,但在方法示例中我不喜欢“重复”字段列表,因为字段实际上是在$person-> getFields()和$person-> getRules()中定义的,它必须在每次通过该方法询问时计算数组.另一方面,我不喜欢每个对象都存储变量中的所有设置.这似乎是一种资源浪费.所以我只是想知道什么是更好的方式. 我的主要问题是: >是否有表现理由选择另一种方式? 2) 解决方法
从一些基准测试 – 时间非常相似 – 尽管如此
return array('name','email'); 比…快得多 return array_keys($this->fields); 为每种方法运行10,000次操作产生了这些平均值: Variable: getFields 0.06s getRules 0.05s Method: getFields 0.04s getRules 0.05s 要回答第二个问题 – 这取决于您的用例 – 如果存储在这些对象中的数据是静态的,或者它是否来自另一个数据源/配置文件. 一个跟进问题,为什么不使用对象属性? class Person extends Model { protected $name protected $email public function getName() { return $this->name; } public function getEmail() { return $this->email; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |