快速实例化一个类 第二版

jerry thinkphp 2015年11月18日 收藏
快速实例化一个类,
/**
 * 快速实例化App/Lib/Class目录(默认)下的一个类,
 * <p>
 * _D('ViewModel.AbcUserViewModel');
 * 实例化App/Lib/ViewModel/AbcUserViewModel.class.php
 * </p>
 * @param string $name    文件夹.文件名//文件名也是类名 (.calss.php前半部分)
 * @param string $layer   目录层名称/ 默认为空
 * @param string $ext     文件后缀
 * @return object
 */
function _D($name = '', $layer = '', $ext = '.class.php') {
    if (empty($name))
        die('类名不能为空!(本消息来至:_D)');
    $layer = $layer ? $layer . '/' : '';
    if (strpos($name, '.')) {
        $path = explode('.', $name);
        $name = $path[1];
        $path = './App/Lib/' . $path[0] . '/' . $layer;                         //指定其它路径
    } else {
        $path = './App/Lib/Class/' . $layer;                                    //默认加载路径:/Class
    }
    import($name, $path, $ext);
    if (class_exists($name))
        $model = new $name();
    else
        die($name . '类不存在(来消息来至:_D)');
    return $model;
}