<?php
/**
* ロガークラス
*
*/
class Logger
{
/** @var Logger $singleton */
private static Logger $singleton;
/** @var string[] $logs ログ */
private array $logs = [];
/** @var string 改行 */
private string $eol = PHP_EOL;
/**
* ログを追加
*
* @param string|Stringable $message
* @return void
*/
public static function add(string|Stringable $message): void
{
if ($message instanceof Stringable) {
$message = (string) $message;
}
self::getInstance()->logs[] = $message;
}
/**
* ログ出力
*
* @return void
*/
public static function output(): void
{
$singleton = self::getInstance();
foreach ($singleton->logs as $log) {
echo $log . $singleton->eol;
}
}
/**
* 改行設定
*
* @param string $eol
* @return void
*/
public static function setEol(string $eol): void
{
self::getInstance()->eol = $eol;
}
/**
* constructor
*/
private function __construct()
{
}
/**
* __clone
*
* @return void
*/
private function __clone(): void
{
}
/**
* インスタンス取得
*
* @return self
*/
private static function getInstance(): self
{
if (isset(self::$singleton)) {
return self::$singleton;
}
return self::$singleton = new self();
}
}