Php oop

lockdoc

Well-Known Member
Also ich habe eine Parent Klasse A, welche die Kindklasse B erbt.

Nun wollte ich eigentlich eine public var in der Parentklasse haben, welche von jeder der funktionen der Kindklasse B ueberschrieben wird.

In etwa so:
PHP:
class A
{
    public $test;

}
class B extends A
{
    public function foo()
    {
        $this->test = __FUNCTION__;
    }
}

Allerdings will ich dass das automatisch funktioniert, ohne das in jede function von B reinzuschreiben.

Die Frage ist hier ob das ueberhaupt geht?
 
Hi lockdoc, bin mir nicht ganz sicher ob ich dich richtig verstanden hab. Probier mal folgendes. Natürlich funktioniert das nicht, wenn du in jeder Methode einen anderen Wert wie in deinem Beispiel setzen willst.

PHP:
class A
{
    public $test;
}

class B extends A
{
    public $test = 'foobar';

    public function foo()
    {
    }
}
 
Ich habs jetzt doch noch hinbekommen. Leider etwas unschoen. Evtl hat noch Jemand eine bessere Loesung.

Hierbei definiere ich die eigentlichen Methoden alle mit einem Unterstrich vorran, rufe sie aber ohne den Unterstrich auf.

PHP:
<?php
class A
{
	public $caller;

	public function __destruct()
	{
		echo $this->caller;
	}
}
class B extends A
{
	public function __call($methodName, $args)
	{
		$newName = '_'.$methodName;

		if ( method_exists($this, $newName) )
		{
			$this->caller = $methodName;
			call_user_func_array(array($this, $newName), $args);
		}
	}

	public function _foo($var)
	{

	}
	public function _bar($var)
	{
	}
}

$obj = new B;
$obj->bar('t');
 
Zurück
Oben