我正在使用php框架Yii。
当我使用:yii::import('application.models.*');
时,模型文件夹中的所有模型都将被导入,但我在子目录中有一些模型:
有很多级别(3,4或5),我想使用以下方法导入所有这些模型:yii::import('application.models.subdir1.*');
有没有解决办法?
并提前致谢。
答案 0 :(得分:4)
虽然我无法在指南中找到它,但应该可以使用
yii::import('application.models.subdir1.**');
http://code.google.com/p/yii/issues/detail?id=1568
[编辑]很抱歉,没有看完整页,看起来它已被还原,但你仍然可以得到一个特定的版本来获取代码,但qiang不推荐。
答案 1 :(得分:0)
到目前为止我在Yii2找不到 如果你想要,你可以按照
扩展它所在的类Yii的内容(/vendor/yiisoft/yii2/Yii.php)并添加类Yii函数 公共静态加载($ path)和 静态函数listFolderFiles($ dir)。 :
在代码中使用这些示例!
的Yii ::负载('模型*'。); - 这会加载目录模型中的所有文件和子目录中的所有文件
Yii :: load([' models。*',' components。*']); - 这会加载模型和组件中的所有文件以及子目录中的文件
的Yii ::负载(['模型*'' components.yourClassFileName']); - 这会加载模型中的所有文件(以及子目录中的文件)和组件中的一个文件
公共静态函数load($ 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;
}
}
}