首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入子目录中的模型

问导入子目录中的模型
EN

Stack Overflow用户
提问于 2011-12-08 17:58:50
回答 2查看 3.6K关注 0票数 3

我使用的是php框架Yii。

使用:yii::import('application.models.*');时,将导入“模型”文件夹中的所有模型,但子目录中有一些模型:

  • "/models/subdir1/model1.php"
  • "/models/subdir1/subsubdir2/model2.php"
  • "/models/subdir1/subsubdir2/model3.php"
  • "/models/subdir1/subsubdir2/subsubsubdir3/model4.php"

有很多级别(3、4或5),我想使用:yii::import('application.models.subdir1.*');导入所有这些模型

有什么解决办法吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-08 19:08:03

虽然我在指南中找不到它,但它应该可以与

代码语言:javascript
复制
yii::import('application.models.subdir1.**');

http://code.google.com/p/yii/issues/detail?id=1568

编辑对不起,没有阅读整页,看起来它被恢复,但你仍然可以得到一个特定的修订,以获得代码,但它不推荐强。

票数 4
EN

Stack Overflow用户

发布于 2015-11-12 23:05:03

到目前为止,我在Yii2中还找不到这个,如果您想要的话,可以执行以下操作

扩展Yii类的内容,它位于(/卖主/yiisoft/ Yii 2/yii.php),并在Yii类中添加公共静态负载($path)和静态函数listFolderFiles($dir)。:

在代码中使用这些示例!

Yii::load (‘Model.*’);-这个加载目录模型中的所有文件和子目录中的所有文件

Yii::load (‘model.* ',' components .* ');-这个加载模型中的所有文件,组件也加载在子目录中

Yii::load (‘Model.*’,'components.yourClassFileName');-这个加载模型中的所有文件(子目录中的文件)和组件中的一个文件

具有以下内容的公共静态函数加载($path= null):

代码语言:javascript
复制
    if($path != null){
        $root = self::getAlias('@webroot');
        if(is_array($path)){
            foreach($path as $p){
                $p = str_replace('/', '\\', $root).'/'.str_replace('.','/',$p);
                if(substr($p, -2) == '/*'){
                    $dir = substr($p, 0, -2);
                    self::listFolderFiles($dir);
                } else {
                    require substr($p, 0, -1).'.php';
                }
            }
        }

        if(is_string($path)){

            $path = str_replace('/', '\\', $root).'/'.str_replace('.','/',$path);

            if(substr($p, -2) == '/*'){
                $dir = substr($p, 0, -2);
                self::listFolderFiles($dir);
            } else {
                require $path.'.php';
            }
        }
    }

静态函数listFolderFiles($dir),内容:

代码语言:javascript
复制
    $ffs = scandir($dir);
    foreach($ffs as $ff){
        if($ff != '.' && $ff != '..'){
            if(is_dir($dir.'/'.$ff)) {
                self::listFolderFiles($dir.'/'.$ff);
            } else {
                require $dir.'/'.$ff;
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8435411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档