当前位置:  开发笔记 > 编程语言 > 正文

在PHP中存储类变量的最佳方法是什么?

如何解决《在PHP中存储类变量的最佳方法是什么?》经验,为你挑选了2个好方法。

我目前的PHP类变量设置如下:

class someThing {

    private $cat;
    private $dog;
    private $mouse;
    private $hamster;
    private $zebra;
    private $lion;

    //getters, setters and other methods
}

但我也看到人们使用单个数组来存储所有变量:

class someThing {

    private $data = array();

    //getters, setters and other methods
}

你用哪个,为什么?各有哪些优缺点?



1> Peter Bailey..:

一般来说,第一个更好,因为其他人已经在这里说过.

但是,如果您需要私有地在类上存储数据,但数据成员的占用空间未知,您通常会看到第二个示例与__get()__ set()挂钩以隐藏它们是私有存储的.

class someThing {

    private $data = array();

    public function __get( $property )
    {
        if ( isset( $this->data[$property] ) )
        {
            return $this->data[$property];
        }
        return null;
    }

    public function __set( $property, $value )
    {
        $this->data[$property] = $value;
    }
}

然后,此类的对象可以像stdClass的实例一样使用,只有您设置的成员实际上不是公共的

$o = new someThing()
$o->cow = 'moo';
$o->dog = 'woof';
// etc

此技术有其用途,但请注意__get()和__set()比直接设置公共属性的速度快10-12倍.



2> Greg..:

如果你正在使用private $data;你,那里只有一个难以理解的数据......如果你想弄清楚一个类是如何工作的,那么明确地说明它们会让你的生活更轻松.

另一个考虑因素是如果您使用具有自动完成功能的IDE - 这不适用于第二种方法.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有