1 回答
TA贡献1817条经验 获得超6个赞
$filter无法在函数内部访问。
$filter = new Filter(); //<--- filter is here, in the outer scope
function handleGoodMessage($chatId, $text) {
$report = "Message '".$text."' passed the filters.\nID: ".$filter->getID($text);
//this scope is inside the function, $filter does not exist here
sendMsg($chatId, $report);
}
这在测试中有效,因为您不更改范围。你需要$filter传入
- - - 更新 - -
就我个人而言,我总是依赖注入而不是使用,globals所以我的偏好是重新定义函数,如下所示:
function handleGoodMessage($chatId, $text, $filter) {
$report = "Message '".$text."' passed the filters.\nID: ".$filter->getID($text);
sendMsg($chatId, $report);
}
我可能(冒着让某些人不安的风险)将其getID定义为 a static function,因为它并没有真正交互任何东西,没有使用任何成员变量,只是处理一个字符串并返回它。那么global你可以说,而不是注入它,或者使用它
function handleGoodMessage($chatId, $text) {
$report = "Message '".$text."' passed the filters.\nID: ".Filter::getID($text);
sendMsg($chatId, $report);
}
- 1 回答
- 0 关注
- 78 浏览
添加回答
举报