「オブジェクトコンテキスト以外で$ thisを使用する」についてstackoverflowで検索しましたが、答えが得られなかったので、ここで質問します。
あなたと私が混乱しないように、ここにコードをコピーします。
エラーは、最初の 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();
}
機能する機能と機能しない機能の間に違いは見られませ
ん。助けていただければ幸いです