• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

oop, methode nicht definiert?!

Status
Für weitere Antworten geschlossen.

Frank

Neues Mitglied
Hi, ja ich gebe zu ich habe schon eine Weile nicht mehr mit php gearbeitet.
Jetzt sitze ich an einem neuen Projekt und scheine eingerostet zu sein.
Ich finde einfach den Fehler nicht

Hier der Code
PHP:
<?php
interface TrackingInterface{
  public function __construct($gbx, $log, $config);
  public function forcingset();
  public function beginrace($information);
  public function get($which="current", $what=null);
  public function __destruct();
}
class Tracking implements TrackingInterface {
  var $gbx;
  var $log;
  var $config;
  var $information;
  var $nextinformation;
  var $lastinformation;
  public function __construct($gbx, $log, $config) {
    $self->gbx = $gbx;
    $self->log = $log;
    $self->config = $config;
    $self->information = array();
    $self->nextinformation = array();
    $self->lastinformation = array();
    $self->log->log("INFO","Tracking system has beend initialized");
    $self->forcingset();
  }
  public function forcingset() {
    $self->log->log("INFO","Getting track information by non-callback");
    $info = $self->gbx->Query("GetChallengeInfo");
    if($info === false) {
      $self->log->log("WARNING","Was not able to get information on current track");
      $self->log->log("ERROR","[{$gbx->getErrorCode()}] {$gbx->getErrorMessage()}");
      trigger_error("Was not able to get information on current track",E_USER_ERROR);
    }
    elseif(!is_array($info)) {
      $self->log->log("WARNING","Was not able to get information on current track, setting to unknown");
      trigger_error("Was not able to get information on current track, setting to unknown",E_USER_WARNING);
      $self->information = array( "Name"=>"unknown", "UId"=>md5("unknown"), "FileName"=>"unknown", "Author"=>"unknown", 
                                  "Environnement"=>"unknown", "Mood"=>"unknown", "BronzeTime"=>0, "SilverTime"=>0,
                                  "GoldTime"=>0, "AuthorTime"=>0, "CopperPrice"=>0, "LapRace"=>0);
    }
    else {
      $self->information = $info;
      $self->log->log("INFO","Track information on the current track have been updated");
    }
    $nextinfo = $self->gbx->Query("GetNextChallengeInfo");
    if($nextinfo === false) {
      $self->log->log("WARNING","Was not able to get information on next track");
      $self->log->log("ERROR","[{$gbx->getErrorCode()}] {$gbx->getErrorMessage()}");
      trigger_error("Was not able to get information on next track",E_USER_ERROR);
    }
    elseif(!is_array($nextinfo)) {
      $self->log->log("WARNING","Was not able to get information on next track, setting to unknown");
      trigger_error("Was not able to get information on next track, setting to unknown",E_USER_WARNING);
      $self->nextinformation = array( "Name"=>"unknown", "UId"=>md5("unknown"), "FileName"=>"unknown", "Author"=>"unknown", 
                                  "Environnement"=>"unknown", "Mood"=>"unknown", "BronzeTime"=>0, "SilverTime"=>0,
                                  "GoldTime"=>0, "AuthorTime"=>0, "CopperPrice"=>0, "LapRace"=>0);
    }
    else {
      $self->nextinformation = $nextinfo;
      $self->log->log("INFO","Track information on the next track have been updated");
    }
  }
  public function beginrace($information) {
    $self->log->log("INFO","Server started next track, updating track information");
    $self->lastinformation = $self->information;
    $self->information = $information;
    $nextinfo = $self->gbx->Query("GetNextChallengeInfo");
    $self->log->log("INFO","Track information on the current track have been updated");
    $self->log->log("INFO","Track information on the last track have been updated");
    if($nextinfo === false) {
      $self->log->log("WARNING","Was not able to get information on next track");
      $self->log->log("ERROR","[{$gbx->getErrorCode()}] {$gbx->getErrorMessage()}");
      trigger_error("Was not able to get information on next track, setting to unknown",E_USER_ERROR);
    }
    elseif(!is_array($nextinfo)) {
      $self->log->log("WARNING","Was not able to get information on next track, setting to unknown");
      trigger_error("Was not able to get information on next track, setting to unknown",E_USER_WARNING);
      $self->nextinformation = array( "Name"=>"unknown", "UId"=>md5("unknown"), "FileName"=>"unknown", "Author"=>"unknown", 
                                  "Environnement"=>"unknown", "Mood"=>"unknown", "BronzeTime"=>0, "SilverTime"=>0,
                                  "GoldTime"=>0, "AuthorTime"=>0, "CopperPrice"=>0, "LapRace"=>0);
    }
    else {
      $self->nextinformation = $nextinfo;
      $self->log->log("INFO","Track information on the next track have been updated");
    }
  }
  public function get($which="current", $what=null) {
    switch($which) {
      case "current":
        if(!array_key_exists($what, $self->information)) {
          return $self->information;
        }
        return $self->information[$what];
      break;
      case "next":
        if(!array_key_exists($what, $self->nextinformation)) {
          return $self->nextinformation;
        }
        return $self->nextinformation[$what];
      break;
      case "last":
        if(!array_key_exists($what, $self->lastinformation)) {
          return $self->lastinformation;
        }
        return $self->lastinformation[$what];
      break;
    }
  }
  public function __destruct() {
    unset($gbx);
    unset($log);
    unset($config);
    unset($information);
    unset($nextinformation);
    unset($lastinformation);
  }
}
?>
Aufruf:
PHP:
$tracking = new Tracking($gbx, $log, $config);
var_dump($tracking->get());

Das ganze wird in der Console ausgeführt (PHP CLI) und gibt mir folgende Fehlermeldung aus:
Fatal error: Call to undefined method stdClass::forcingset() in /home/tmuf/plugins/php/sources/Tracking.inc.php on line 24
PHP:
    $self->forcingset();
Das ist die Ursache dafür, aber die Methode ist doch definiert ?! Wo hapert es?
 
Werbung:
omg hab die ganze zeit $this mit $self verwechselt *an kopf hau*
Das kommt davon dass ich jetzt die ganze Zeit mit Python gearbeitet habe, und da benutzt man self statt this.
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben