2017-10-22 94 views
0

我有一个具有多个函数的Survey类。PHP类中的变量为null

在其中一个功能中,我检查是否存在调查 - 如果不存在,则调用其他函数,该函数创建并返回一个新调查。

像这样:

public function createSurvey($userId) { 
    somecode... 
    return $surveyId; 
} 

另一个功能是这样的:

public function getExistingSurvey($userId) { 
    $survey = $this->checkIfSurveyExists($userId)... 
    if (!$survey) { 
     return $this->createSurvey($userId); 
    } 
} 

我遇到的问题,似乎是与$userId变量的作用域问题。

当我打电话getExistingSurvey()功能,我要求:

一)返回一个现有的调查项
B)ELSE创建一个新的,并将其返回

该函数返回一个现有的调查,如果它存在并且通过$userId变量就好了。

但是,如果它不存在,我需要创建一个具有createSurvey($userId)功能,那么它在某种程度上发送过来的$userId一个null值。

这似乎是一个范围问题。

任何想法? ...

+0

您是否可能将checkIfSurveyExists中的null分配给$ userID var?我无法用你给出的例子重新创建它。 –

回答

2

您没有返回现有调查。如果它存在,你会错过如果哪个不返回,这是隐式返回null

+0

这就是我昨天告诉他的:/ – Wranorn

+0

你说他比较真实?他们是不一样的 – exussum

+0

第二个评论“... getExistingSurvey()不会返回任何东西,除非调查设置将隐式返回NULL” – Wranorn

1

您正在使用$ survey存储checkIfSurveyExists()的结果,但检查$ value为true。

public function getExistingSurvey($userId) { 
    $survey = $this->checkIfSurveyExists($userId)... 
    if (!$value) { 
     return $this->createSurvey($userId); 
    } 
} 
+0

是的,这是愚蠢的。老实说,运行时代码没有这个错误。在登录该网站时,我错误地输入了该网站。我希望这很简单!任何其他想法? ...(我只是修复了原来的帖子 - 感谢你指出了这一点) –

+0

Theres有几件事情......但没有完整的代码,在黑暗中戳动。例如getExistingSurvey()不会返回任何东西,除非调查被设置为隐式返回NULL。 – Wranorn

+0

createSurvey:我们所拥有的唯一代码是userid传入并返回surveyId,... surveyID如何确定?该函数意味着它创建的调查不会返回调查的ID。 – Wranorn