Nabend,
ich weiss grad nicht, ob ich den Wald vor lauter Bäumen nicht sehe oder ob ich mich wirklich in eine Sackgasse bugsiert habe.
Folgendes Szenario:
Ich habe eine abstrakte Klasse, die eine statische Funktion enthält. Von dieser Klasse leite ich eine weitere Klasse ab. Rufe ich innerhalb der abgeleiteten Klasse die statische Funktion auf, habe ich keine Möglichkeit, den Klassennamen der aufrufenden abgeleiteten Klasse herauszufinden.
Beispiel:
Gibt es da wirklich keine Möglichkeit? Ich meine, mir ist vollkommen klar, dass die Methode eher an Foo als an Bar gebunden ist, aber immerhin erfolgt der Aufruf über Bar, also müsste ich doch auch irgendwie an genau diese Information kommen können...
ich weiss grad nicht, ob ich den Wald vor lauter Bäumen nicht sehe oder ob ich mich wirklich in eine Sackgasse bugsiert habe.
Folgendes Szenario:
Ich habe eine abstrakte Klasse, die eine statische Funktion enthält. Von dieser Klasse leite ich eine weitere Klasse ab. Rufe ich innerhalb der abgeleiteten Klasse die statische Funktion auf, habe ich keine Möglichkeit, den Klassennamen der aufrufenden abgeleiteten Klasse herauszufinden.
Beispiel:
PHP:
<?php
function get_class_static()
{
$backtrace = debug_backtrace();
return isset($backtrace[1]['object'])
? get_class($backtrace[1]['object'])
: $backtrace[1]['class'];
}
abstract class Foo
{
abstract public function getBar();
public static function Identify()
{
printf('My name is %s<br/>', get_class());
printf('My name is %s<br/>', __CLASS__);
printf('My name is %s<br/>', get_class_static());
}
}
class Bar extends Foo
{
public function getBar()
{
return 'Bar';
}
}
Bar::Identify();
?>