php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.12.2011, 20:32  
Neuer Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
sebastian3984 befindet sich auf einem aufstrebenden Ast
Standard Debugger in anderer Klasse verwenden

Hey Leute,

Mein Debugger funktioniert jetzt (Getestet in der selben Datei) nun möchte ich meinen Debugger in einen anderen Skript verwenden, doch er "sagt" folgendes:

Notice: Undefined variable: debugger in D:\xampp\htdocs\MW3 Server Interface\classes\mapchange.class.php on line 28

Fatal error: Call to a member function debug() on a non-object in D:\xampp\htdocs\MW3 Server Interface\classes\mapchange.class.php on line 28

Hier die PHP Codes,

Debugger:
PHP-Code:
<?php
    
/****************
     * Debug Class  *
     ****************
     * @version 0.1 *
     ****************
     * Methods       **********************************
     * echo($message) Show the message in the Browser *
     * logging($message) Write the message in log file*
     **************************************************/
    // Interface for Log and echo Debugger
    
    
interface Debugger {
        public static function 
getInstance();
        public function 
debug($prefix$msg);
    }


    
// Set Normal Log File
    
define("FILE""logger.log");
    
    class 
echoDebugger implements Debugger{
        protected 
$prefix;
        protected 
$msg;
        protected 
$time;
        
        protected function 
__construct() {}
        
        private static 
$instance null;
        
        public static function 
getInstance() {
            if(
self::$instance == null){
                
self::$instance = new echoDebugger();
            }
            return 
self::$instance;
        }
        public function 
debug($prefix$msg){
            
$this->prefix $prefix;
            
$this->msg $msg;
            
$this->time date("d:m:Y H:i");
            
            echo 
"[{$this->prefix}]" "[{$this->time}]" " {$this->msg}";
        }
    }

    class 
logDebugger{
        protected 
$prefix;
        protected 
$msg
        protected 
$time;
        protected static 
$instances = array();
        protected static 
$logfile;
        
            protected function 
__construct() {}
        
        public static function 
getInstance($logfile) {
            if(!isset(
self::$instances[$logfile])){
                
self::$instances[$logfile] = new logDebugger();
                
self::$logfile $logfile;
            }
            return 
self::$instances[$logfile];
        }
        
        public function 
debug($prefix$msg) {
            
$this->time date("d:m:Y H:i");
            
$this->msg $msg;
            
$this->prefix $prefix;
        
error_log("[{$this->prefix}]" "[{$this->time}]" " {$this->msg}\n"3self::$logfile);
        }
    }
und die andere Datei:

PHP-Code:
<?php
// Include Debugger
include_once 'Debugger/debugger.class.php';

    class 
mapchange {
        protected 
$map;
        protected 
$maps;
        protected 
$map_load;
        protected 
$debugger;
                 
        public function 
__construct() {
        }
        
        public function 
map($map) {
            
$this->map $map;
            
// Load all maps in a array
            
$this->map_load parse_ini_file("mw3 Game Infos/maps.ini");
            
// Check if Map is in Mappool
            // Set Debugger first
            
$this->debugger logDebugger::getInstance("map_change.log");
            if(
in_array($this->map$this->map_load)) {
                
/*
                 * ... Map change ...
                 */
                
$debugger->debug("INFO""Map wurde gewechselt auf " $this->map);
            }else{
                
// Log Map isnt in Mappool
                
$debugger->debug("WARNUNG""Map befindet sich nicht auf dem Server");
            }
            
        }
    }
    
    
$mapchange = new mapchange();
    
$mapchange->map("test_123");
Hoffe ihr könnt mir helfen.

mfg,

Sebastian
sebastian3984 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.12.2011, 20:41  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Notice: Undefined variable: debugger in D:\xampp\htdocs\MW3 Server Interface\classes\mapchange.class.php on line 28
Guck in D:\xampp\htdocs\MW3 Server Interface\classes\mapchange.class.php in Zeile 28!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 05.12.2011, 22:06  
Neuer Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
sebastian3984 befindet sich auf einem aufstrebenden Ast
Standard

Danke für den Hilfreichen Tipp, darauf bin ich natürlich nicht gekommen *Ironie aus*
Könnte ich mal eine gescheite und hilfreiche Antwort haben?

Zeile 28:

PHP-Code:
                $debugger->debug("WARNUNG""Map befindet sich nicht auf dem Server"); 
Ich weiß nicht, was daran falsch sein soll...
sebastian3984 ist offline   Mit Zitat antworten
Alt 05.12.2011, 22:10  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

$debugger existiert nicht/ist kein Objekt. Steht auch in der Fehlermeldung. Mehr als gescheit und hilfreich.
Zitat:
Undefined variable
Zitat:
Call to a member function debug() on a non-object
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 05.12.2011, 22:26  
Neuer Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
sebastian3984 befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
// Include Debugger
include_once 'Debugger/debugger.class.php';

// Set Debugger first
$this->debugger logDebugger::getInstance("map_change.log"); 
Der Debugger ist doch gesetzt, ich kann Englisch, keine Sorge, ich habe die Fehlermeldung gesehen und in meinem Skript geguckt, ob ich den Debugger instanziiert habe, dass habe ich ja...

Könntest du, wenn es möglich ist, mein Skript zu reparieren, damit ich meinen Fehler sehen kann?

Danke.
sebastian3984 ist offline   Mit Zitat antworten
Alt 05.12.2011, 22:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

$this->debugger ist Unsinn, weil nur im Klassenkontext sinnvoll. Normal sollte bereits dort eine Fehlermeldung aufschlagen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 05.12.2011, 22:34  
Neuer Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
sebastian3984 befindet sich auf einem aufstrebenden Ast
Standard

Musste einfach nur das $this weglassen, danke für deine Hilfe
sebastian3984 ist offline   Mit Zitat antworten
Alt 05.12.2011, 22:39  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
$this->debugger ist Unsinn, weil nur im Klassenkontext sinnvoll.
Zitat:
Musste einfach nur das $this weglassen
Ah, ok, „Debugger in anderer Klasse verwenden“ ist hier wohl das STichwort. Habe ich überlesen.

Trotzdem führt uns das zurück zu
Zitat:
Den ganzen Singleton-Käse könnte man IMHO zugunsten eines unkomplizierten Debuggens besser als statische Methoden umsetzen.
Denn auch $debugger ist ja schnell mal in einem längeren Script überschrieben oder durch einen anderen Scope nicht mehr verfügbar. Warum setzt Du sowas elementares wie einen Debugger als Objekt um?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 05.12.2011, 22:46  
Neuer Benutzer
 
Registriert seit: 04.12.2011
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
sebastian3984 befindet sich auf einem aufstrebenden Ast
Standard

Lese gerade das Buch: PHP Design Patterns, da war ein Debugger als Beispiel für das Singleton Pattern
sebastian3984 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Debugger mit Hilfe des Singleton Pattern sebastian3984 PHP Einsteiger 15 06.12.2011 15:47
[Erledigt] Session Werte über eine Klasse speichern und verwenden für Auth Objekt litterauspirna PHP Einsteiger 3 19.10.2011 10:27
Klassendesign/Klassenobjekt an andere Klasse übergeben pikachu PHP-Fortgeschrittene 2 29.08.2011 19:37
Klasse mit Pfadproblem Dieselsepp PHP Einsteiger 6 27.04.2011 13:51
Interface in Klasse richtig benutzen, Strategie Pattern litterauspirna PHP Tipps 2010 4 24.11.2010 13:59
[Erledigt] Klasse in anderer Klasse benutzen Screeze PHP Tipps 2009 2 04.01.2009 14:57
Klasse aus externer Klasse aufrufen kostja PHP Tipps 2008 8 07.08.2008 14:13
[Erledigt] Klasse / Funktionen verwenden PHP4ever PHP Tipps 2008 7 27.07.2008 16:24
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
Klasse aus anderer Klasse aus ansprechen CC84 PHP Tipps 2006 13 18.01.2006 09:27
aus einer funktion auf funktion anderer klasse zugreifen seejay PHP Tipps 2006 3 05.01.2006 10:37
define-Konstante in Klasse verwenden? bicpi PHP-Fortgeschrittene 4 04.08.2005 15:03
funktion in klasse ruft funktion in anderer klasse auf phpfortgeschrittener PHP Tipps 2005 6 17.04.2005 17:47
Klassenobjet in anderer Klasse benutzen inu PHP Tipps 2004 6 19.09.2004 10:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
call to a member function set debug() on a non-object

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum