Willkommen in der Webstatt Zum Webstatt Blog und Stories
sili sili am 09.07.06 21: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?

netcup.de Warum gibt es hier Werbung?
Wasili am 09.07.06 21: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?

Michael Michael am 09.07.06 21: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 :(

// 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 ;)

// edit 3

geht nun doch - und zwar definitiv ;)

sili sili am 09.07.06 23:09

Ich habs jetzt mit Michaels 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.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt