Return to Snippet

Revision: 54910
at January 17, 2012 19:55 by Knarf


Initial Code
/*
 *	A class i started to implement, which ended up in a working concept
 *	However I'm not sure if it's a legal way of programming since I unnessesery
 *	changes the structure of php without some real value except nicer structure
 *
 *	For now it remain a concept
 *
 *	Usage:
 *
 *		concept::create()->create1();
 *		concept::create()->create2();
 *		concept::test()->test1();
 *		concept::test()->test2();
 *
 */

class concept
{
	private static $functions = array(
								'create' => '__callStatic',
									'create1' => 'create',
									'create2' => 'create',
								'test' => '__callStatic',
									'test1' => 'test',
									'test2' => 'test');
	private $create = false;
	
	private function create1()
	{
		\pre::dump('create1');
	}

	private function create2()
	{
		\pre::dump('create2');
	}
	
	private function test1()
	{
		\pre::dump('test1');
	}
	
	private function test2()
	{
		\pre::dump('test2');
	}
	
	public static function __callStatic($name, $argument)
	{
		if(isset(self::$functions[$name]) && self::$functions[$name] == '__callStatic')
		{
			$className = __class__;
			$new = new $className;
			$new->$name = true;
			
			return $new;
		}
		else
		{
			throw new \Exception('Static function in class <b>sql</b> does not exists; ' . $name);
		}
	}
	
	public function __call($name, $argument)
	{
		$function = isset(self::$functions[$name]) ? self::$functions[$name] : null;
		
		$call = array($this, $name);
		
		if(isset($this->$function) && $this->$function === true && is_callable($call))
		{
			call_user_func_array($call, $argument);
		}
		else
		{
			throw new \Exception('Function in class <b>sql</b> does not exists; ' . $name);
		}
	}
}

Initial URL

                                

Initial Description
A class i started to implement, which ended up in a working concept
However I'm not sure if it's a legal way of programming since I unnessesery
changes the structure of php without some real value except nicer structure

For now it remain a concept

Usage:

	concept::create()->create1();
	concept::create()->create2();
	concept::test()->test1();
	concept::test()->test2();

Initial Title
concept: php multidimentional methods

Initial Tags
class, php, object

Initial Language
PHP