lithium\console\command\Create::_save()
Save a template with the current params. Writes file to Create::$path
.
Parameters
-
array
$params
Returns
string|booleanA result string on success of writing the file. If any errors occur along the way such as missing information boolean false is returned.
Source
protected function _save(array $params = []) {
$defaults = ['namespace' => null, 'class' => null];
$params += $defaults;
if (empty($params['class']) || empty($this->_library['path'])) {
return false;
}
$contents = $this->_template();
$result = Text::insert($contents, $params);
$namespace = str_replace($this->_library['prefix'], '\\', $params['namespace']);
$path = str_replace('\\', '/', "{$namespace}\\{$params['class']}");
$path = $this->_library['path'] . stristr($path, '/');
$file = str_replace('//', '/', "{$path}.php");
$directory = dirname($file);
$relative = str_replace($this->_library['path'] . '/', "", $file);
if ((!is_dir($directory)) && !mkdir($directory, 0755, true)) {
return false;
}
if (file_exists($file)) {
$prompt = "{$relative} already exists. Overwrite?";
$choices = ['y', 'n'];
if ($this->in($prompt, compact('choices')) !== 'y') {
return "{$params['class']} skipped.";
}
}
if (file_put_contents($file, "<?php\n\n{$result}\n\n?>")) {
return "{$params['class']} created in {$relative}.";
}
return false;
}