php - 在 PHP 中应该使用数组还是类来保存多个变量?

标签 php arrays class

目前,我正在创建一个脚本,该脚本将从传递给它的某种类型的报告中解析信息。脚本的一部分将从报告中提取学生信息并保存以供以后处理。

最好以类的形式保存它,还是以数组变量的形式保存它?我想我可以使用 3 种方法。

编辑: 真的,问题归结为是否有任何一种方式具有某种性能优势?因为除此之外,每个方法实际上都与上一个相同。

作为一个可以直接访问变量的类:

class StudentInformation {

    public $studentID;
    public $firstName;
    public $lastName;
    public $middleName;
    public $programYear;
    public $timeGenerated;

    function StudentInformation(){} 
}

作为具有函数的类:

class StudentInformation {

    private $studentID;
    private $firstName;
    private $lastName;
    private $middleName;
    private $programYear;
    private $timeGenerated;

    function StudentInformation(){}

    public function setStudentID($id)
    {
        $this->studentID = $id;
    }

    public function getStudentID()
    {
        return $this->studentID;
    }

    public function setFirstName($fn)
    {
        $this->firstName = $fn;
    }

    /* etc, etc, etc */
}

或者作为以字符串为键的数组:

$studentInfo = array();
$studentInfo["idnumber"] = $whatever;
$studentInfo["firstname"] = $whatever;
$studentInfo["lastname"] = $whatever;
/* etc, etc, etc */

最佳答案

  1. 尝试优化数组与简单值对象的使用可能是不必要的微优化。对于最简单的情况,数组速度更快,因为您没有构造 new 对象的开销。

  2. 记住这一点很重要:数组不是唯一存在的数据结构。如果您不需要散列功能,一个简单的 SplFixedArraydocs一旦你超过了对象创建的初始开销,这将导致更低的内存开销和更快的迭代。如果您要存储大量数据,则上述固定数组或其他数组之一 SPL data structures可能是更好的选择。

  3. 最后:值对象应该是不可变的,因此在您的情况下,我强烈建议对象提供封装,而不是随意分配 HashMap 值的能力。如果你想要使用数组符号的简单性,让你的类实现 ArrayAccessdocs两全其美。有些人会建议使用 __get__set 的魔法 getter 和 setter。我不会,因为魔术通常会不必要地混淆您的代码。如果你真的真的需要魔法,你可能会重新考虑你的设计。

OOP 范例被公认为我们提出的最佳编程范例是有原因的——因为它是我们提出的最佳范例。你应该使用它。避免落入许多/大多数 PHP 开发人员的陷阱,他们将数组用于一切。

关于php - 在 PHP 中应该使用数组还是类来保存多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10903534/

相关文章:

PHP MySQL更新表行实际上没有更新,没有错误

php - 如何在 PHP 中通过 url 发送数组值?

arrays - 如何有效解决这个问题?

c++ - 定义需要在运行时设置的 const static

java - 在不影响现有系统的情况下更新新的 Java 库

php - MYSQL Link,连接两个表

php - 通过 href 元素链接 li>a

python - 根据元素的条件值对 numpy 数组元素进行排序

arrays - 如何在运行时将多个图像从数据库保存到 TMemoryStream 并稍后提取它们

c++ - 非静态数据成员的无效使用