113 lines
1.8 KiB
PHP
113 lines
1.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Modules\Develop\Support\Generate\Create;
|
|
|
|
use Illuminate\Contracts\Filesystem\FileNotFoundException;
|
|
use Illuminate\Support\Facades\File;
|
|
|
|
/**
|
|
* creator
|
|
*/
|
|
abstract class Creator
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected string $ext = '.php';
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected string $module;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected string $file;
|
|
|
|
/**
|
|
* create
|
|
*
|
|
* @return bool|string
|
|
* @throws FileNotFoundException
|
|
*/
|
|
public function create(): bool|string
|
|
{
|
|
return $this->put();
|
|
}
|
|
|
|
/**
|
|
* the file which content put in
|
|
*
|
|
* @return string
|
|
*/
|
|
abstract public function getFile(): string;
|
|
|
|
/**
|
|
* get content
|
|
* @return string|bool
|
|
*/
|
|
abstract public function getContent(): string|bool;
|
|
|
|
/**
|
|
* @return string|bool
|
|
* @throws FileNotFoundException
|
|
*/
|
|
protected function put(): string|bool
|
|
{
|
|
if (! $this->getContent()) {
|
|
return false;
|
|
}
|
|
|
|
$this->file = $this->getFile();
|
|
|
|
File::put($this->file, $this->getContent());
|
|
|
|
if (File::exists($this->file)) {
|
|
return $this->file;
|
|
}
|
|
|
|
throw new FileNotFoundException("create [$this->file] failed");
|
|
}
|
|
|
|
|
|
/**
|
|
* set ext
|
|
*
|
|
* @param string $ext
|
|
* @return $this
|
|
*/
|
|
protected function setExt(string $ext): static
|
|
{
|
|
$this->ext = $ext;
|
|
|
|
return $this;
|
|
}
|
|
|
|
|
|
/**
|
|
* set module
|
|
*
|
|
* @param string $module
|
|
* @return $this
|
|
*/
|
|
public function setModule(string $module): static
|
|
{
|
|
$this->module = $module;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* get file
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getGenerateFile(): string
|
|
{
|
|
return $this->file;
|
|
}
|
|
}
|