我在 stackoverflow 上搜索了有关“不在对象上下文中使用 $this”的信息,但我无法从中得到答案,所以我在这里问它。
我将在这里复制我的代码,这样您和我就不会感到困惑:
错误出现在第一个 IF 语句的代码中($this->checkConnection()):
public function randomLocation() {
if ($this->checkConnection()) {
$fetch = array();
$character = $this->getCharacter($_GET['action']);
$locations = Controller_Core_Database::getObjects('Model_Game_Location');
foreach ($locations as $location) {
$fetchLocation = $location->getLocationNameShort();
$fetch[] = $fetchLocation;
}
$newLocation = rand(0,31);
$character->setLocation($fetch[$newLocation]);
Controller_Core_Database::update($character);
}
}
但是我有很多以这个“checkConnection”开头的功能并且这些功能都可以工作,除了这个。在我看来这很奇怪(尽管我仍然是 OOP PHP 的初学者)
所以这是我的 checkConnection 功能:
public function checkConnection() {
$mysqli = Controller_Core_Database::getDB();
if ($mysqli != null) {
return TRUE;
} else {
return FALSE;
}
}
Controller_Core_Database::getDB() 代码是:
public static function getDB() {
self::$mysqli = new mysqli('','','','');
return self::$mysqli;
}
出于安全目的,我已删除该信息。
这是一个完美运行的函数示例:
public function createItem() {
$view = new Controller_Core_View();
$view->setViewFile("game/createItem.php");
if ($this->checkConnection()) {
$item = Controller_Core_Database::getObjects('Model_Game_Item');
$enchantment = Controller_Core_Database::getObjects('Model_Game_Itemenchantment');
$view->assign("item", $item);
$view->assign("enchantment", $enchantment);
}
return $view->render();
}
我看不出两个有效和无效的功能有什么不同,
我希望你能帮助我