Mailinglisten-Archive |
Andreas Heigl wrote:
> Sebastian Mendel schrieb:
>
>> Hi,
>>
>> wenn ich eine Methode statisch aus einem Objekt heraus aufrufe ist $this
>> gesetzt ... wie soll ich denn jetzt überprüfen ob die Methode statisch
>> oder im Objekt aufgerufen wurde?
>>
>>
>> class Klasse
>> {
>> function methode()
>> {
>> Klasse::stMethode();
>> }
>>
>> function stMethode()
>> {
>> if ( isset( $this ) )
>> {
>> echo 'Objekt' . "\n";
>> }
>> else
>> {
>> echo 'Klasse' . "\n";
>> }
>> }
>> }
>>
>> $objekt = new Klasse();
>>
>> $objekt->Methode();
>> Klasse::stMethode();
>
> Deswegen ist eine Methode ENTWEDER statisch ODER nichtstatisch.
> In einer STATISCHEN Methode hast du keine Zugriff auf Instanzvariablen ---
> wenn keine Instanz da ist, macht das irgendwie sinn ;-) ---
> Geht nicht, funzt nicht, macht keinen Sinn...
aha ... aber was hat das mit meinem Problem zu tun? unter PHP 4 ist eben
eine Methode nicht "statisch oder nicht-statisch"
> Einzige Möglichkeit, das dennoch rauszufinden: debug_backtrace() ;-) da
> gibts ja den Eintrag des Typs, der entweder '::' ist (statischer Aufruf,
> kein $this) oder eben '->' (nicht statischer aufruf, $this existiert!).
debug_backtrace() für sowas zu verwenden ist wohl etwas ... naja ...
und $this existiert eben doch im ersteren Fall!
> Aber mir ist bisher noch keine Variante untergekommen, die ein solches
> Konstrukt benötigte ;-)
z. B.: eine Methode die selbst ein Objekt erzeugt wenn sie statisch
aufgerufen wurde und dann den Aufruf an diese Objekt weitergibt, sparrt
eine Zeile Code im Controller
> Und unabhängig vom Prinzipiellen: dein Beispiel wird in beiden fällen
> 'Klasse' ausgeben, weil du mit dem Aufruf 'Klasse::stMethode()' nicht die
> aktuelle Instanz nutzt, sondern eben wieder die statische Methode aufrufst,
> die dann keine Instanz ist und daher wieder 'Klasse' ausgibt.
aha, und verrätst du mir in welcher PHP-Version das so ist?
--
Sebastian Mendel
www.sebastianmendel.de
www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive