我是OOP的新手,对于返回具有相同变量名称的函数有疑问,例如:
class CompanyManager
{
function createCompany()
{
// PDO - create the company
return $db->lastInsertId();
}
function createCompanyContact()
{
// PDO - create the contact
return $db->lastInsertId();
}
}
问题是我首先调用createCompany,获取它的ID并在创建联系人时使用它。但是在createCompanyContact中,如果查询因任何原因失败,则返回companyID,因为它是先前从createCompany中的数据库返回的值,因此仍然设置。我该如何解决这个问题?
我考虑过为联系人创建一个单独的类,但是如果在一个类中我们只能使用一次lastInsertID(因为该值会渗透到其中的任何其他函数),它肯定有点受限制吗?
答案 0 :(得分:1)
既然您已经知道了问题,那么为什么不继续在第二个函数上添加一个条件,只有在查询确实插入一行时才返回lastInsertId()
。例如
function createCompanyContact()
{
// execute the statement here
if($sth->rowCount()>0)
return $db->lastInsertId();
else
return NULL;
}