【发布时间】:2016-03-31 12:04:46
【问题描述】:
在 laravel 中,我正在尝试使用控制台创建文件。我将创建的文件是一个特征文件。我的情况是,如果我只写文件名,它会根据需要创建。但是当作为目录传递时,它不会被创建。
数组可以是动态的。目录的深度由用户决定。
仅举个例子:我采用 2 级目录。
我的数组是:
Array
(
[0] => 'RootTrait' // the root place of the trait folder
[1] => 'Level-1' // Directory inside the trait folder
[2] => 'Level-2' // Directory inside the Level-1 folder
[3] => 'file.php' // The file that will be created inside Level 2 folder
)
我应该怎么做才能做到这一点?
到目前为止我尝试过的代码是:
/**
* Process the creation of trait file.
*
* @param string $traitName
* @param \Illuminate\Filesystem\Filesystem $file
* @param string $nameSpace
* @return bool
*/
public function processTraitFile($traitName, Filesystem $file, $nameSpace = 'App')
{
$traitFileName = $file->get('app/stubs/Trait.stub');
$newTraitFile = str_replace(['TraitName', 'App'], [$traitName, $nameSpace], $traitFileName);
if (! file_exists("app/Http/Traits/{$traitName}")) {
$traitFolders = explode('/', $traitName);
$lastElement = array_pop($traitFolders);
foreach ($traitFolders as $key => $folder) {
$file->makeDirectory('app/Http/Traits/' . $folder, 0755, true);
}
}
return $file->put("app/Http/Traits/{$traitName}.php", $newTraitFile);
}
上述方法确实创建了文件夹,但没有嵌套。它正在创建这样的文件夹:
|-- Root Trait Folder
|-- Level-1
|-- Level-2
|-- file.php
我知道这一定很容易实现,但我失败了。
请帮帮我。谢谢。
【问题讨论】:
标签: php arrays laravel directory laravel-5.1