我使用的是php框架Yii。
使用:yii::import('application.models.*');时,将导入“模型”文件夹中的所有模型,但子目录中有一些模型:
有很多级别(3、4或5),我想使用:yii::import('application.models.subdir1.*');导入所有这些模型
有什么解决办法吗?
提前谢谢。
发布于 2011-12-08 19:08:03
虽然我在指南中找不到它,但它应该可以与
yii::import('application.models.subdir1.**');http://code.google.com/p/yii/issues/detail?id=1568
编辑对不起,没有阅读整页,看起来它被恢复,但你仍然可以得到一个特定的修订,以获得代码,但它不推荐强。
发布于 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):
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),内容:
$ffs = scandir($dir);
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
if(is_dir($dir.'/'.$ff)) {
self::listFolderFiles($dir.'/'.$ff);
} else {
require $dir.'/'.$ff;
}
}
}https://stackoverflow.com/questions/8435411
复制相似问题