0

「オブジェクトコンテキスト以外で$ 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();
    }

機能する機能と機能しない機能の間に違いは見られませ
ん。助けていただければ幸いです

4

1 に答える 1