I am trying to load PHP objects stored in a database, where the class name is stored in a column: $object = new $resultSet->getString(1); This fails for the same reason that the following fails: <?php class Foo { public function className() { return 'Foo'; } } $foo = new Foo; $bar = new $foo->className(); Fatal error: Class name must be a valid object or a string in test.php on line 12 I guess this error is due to the confusion of parsing "()" as the argument list for the "className" function, or the "Foo" constructor... I work around this error by using a temp variable: $tmp = $foo->className(); $bar = new $tmp; - however the above reads like hacky code : ( When calling dynamically named functions, I generally use call_user_func() to avoid awkwardness with $object->$tmp($arg1, ...) In other words, I prefer: call_user_func(array($object, 'get'.$someName), $arg1, ...); - to: $tmp = 'get'.$someName; $object->$tmp($arg1, ...); However there does not appear to be an analog of call_user_func() for constructing new instances of dynamically named classes? If I recall correctly, there was also a way to work around calling dynamically named functions (e.g. $object->$tmp($arg1, ...);) using curly braces: $object->{'get'.$someName}($arg1, ...); - however I cannot recall the exact syntax. Can anyone confirm that there is a curly brace syntax for calling dynamically named functions? Could it be applied to instantiating dynamically named classes? Can anyone recommend a cleaner alternative to: $tmp = $foo->className(); $bar = new $tmp; Thanks and best wishes, Jack -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php