当前位置:  首页  >  PHP教程  >  PHP 进阶  >  设计模式

PHP动态实例化一个含有命名空间的类对象的几种方法

如果我们要实例化一个使用了命名空间的类,比如:Person类和Animal类都在namespaceCommon\Object;下,那怎么做?同样可以写个函数,把命名空间拼接上去即可

php实例化一个类很简单,比如Person类的实例化:

$obj = new Person();


有时候我们需要动态的实例化一个对象,比如有两个类:Person类和Animal类,我需要根据传来的参数来实例化对象,那么我们可以z这样写个函数:

function get_obj($obj_name)
{
    return new $obj_name();
}


如果我们要实例化一个使用了命名空间的类,比如:Person类和Animal类都在namespace Common\Object;下,那怎么做?同样可以写个函数,把命名空间拼接上去即可:

function get_obj($obj_name)
{
    $obj_name = 'Common\Object\\'.$obj_name;
    return new $obj_name();
}


当然了,我们也可以使用累的反射获取一个实例,最前面两种情况比较简单,不再说了,把最后一个使用了命名空间的用类的反射写一下

function get_obj($obj_name)
{
    $obj_name = 'Common\Object\\'.$obj_name;
    $class = new \ReflectionClass($obj_name);
    return $class->newInstance();
}

吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有