再帰的なディレクトリを作成し、フォルダーごとにファイルを作成する必要があります。私はこのようにしたい:
モジュール/ モジュール/デフォルト モジュール/デフォルト/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 modules/root/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 | | | | | | |-- | | | | | | | | `-- test_module.php | | | | | | |-- c | | | | | | | | `-- test_module.php | | | | | | `-- m | | | | | | `-- test_module.php | | | | `-- test_module | | | | |-- | | | | | | `-- test_module.php | | | | |-- c | | | | | | `-- test_module.php | | | | `-- m | | | | `-- test_module.php | | |-- ルート | | | | |-- インデックス | | | | | | `-- c | | | | | | `-- index.php | | | | |-- モジュール | | | | | | |-- | | | | | | | | `-- modules.php | | | | | | |-- c | | | | | | | | `-- modules.php | | | | | | `-- m | | | | | | `-- modules.php | | | | `-- ユーザー | | | | |-- | | | | | | `-- user.php | | | | |-- c | | | | | | `-- user.php | | | | `-- m | | | | `-- user.php | | `-- テンプレート | | `-- ルート | | |-- デフォルト | | | | `-- test_module | | | | ` -- test_module.tpl | | `-- test_module | | ` -- 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);
ありがとう。