2013-06-18 48 views
0

我在「stackoverflow」上搜索了關於「使用$ this而不是在對象上下文中」的問題,但我無法得到我的答案,所以我在此問一下。

我只是在這裏複製我的代碼,所以你和我不感到困惑:

的錯誤是在這段代碼的第一個if語句($這個 - > 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(); 
    } 

我沒有看到2個功能的作品,而不是作品之間有什麼不同,
我希望你能幫助我

回答

0

你沒有指定,如何調用randomLocation()方法。

我建議你調用非靜態方法staticaly - 這就是爲什麼你不在對象上下文中。

如果是這樣,請考慮重新調用randomLocation()方法以使用對象上下文 - e.i.

$x = new YourObjectName(); 

$x->randomLocation(); 

或重寫checkConnection()方法是靜態的和在randomLocation()方法staticaly調用它。

+0

謝謝,這對我和它的愚蠢我不知道這一點。 –

相關問題