I just learned that php can dynamically create attributes, just like javascript.
Php code
class Book{ public $name; public function __construct($name) { $var= func_get_arg(0); if(is_int($var)){ $this->name="12345".$name; } if(is_string($name)){ $this->name=$name; } } } class Main{ public static function createbook($class,$config=null){ return new $class($config); } public function config($config){ if(is_array($config)){ foreach($config as $key=>$val){ $this->$key=$val; } } } } $config=array( 'name'=>'My Web Application', ); $main=new Main(); $main->config($config); echo $main->name;
The result will output "My Web Application";
And the overloading of php is achieved through func_get_arg(0), func_num_args() .