通过注册树模式可以更加简单快捷的获取对象,在某个地方实例化了一个对象,可以将这个对象“保存”起来,用的时候只需要提供 保存对象的时候 的那个标识即可。
举个例子:你有一个行李箱,因为某个原因,你暂时要去另外一个地方,行李暂时带着没什么用,也很麻烦,这时你可以考虑将行李存 到 行李寄存处,工作人员给一个凭证,只需要出示这个凭证就可以取行李或者告诉工作人员把行李扔了
其实上面的例子已经很明白了。下面是实现的代码:
<?php class A{ } class Register{ public static $obj=array(); public static function set($key,$value){ if($value){ self::$obj[$key]=$value; } else { echo "请指定注册的对象实例"; exit; } } public static function get($key){ if(isset(self::$obj[$key])){ return self::$obj[$key]; } else { echo "该对象未注册"; exit; } } public static function delete($key){ if(isset(self::$obj[$key])){ unset(self::$obj[$key]); } else { echo "该对象未注册"; exit; } } } $a=new A; Register::set("a_obj",$a); $test=Register::get("a_obj"); var_dump($test); //object(A)#1 (0) { } $test=Register::get("b_obj"); //该对象未注 ?>