2022-12-05 23:01:12 +08:00

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;
}
}