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?
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?
... 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 ;)
Ich habs jetzt mit xyz-141els Idee gemacht:
function a($string, $init = false)
{
static $object;
if ($init) {
$object = $string;
return true;
} else {
return $object->methode($string);
}
}
a($object, 1);
xyz-48ke für eure Hilfe.