1 $_name= $_name;24 $this->$_gender=$_gender;25 }26 27 public function __set($p, $v){28 if(substr($p, 0,1) == "_"){ //判断重载一个 可能不存在 或者是私有的属性29 $p= '_'.$p;30 }31 if (true==property_exists($this, $p)) { //判断 当前类new出的对象 是否有这个形参属性 $p32 $method_name='set'.$p;33 34 $this->$method_name($v); //$method_name 是可变的方法 因此是用 $this->$method_name35 }else{36 trigger_error("您所访问的属性或者方法是私有的或者是不存在的");37 }38 }39 40 public function __get(){41 42 }43 44 public function __isset($pram){45 //当用户调用了 isset() 方法的时候 传递进来的形参 做一系列的自己的业务逻辑处理46 }47 48 public function __unset(){49 50 }51 } 52 53 class Factory{54 55 //声明静态直接由类调用该产生对象的方法56 public static function getInstance($class_name){57 static $instance_list = array();58 59 //首先判断这个类是否已经存在类数组列表中60 if (!isset($instance_list[$class_name])) {61 $instance_list[$class_name] = new $class_name ; //可变类 ,new出一个可变类 62 }63 64 return $instance_list[$class_name];65 } 66 }67 68 69 $test = Factory::getInstance('Test');70 // var_dump($test);71 $test->_name = 'xujin';