php实例化一个类很简单,比如Person类的实例化:
$obj=newPerson();
有时候我们需要动态的实例化一个对象,比如有两个类:Person类和Animal类,我需要根据传来的参数来实例化对象,那么我们可以z这样写个函数:
functionget_obj($obj_name) { returnnew$obj_name(); }
如果我们要实例化一个使用了命名空间的类,比如:Person类和Animal类都在namespace Common\Object;下,那怎么做?同样可以写个函数,把命名空间拼接上去即可:
functionget_obj($obj_name) { $obj_name='Common\Object\\'.$obj_name; returnnew$obj_name(); }
当然了,我们也可以使用累的反射获取一个实例,最前面两种情况比较简单,不再说了,把最后一个使用了命名空间的用类的反射写一下
functionget_obj($obj_name) { $obj_name='Common\Object\\'.$obj_name; $class=new\ReflectionClass($obj_name); return$class->newInstance(); }