Ik wil in mijn code graag zoiets doen:
<?php
class Foo
{
public static function bar () {
echo 'test';
}
}

$var = 'Foo';
$var::bar();
?>
Alleen nou krijg ik de volgende error:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /test.php on line 10

Ik weet wat het betekent (dat die :: niet na een variabele mogen), maar ik vroeg me af of iemand een manier wist om dit toch zo te doen. Het is dus de bedoeling om een statische methode aan te roepen op een object van een variabel type.

Alvast bedankt!
Wat je nu probeert te doen is volgens mij een static methode een string op te roepen, dat lijkt me niet de bedoeling, werkt dit niet gewoon:
Foo::bar();

En als je persé de methode op wil roepen uit de class waarvan je de naam in de variabele hebt gezet werkt misschien iets als:
{$var}::bar(); // niet getest
Bedankt voor je snelle reactie:

Ik had er misschien even bij moeten zetten dat ik dat met die accolades al had geprobeerd. Je krijgt dan deze error:
Parse error: syntax error, unexpected '}' in /test.php on line 10

Als ik dat eerste zou kunnen doen, zou ik geen problemen hebben, maar dat gaat dus niet. Het is namelijk de bedoeling om de 'bar'-methode aan te roepen, maar het idee is juist dat ik nog niet weet van welke klasse. Een realistischer voorbeeld van een aanroep zou dus zoiets zijn:
<?php
function call ($var) {
$var::bar();
}
call('Foo');
?>

Ik had gedacht dat dit in een geïnterpreteerde taal wel mogelijk zou zijn...
<?php
    call_user_func(array($var, 'var'));
?>
<?php
class Foo {
function bar()
{
echo "Hello!\n";
}
}

$classname = "Foo";

call_user_func(array($classname, 'bar'));
?>
Dat werkt. :)

Dank jullie wel!

Reageren