Geht nicht - gibt's nicht

ZodiacXP

Erfahrenes Mitglied
Es ist wie beim Einkaufen. Man steht vorm Regal, sieht das etwas nicht da ist aber fragt trotzdem nach ;) :D

Zumindest ist das meine Natur und so hier auch:


Gibt es irgendetwas für Objekte, so dass bei jedem Aufruf irgendeiner Methode vorab eine andere private Methode aufgerufen wird und jeweils am Ende diese oder eine anderen nochmal?

Hab PHP.net zu Klassen durchgelesen und wurde nicht fündig.
 
Du könntest eine Klasse schreiben, die die gewünschte Klasse beerbt, und dort dann die zusätzlichen (statischen) Methoden aufruft, beispielsweise:
PHP:
class ChildClass extends ParentClass {
	public function &foobar()
	{
		parent::prepend();
		$retVal = &parent::foobar();
		parent::append();
		return $retVal;
	}
}
 
Joa. So in der Art sah meine Notlösung aus.
Suche aber mehr sowas wie __get, __set für Methoden, nur mit dem Unterschied das die Methoden vorhanden sind. Quasi analog zu deinem: __prepend, __append ;)
 
Folgendes kam mir so in den Sinn, wenn du keine separate Klasse produzieren willst...
PHP:
<?php
class Foo
{
	public function _methodA($params)
	{
		return "Foo";
	}

	private function pre()
	{
		return "Pre";
	}
	
	private function post()
	{
		return "Post";
	}

	public function __call($method, $params)
	{
		$tmp = '';
		
		if(!method_exists($this, "_{$method}"))
		{
			throw new Exception("Method {$method} does not exist.");
		}
		
		$this->pre();
		$tmp = $this->{$method}($params);
		$this->post();
		
		return $tmp;
	}
}
?>

Sorry, FF vorschnell abgeschickt, Code wird gleich vervollständigt.
 
Zuletzt bearbeitet:
Du könntest auch probieren, das ganze über das FilterChain-Pattern zu lösen. Das kannst du in der Form erweitern, dass du Pre- und Postfilter hast.
 
Zurück