Эти свойства класса избыточны? - PullRequest
1 голос
/ 02 января 2012

Вот класс, над которым я работаю.После загрузки файла с помощью формы, он помещает в этот файл 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-> 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 Ответ

1 голос
/ 02 января 2012

Учитывая, что $_FILES - это суперглобальный элемент, доступный во всех областях, вы ничего не получите есть некоторые небольшие преимущества, если вы сохраните его как свойство класса.Может быть полезно иметь его как свойство для удобства чтения внутри класса.Как отмечено в комментариях, он также предоставляет путь к фиктивным данным для модульного тестирования.

Однако, по моему мнению, создание методов получения для $_FILES добавляет ненужной сложности и путаницы.Методы получения полезны для раскрытия частных или защищенных свойств за пределами класса, но они не имеют большого значения при доступе к суперглобальному, так как вы все равно не можете защитить содержимое суперглобального.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...