我必须创建递归目录并为每个文件夹创建一个文件。我想要这样:
模块/ 模块/默认 模块/默认/test_module 模块/默认/test_module/a 模块/默认/test_module/a/test_module.php 模块/默认/test_module/m 模块/默认/test_module/m/test_module.php 模块/默认/test_module/c 模块/默认/test_module/c/test_module.php 模块/根 模块/根/test_module 模块/根/test_module/a 模块/根/test_module/a/test_module.php 模块/根/test_module/m 模块/根/test_module/m/test_module.php 模块/根/test_module/c 模块/根/test_module/c/test_module.php 模板 模板/默认 模板/默认/test_module 模板/默认/test_module/test_module.tpl 模板/根 模板/根/test_module 模板/根/test_module/test_module.tpl
但是这段代码生成如下:
|-- 模块 | |-- 默认 | | |-- 根 | | | `-- 测试模块 | | | |-- 一个 | | | | `-- test_module.php | | | |-- c | | | | `-- test_module.php | | | `--米 | | | `-- test_module.php | | `-- 测试模块 | | |-- 一个 | | | `-- test_module.php | | |-- c | | | `-- test_module.php | | `--米 | | `-- test_module.php | |-- 根 | | |-- 索引 | | | `--c | | | `-- index.php | | |-- 模块 | | | |-- 一个 | | | | `--modules.php | | | |-- c | | | | `--modules.php | | | `--米 | | | `--modules.php | | `-- 用户 | | |-- 一个 | | | `-- 用户.php | | |-- c | | | `-- 用户.php | | `--米 | | `-- 用户.php | `-- 模板 | `-- 根 | |-- 默认 | | `-- 测试模块 | | `-- test_module.tpl | `-- 测试模块 | `-- test_module.tpl
代码是:
protected function createFiles($files, $parent_directory = null)
{
echo $parent_directory."\n</br>\n";
if (!$parent_directory) {
$parent_directory = www;
}
foreach ((array)$files as $key => $value) {
if (is_array($value)) {
if (!is_dir($parent_directory . $key)) {
mkdir($parent_directory . $key,0777);
chmod($parent_directory.$key,0777);
}
$parent_directory .= $key . '/';
$this->createFiles($value, $parent_directory);
} else {
$parent_directory_=$parent_directory.$key . '/';
if(!is_dir($parent_directory_)){
mkdir($parent_directory_,0777);
chmod($parent_directory_,0777);
}
$alias = explode('.',$value);
$alias = $alias[0];
$defaultAjaxContent = <<<AJAX
<?php
class {$alias} extends ajax{
/**
* Autocreated
**/
public function initAjax(){
}
}
?>
AJAX;
$file = fopen($parent_directory_.$value, 'w+');
$write = fwrite($file, $defaultAjaxContent);
if (!$write) {
throw new AjaxCatcher("{$parent_directory_}{$value} oluşturulurken beklenmedik bir hata oluştu. Lütfen tekrar deneyiniz. ");
}
}
}
//$file = fopen($files['default_ajax']);
return 1;
}
不使用递归 mkdir 的原因:
$dirs = array();
$dirs['modules']['default'][$alias]['a'] = $alias . ".php";
$dirs['modules']['default'][$alias]['m'] = $alias . '.php';
$dirs['modules']['default'][$alias]['c'] = $alias . '.php';
$dirs['modules']['root'][$alias]['a'] = $alias . '.php';
$dirs['modules']['root'][$alias]['m'] = $alias . '.php';
$dirs['modules']['root'][$alias]['c'] = $alias . '.php';
$dirs['templates']['root'][$alias] = $alias . '.tpl';
$dirs['templates']['default'][$alias] = $alias . '.tpl';
$this->createFiles($dirs);
谢谢。