这些类属性是多余的吗?

时间:2012-01-01 22:49:24

标签: php class properties

这是我正在上课的课程。在使用表单上传文件后,它会发送到包含此类的此php文件:

class Parse
{
    public $file;

    public function __construct()
    {
        echo 'The class was initiated!<br />';
    }

    public function setFile($file) 
    {
        if (sizeof($file) == 1)
        {
            $this->file = $file;
        }
    }

    public function getFileName()
    {
        return $this->file['uploadedfile']['name'];
    }

    public function getFileTempName()
    {
        return $this->file['uploadedfile']['tmp_name'];
    }

    public function getFileSize()
    {
        return $this->file['uploadedfile']['size'];
    }
}

我应该直接引用$ obj-&gt; file ['uploadedfile'] ['property'],就像我创建Getters一样,或者我应该创建一堆公共类属性,如public $filename并存储值从$ _FILES变量到单个类属性?

哪种是最佳做法?

以答案编辑

此代码完美无缺:

<?php

    class Parser
    {
        public $file;

        public function __construct()
        {
            echo 'The class was initiated!<br />';
        }

        public function setFile($file) 
        {
            if ($_POST) {
                if ($file['uploadedfile']['size'] > 0) {
                    $this->file = $file;
                } else {
                    echo "File not uploaded!<br />";
                }
            } else {
                echo "The form was not submitted!<br />";
            }
        }
    }

    ################
    # test area
    ################



    $obj = new LoLParser;
    $obj->setFile($_FILES);

    ?>

1 个答案:

答案 0 :(得分:1)

鉴于$_FILES是一个超全局,在所有范围内都可用,你实际上并没有获得任何东西通过将它存储为类属性可以获得一些特别小的收益。将它作为一个可读性的属性可能会有一些好处。正如评论中所指出的,它还提供了模拟单元测试数据的途径。

然而,为$_FILES创建getter方法似乎在我看来增加了不必要的复杂性和混乱。 Getters对于在类外暴露私有或受保护的属性非常有用,但在访问超全局时几乎没有用处,因为无论如何都无法保护超全局的内容。