Method return value

my problem comes when i convert a string into a variable and try to return that variable that is defined in get_defined_vars(). from my using() method.



class registry
{
	private $loaded = array();
	
	private static $instance;
	
	private function __construct(){}
	
	public static function instance()
	{
		if(!(self::$instance instanceof self))
		{
			self::$instance = new self;
		}
		
		return(self::$instance);
	}
	
	protected function set($classname , $instance)
	{
		if(!isset(self::$instance->loaded[$classname]))
		{
			return self::$instance->loaded[$classname] = $instance;
		}
		
		return(FALSE);
	}
	
	protected function get($classname)
	{
		if(isset(self::$instance->loaded[$classname]))
		{
			return self::$instance->loaded[$classname];
		}
		
		return(FALSE);
	}
	
	public static function using($classname , array $params = null)
	{
	    static $init_vars;
		if(!class_exists($classname , FALSE) && !is_object($classname))
		{
			if(self::$instance->get($classname) === FALSE)
			{
				if(!is_null($params) && is_array($params))
				{
				    require($classname.'.php');
					parse_str($classname);
					$init_var = get_defined_vars();
					if(isset($init_var[$classname]))
					{
					    echo 'REG YEP';
						$init_vars[$classname] = new $classname($params);
					}
					
				}
				
				else
				{
					require($classname.'.php');
					parse_str($classname);
					$init_var = get_defined_vars();
					if(isset($init_var[$classname]))
					{
					    echo 'REG YEP';
						$init_vars[$classname] = new $classname();
						return $init_vars[$classname];
					}
				}
			}
		}
	}
}

registry::instance();
registry::using('test');
if(isset($init_vars['test']) or isset($test))
{
	echo 'YAY';
}

else
{
	echo 'NOPE';
}

I think you’re using static $init_vars; when you actually want global $init_vars;
After the change, your script outputs “YAY” rather than “NOPE”.