目前,我正在创建一个脚本,该脚本将从传递给它的某种类型的报告中解析信息。脚本的一部分将从报告中提取学生信息并保存以供以后处理。
最好以类的形式保存它,还是以数组变量的形式保存它?我想我可以使用 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 */
最佳答案
尝试优化数组与简单值对象的使用可能是不必要的微优化。对于最简单的情况,数组速度更快,因为您没有构造
new
对象的开销。记住这一点很重要:数组不是唯一存在的数据结构。如果您不需要散列功能,一个简单的
SplFixedArray
docs一旦你超过了对象创建的初始开销,这将导致更低的内存开销和更快的迭代。如果您要存储大量数据,则上述固定数组或其他数组之一 SPL data structures可能是更好的选择。最后:值对象应该是不可变的,因此在您的情况下,我强烈建议对象提供封装,而不是随意分配 HashMap 值的能力。如果你想要使用数组符号的简单性,让你的类实现
ArrayAccess
docs两全其美。有些人会建议使用__get
和__set
的魔法 getter 和 setter。我不会,因为魔术通常会不必要地混淆您的代码。如果你真的真的需要魔法,你可能会重新考虑你的设计。
OOP 范例被公认为我们提出的最佳编程范例是有原因的——因为它是我们提出的最佳范例。你应该使用它。避免落入许多/大多数 PHP 开发人员的陷阱,他们将数组用于一切。
关于php - 在 PHP 中应该使用数组还是类来保存多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10903534/