我是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一次(因为该值会渗透到其中的任何其他函数中),这肯定有点有限?
既然你已经知道这个问题了,为什么不继续对你的第二个函数设置一个条件,如果查询确实插入了一行,那么只返回lastInsertId()
呢。例如
function createCompanyContact()
{
// execute the statement here
if($sth->rowCount()>0)
return $db->lastInsertId();
else
return NULL;
}