HtmlBuilder classes
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* AUTOR: Clemens Schwaighofer
|
||||
* CREATED: 2023/6/27
|
||||
* DESCRIPTION:
|
||||
* Error logging for the HtmlBuilder systs
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace CoreLibs\Template\HtmlBuilder\General;
|
||||
|
||||
class Error
|
||||
{
|
||||
/** @var array<array{level:string,id:string,message:string,context:array<mixed>}> */
|
||||
private static array $messages = [];
|
||||
|
||||
/**
|
||||
* internal writer for messages
|
||||
*
|
||||
* @param string $level
|
||||
* @param string $id
|
||||
* @param string $message
|
||||
* @param array<mixed> $context
|
||||
* @return void
|
||||
*/
|
||||
private static function writeContent(
|
||||
string $level,
|
||||
string $id,
|
||||
string $message,
|
||||
array $context
|
||||
): void {
|
||||
self::$messages[] = [
|
||||
'level' => $level,
|
||||
'id' => $id,
|
||||
'message' => $message,
|
||||
'context' => $context,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* warning collector for all internal string errors
|
||||
* builds an warning with warning id, message text and array with optional content
|
||||
*
|
||||
* @param string $id
|
||||
* @param string $message
|
||||
* @param array<mixed> $context
|
||||
* @return void
|
||||
*/
|
||||
public static function setWarning(string $id, string $message, array $context = []): void
|
||||
{
|
||||
self::writeContent('Warning', $id, $message, $context);
|
||||
}
|
||||
|
||||
/**
|
||||
* error collector for all internal string errors
|
||||
* builds an error with error id, message text and array with optional content
|
||||
*
|
||||
* @param string $id
|
||||
* @param string $message
|
||||
* @param array<mixed> $context
|
||||
* @return void
|
||||
*/
|
||||
public static function setError(string $id, string $message, array $context = []): void
|
||||
{
|
||||
self::writeContent('Error', $id, $message, $context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return all set errors
|
||||
*
|
||||
* @return array<mixed>
|
||||
*/
|
||||
public static function getMessages(): array
|
||||
{
|
||||
return self::$messages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset all errors
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function resetMessages(): void
|
||||
{
|
||||
self::$messages = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* internal level in message array exists check
|
||||
*
|
||||
* @param string $level
|
||||
* @return bool
|
||||
*/
|
||||
private static function hasLevel(string $level): bool
|
||||
{
|
||||
return array_filter(
|
||||
self::$messages,
|
||||
function ($var) use ($level) {
|
||||
return $var['level'] == $level ? true : false;
|
||||
}
|
||||
) === [] ? false : true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if any error is set
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function hasError(): bool
|
||||
{
|
||||
return self::hasLevel('Error');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if any warning is set
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function hasWarning(): bool
|
||||
{
|
||||
return self::hasLevel('Warning');
|
||||
}
|
||||
}
|
||||
|
||||
// __END__
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* AUTOR: Clemens Schwaighofer
|
||||
* CREATED: 2023/6/28
|
||||
* DESCRIPTION:
|
||||
* Exception class for the HtmlBuilder blocks
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace CoreLibs\Template\HtmlBuilder\General;
|
||||
|
||||
/**
|
||||
* Exception class for HtmlBuilder
|
||||
*/
|
||||
class HtmlBuilderExcpetion extends \Exception
|
||||
{
|
||||
}
|
||||
|
||||
// __END__
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* AUTOR: Clemens Schwaighofer
|
||||
* CREATED: 2023/7/22
|
||||
* DESCRIPTION:
|
||||
* General settings for html elements
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace CoreLibs\Template\HtmlBuilder\General;
|
||||
|
||||
class Settings
|
||||
{
|
||||
/** @var array<string> list of html elements that can have the name tag */
|
||||
public const NAME_ELEMENTS = [
|
||||
'button',
|
||||
'fieldset',
|
||||
'form',
|
||||
'iframe',
|
||||
'input',
|
||||
'map',
|
||||
'meta',
|
||||
'object',
|
||||
'output',
|
||||
'param',
|
||||
'select',
|
||||
'textarea',
|
||||
];
|
||||
|
||||
/** @var array<string> options key entries to be skipped in build */
|
||||
public const SKIP_OPTIONS = [
|
||||
'id',
|
||||
'name',
|
||||
'class',
|
||||
];
|
||||
|
||||
/** @var array<string> html elements that don't need to be closed */
|
||||
public const NO_CLOSE = [
|
||||
'input',
|
||||
'br',
|
||||
'img',
|
||||
'hr',
|
||||
'area',
|
||||
'col',
|
||||
'keygen',
|
||||
'wbr',
|
||||
'track',
|
||||
'source',
|
||||
'param',
|
||||
'command',
|
||||
// only in header
|
||||
'base',
|
||||
'meta',
|
||||
'link',
|
||||
'embed',
|
||||
];
|
||||
|
||||
/** @var array<string> invalid tags, not allowed in body */
|
||||
public const NOT_IN_BODY_ALLOWED = [
|
||||
'base',
|
||||
'meta',
|
||||
'link',
|
||||
'embed', // not sure
|
||||
];
|
||||
}
|
||||
|
||||
// __END__
|
||||
Reference in New Issue
Block a user