Webstatt.org - Community seit 2006 - 2012 (2024?)

Aufruf einer Methode verkürzen

Avatar user-300
09.07.2006 19:22

Hallo. Ich würde gerne den Aufruf einer Methode verkürzen. Hier ein Beispiel:

function a($var)
{
$objekt->methode($var);
}

echo a($var);


Aber da $objekt nicht global ist, geht das natürlich nicht. Der Funktionsaufruf sollte genau so aussehen, also keinen zweiten Parameter etc. Wie löse ich das em besten? $objekt einfach global zu setzen finde ich doof. Andere Ideen?

user-343
09.07.2006 19:33

function a($var,&$object)
{
$objekt->methode($var);
}

echo a(&$object,$var);


EDIT: ARgh... Keinen Zweiten Parameter. Sorry, nicht gesehen *drop*

Eventuell eine Referenz in $GLOBALS anlegen?

$GLOBALS['myobjects']['objectname'] = &$object?

Avatar user-253
09.07.2006 19:38

... was im Grunde nichts anderes wäre, als $object global zu definieren.

Wenn die aufzurufende Methode keine anderen Methoden/Attribute der Instanz benutzt, könntest du sie mit :: aufrufen.

Ansonsten fallen mir nur sehr zweckentfremdete und hässliche Umwege ein traurig

// edit

VIelleicht klappt es mit static:

function a($string,$init=false) {
static $object;
if($init) {
$object = $string;
return true;
} else {
return $object->methode($string);
}
}


// edit 2

vielleicht auch nicht zwinkern

// edit 3

geht nun doch - und zwar definitiv zwinkern

Avatar user-300
09.07.2006 21:09

Ich habs jetzt mit user-251els Idee gemacht:

function a($string, $init = false)
{
static $object;
if ($init) {
$object = $string;
return true;
} else {
return $object->methode($string);
}
}

a($object, 1);


Danke für eure Hilfe.