<?php
namespace Shasoft\SamoyedCMG\Service;
use Shasoft\Support\File;
use Shasoft\SamoyedCMG\Service\IPath;
use Shasoft\SamoyedCMG\Service\IRoute;
// Пути
class Path implements IPath
{
// Базовая директория
protected string $basepath;
// Конструктор
public function __construct(protected IRoute $route)
{
// Базовая директория сайта
$this->basepath = File::normalize(__DIR__ . "/..", true);
}
// Директория сайта
public function site(?string $pathX = null): string
{
$ret = $this->basepath;
if (!is_null($pathX)) {
$ret .= '/' . $pathX;
}
return $ret;
}
// Директория пакетов
public function vendor(?string $pathX = null): string
{
$ret = $this->site('vendor');
$ret = '';
if (!is_null($pathX)) {
$ret .= '/' . $pathX;
}
return $ret;
}
// Директория пакета
public function package(string $packageName, ?string $pathX = null): string
{
$ret = $this->vendor($packageName);
if (!is_null($pathX)) {
$ret .= '/' . $pathX;
}
return $ret;
}
// Временная директория
public function temp(?string $pathX = null): string
{
$ret = $this->site('~.temp/demo');
if (!is_null($pathX)) {
$ret .= '/' . $pathX;
}
return $ret;
}
// Директория www сервера
public function wwwServer(?string $pathX = null): string
{
$ret = $this->site('www-server/@/'.$this->route->host());
if (!is_null($pathX)) {
$ret .= '/' . $pathX;
}
return $ret;
}
// Файловое хранилище
public function storage(?string $pathX = null): string
{
$ret = $this->site('storage/demo');
if (!is_null($pathX)) {
$ret .= '/' . $pathX;
}
return $ret;
}
}