Here's my question for today. I'm building (for fun) a simple templating engine. The basic idea is that I have a tag like this {blog:content} and I break it in a method and a action. The problem is when I want to call a static variable dynamically, I get the following error .
Parse error: parse error, expecting `','' or `';''
And the code:
$class = 'Blog';
$action = 'content';
echo $class::$template[$action];
$template is a public static variable(array) inside my class, and is the one I want to retreive.
You may want to save a reference to the static array first.
Sorry for all the editing ...
EDIT
Seems to work just fine in PHP 5.3. Ahh, "Dynamic access to static methods is now possible" was added in PHP 5.3
You cannot do that without using
eval()
.$class::$template
(even if it was valid syntax in PHP), would reference the static variable called$template
, you would actually need variable variables ($class::$$template
), which is again not valid PHP syntax (you cannot access anything from a dynamic class name in PHP, IIRC).I would recommend checking the variables for valid names before usng
eval()
, though (the regex is copied from the PHP manual):I'am not sure what i'm doing but give it a try:
As with everything in PHP, there are a lot of ways to skin the same cat. I believe the most efficient way to accomplish what you want is:
See: http://www.php.net/manual/en/function.call-user-func.php
What about
get_class_vars
?Will output 'bubble'