gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:06:36 31 4
gpt4 key购买 nike

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

最好以类的形式保存它,还是以数组变量的形式保存它?我想我可以使用 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com