将PHP类设置存储在变量中或从方法返回它们

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了将PHP类设置存储在变量中或从方法返回它们脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
当人们处理扩展其他类的类并根据类中的某些设置提供功能时,我会看到两种不同的实现.

>变量用于存储设置.
>方法用于返回设置.

使用变量:

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)
>是否存在OOP逻辑/易编程/其他原因来选择一个
另一种方式?

解决方法

从一些基准测试 – 时间非常相似 – 尽管如此

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;
    }

}

脚本宝典总结

以上是脚本宝典为你收集整理的将PHP类设置存储在变量中或从方法返回它们全部内容,希望文章能够帮你解决将PHP类设置存储在变量中或从方法返回它们所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。