[PHP] Klassennamen herausfinden

tleilax

be forever curious
ID: 27936
L
20 April 2006
1.845
184
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:
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();
?>
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...
 
Irgendwie kann ich den sinn bei einer statischen methode nicht wirklich nachvollziehen. Zum Aufrufen muss man ja schließlich den Klassenamen kennen... Bei einem Objekt kann ich den sinn verstehen, da gehts auch ganz simple mit "get_class($this);".