#native_company# #native_desc#
#native_cta#

PHP Class Registry

By josh
on October 2, 2010

Version: 1.0

Type: Class

Category: Other

License: GNU General Public License

Description: Load and store classes for easy use and re-usability using advanced PHP object storing.

<?php

namespace Loader;

interface iRegistery
{
	public static function Init();
	
	public static function Load($classname);
}

final class Registry implements iRegistery
{
	private static $array=array();
	
	private static $instance;
	
	private static $library;
	
	public static $use;
	
	private function __construct()
	{
		
	}
	
	private function __clone()
	{
		
	}
	
	final public static function Init()
	{
		if(!self::$instance instanceof self)
		{
			self::$instance = new self();
		}
		
		return self::$instance;
	}
	
	public static function RegisterClass($classname , $lib=NULL)
	{
	    static $path;
		
		if($lib !== NULL)
		{
			self::$instance->library = $lib;
		}
		
		elseif($lib === NULL or $lib === 'defualt')
		{
			self::$instance->library = 'library';
		}
		
		if(class_exists($classname))
		{
			return self::$instance->array[$classname];
		}
		
		if(! class_exists($classname))
		{
			$path = $classname.'.class.php';
			
			require_once(self::$instance->library .'/' . $path);
			
			self::$instance->array[$classname]=$path;
		}
		
		return self::$instance->array[$classname];
	}
	

	final public static function Load($classname)
	{
	    if(isset(self::$instance->array[$classname]))
		{
			self::$instance->use = new $classname;
		}
		
		elseif(!isset(self::$instance->array[$classname]))
		{
			throw new SystemException('Fatal Error: Class' . $classname . 'doesn't Exists Class Must Be A Registered Class' );
		}
		
		return self::$instance->use;
	}
}

namespace Loader;

class SystemException extends Exception
{
    
    public function __construct($message, $code = 0, Exception $previous = null) {
       
    
       
        parent::__construct($message, $code, $previous);
    }

    
    public function __toString() {
        return __CLASS__ . ": [{$this->code}]: {$this->message}n";
    }
}


?>