php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.04.2006, 00:53  
Benutzer
 
Registriert seit: 16.06.2004
Beiträge: 81
PHP-Kenntnisse:
Fortgeschritten
RcRaCk2k
RcRaCk2k eine Nachricht über ICQ schicken RcRaCk2k eine Nachricht über MSN schicken RcRaCk2k eine Nachricht über Yahoo! schicken
Standard [erledig] PHP5 und Namen einer statischen Klasse heraus..

Wunderschoenen guten Abend Artgenossen

Ich habe eine Klasse, welche komplett statisch ist. Also
PHP-Code:
class foo {

  public static function 
bar() {
    echo 
get_class(self);
  }

}

foo::bar(); 
Wie kann ich jetzt den Namen der Klasse herausfinden? Die Funktion get_class funktioniert nicht und gibt nur FALSE zurueck.

Gruesse
Michael Rack
RcRaCk2k ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.04.2006, 01:35  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

__CLASS__

Allerdings beinhaltet diese immer den Namen der Klasse, in der die Konstante steht und nicht den der aufgerufenen abgeleiteten Klasse. Dafür gibt es auch keine Lösung, soweit ich weiß. Es ist also z.B. nicht möglich, ein abstraktes Singleton zu schreiben und die konkreten Singletons einfach via "... extends Singleton" zu solchen zu machen.

Basti
Basti ist offline   Mit Zitat antworten
Alt 02.04.2006, 01:40  
Benutzer
 
Registriert seit: 16.06.2004
Beiträge: 81
PHP-Kenntnisse:
Fortgeschritten
RcRaCk2k
RcRaCk2k eine Nachricht über ICQ schicken RcRaCk2k eine Nachricht über MSN schicken RcRaCk2k eine Nachricht über Yahoo! schicken
Standard

Hi Basti.

Ich habe mir bereits einige Fragen aus dem Forum hier angesehen, und
habe nun gesehen dass ich meine Frage etwas falsch gestellt habe. Zur
gleichen Zeit bin ich drauf gekommen, dass mein Problem wahrscheinlich
garnicht gelöst werden kann, ausser wenn ich aus meiner Klasse ein
normale instanzierbare Klasse erstelle:

PHP-Code:
class A
{
   protected static function 
foo() {
      echo 
__CLASS__;
   }
}

class 
extends A
{
    public static function 
foo() {
       
parent::foo();
    }
}

B::foo(); 
Dies ergibt aber leider "A" als Ausgabe - ich benötige "B"...
Aber egal, ich mache es nun mit einer Instanzierbaren Klasse, da ich
sonst der statischen Factory-Klasse immer meinen eigenen
Klassennamen mitgeben muss, und das keine schöne Lösung ist - meiner
Meinung nach

Vielen Dank jedoch.

Grüße
Michael.
RcRaCk2k ist offline   Mit Zitat antworten
Alt 02.04.2006, 01:42  
Benutzer
 
Registriert seit: 16.06.2004
Beiträge: 81
PHP-Kenntnisse:
Fortgeschritten
RcRaCk2k
RcRaCk2k eine Nachricht über ICQ schicken RcRaCk2k eine Nachricht über MSN schicken RcRaCk2k eine Nachricht über Yahoo! schicken
Standard

Hehe *gg* du hast bereits deinen Text geändert und meine eigentlich gewünschte Frage - welche zwar aus meiner Frage nicht heraus ging beantwortet

Vielen Dank *gg*
RcRaCk2k ist offline   Mit Zitat antworten
Alt 04.04.2006, 21:14  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.234
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Über Umwege könnte mans rauskriegen: http://www.php.net/debug_backtrace
Aber das ist recht langsam und umbequem. Und komplizierts wirds bei mehr als einer Ableitung

Ich wüsste auch nicht, was das bringen soll, dieses Problem zu lösen, daher stimmt mich die Frage etwas nachdenklich...
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 04.04.2006, 21:27  
Benutzer
 
Registriert seit: 16.06.2004
Beiträge: 81
PHP-Kenntnisse:
Fortgeschritten
RcRaCk2k
RcRaCk2k eine Nachricht über ICQ schicken RcRaCk2k eine Nachricht über MSN schicken RcRaCk2k eine Nachricht über Yahoo! schicken
Standard

Habe das Problem bereits anders gelöst.

Es gibt immer verschiedene Ansichten einer Programmierungsweise, und die Erste ist bekanntlich nicht immer gleich die Richtige Auch ich bin darauf gekommen, dass das Vorhaben etwas irrsinnig ist.

Natürlich ist es die beste Methode, wenn die eigene Klasse z.B. wie im Beispiel B, der Klasse A mitteilt, dass der Aufruf aus Klasse B getätigt wurde.

Das Problem ergibt sich aus einer statischen Klasse, welche zur Laufzeit Cache-Files erstellt, indem man einer Funktion ein Array übergibt. Die Funktion entscheidet anhand des Klassennames, welchen Namen die Cache-File trägt. In einer statisch abgeleiteten Klasse, ergibt sich das Problem, dass der Name immer jener der Basisklasse ist.

Grüße.
Michael.
RcRaCk2k 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
[Erledigt] Instanz einer Klasse mit unbekanntem Namen erstellen PHP Tipps 2005 4 06.02.2009 14:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
erledig, schöne klassen namen, php klasse instanzieren konstante

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:12 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.