我想学习PHP,并选择将一个简单的项目跟踪器作为练习。
我找不到一种很好的(DRY)方法来将我的模型类映射到sql行。 现在我有一个全局$ TasksColumns并始终检查索引是否存在:
$TasksColumnId = "Id";
$TasksColumnState = "State";
$TasksColumns = [
$TasksColumnId,
"Summary",
"Description",
$TasksColumnState,
"Estimation",//EstimateDuration
"Actual",//Duration
"FixVersion"
// Add Rank
// Add Priority
];
然后手动签入代码:
$task -> Id = $task -> valueIfExistsKeyInArray("Id", $IdSummaryDescriptionStateEstimationActualFixVer);
$task -> Summary = $task -> valueIfExistsKeyInArray("Summary", $IdSummaryDescriptionStateEstimationActualFixVer);
有什么更好的方法来实现这一目标? (所以我不必在添加新的SQL列时触及所有代码)
由于
答案 0 :(得分:1)
您可以使用Doctrine。 它是将数据库行映射到php类的框架。
Here on wikipedia就是一些例子。此示例从维基百科中复制:
$user = new User();
$user->name = "john1";
$user->password = "doe";
$entityManager->persist($user);
$entityManager->flush();
echo "The user with id $user->id has been saved.";
这是Doctrine tutorial。检索对象也很容易(例如教程中的例子):
$reporter = $entityManager->find("User", $theReporterId);
但您也可以执行更复杂的查询来检索对象。