Little Beastについて

Little Beastは、technicalsuwako.moe及び076.moeのみを駆動するPHPフレームワークです。
此のフレームワークは、此れらのウェブサイトに特化して設計されており、其の為プロプライエタリとして維持されます。
名前の由来は、最小限(データベースなし、シンプルなコード)でありながら非常に高性能(PHP 8.3以降以外のシステム要件がない)からです。

独自の特徴

Little Beastは、他のPHPフレームワークと一線を画す特徴を持っており、以下を含みます:

其の他、デフォルトの考え方は、必要ないライブラリ、スタイルシート、テンプレート、一般機能は排除する事です。
2つのウェブサイトは決して同じではない!

このブログのマークダウン一覧

構文 結果
----

\
改行
# ケロケロ

ケロケロ

## ケロケロ

ケロケロ

### ケロケロ

ケロケロ

#### ケロケロ

ケロケロ

##### ケロケロ
ケロケロ
###### ケロケロ
ケロケロ
```c
int main(int argc, char **argv) {
  return 0;
}
```
int main(int argc, char **argv) {
  return 0;
}
> ケロケロ\
> ケロケロ
ケロケロ
ケロケロ
| 名前    | キャラ  |
|---------|---------|
| 諏訪子  | ロリ    |
| チルノ  | ⑨      |
*利用するには、「style-table.css」を読み込む必要
名前 キャラ
諏訪子 ロリ
チルノ
* ケロケロ

- ケロケロ
  • ケロケロ
  • ケロケロ
1. ケロケロ
2. ケロケロ
  1. ケロケロ
  2. ケロケロ
$Theta = (2 * y^4) / x_2$
*利用するには、「style-algebra.css」を読み込む必要
Θ = (2 * y4)x2
**ケロケロ**
ケロケロ
*kerokero*
kerokero
_ケロケロ_
ケロケロ
~ケロケロ~
ケロケロ
:ケロケロ:
:(5)ケロケロ:
:(0.2)ケロケロ:
*利用するには、「style-blink.css」を読み込む必要
ケロケロ
ケロケロ
ケロケロ
^(72)ケロケロ^
^(6)ケロケロ^
ケロケロ
ケロケロ
%(ff00ff)ケロケロ%
%(34FB56)ケロケロ%
ケロケロ
ケロケロ
![](https://ass.technicalsuwako.moe/banner.png)

![ケロケロ](https://ass.technicalsuwako.moe/banner.png)

![ケロケロ#max-width: 200px;](https://ass.technicalsuwako.moe/banner.png)
ケロケロ ケロケロ
$[](https://ass.technicalsuwako.moe/砕月着信音.ogg)

$[audio/ogg](https://ass.technicalsuwako.moe/砕月着信音.ogg)
#[](https://ass.technicalsuwako.moe/フリーズ.mp4)

#[video/mp4](https://ass.technicalsuwako.moe/フリーズ.mp4)
[076スタジオ合同会社](https://076.moe/)
076スタジオ合同会社
<諏訪子>(すわこ)
諏訪子すわこ
`int i = 0;`
int i = 0;
例えば:^(96)%(ff00ff):(5)**~ケロケロ~**:%^ → ケロケロ

Markdownヘッダー

Little BeastのMarkdownベースのブログシステムの独自の部分は、Markdownヘッダーの使用です。
此れにより、メタデータの調整、サムネイルの設定、CSSファイルの追加などが可能です。
例:

title: 【プログラミング】C++の基本
uuid: e4aa4570-adbc-11f0-96d1-00155dac46f9
author: 諏訪子
date: 1995-05-23 13:22:43
thumbnail: blog-samune.jpg
thumborient: center
category: c++,gamedev,programming
css: blink,table,diffviewer
----
...
titleは記事のタイトルになります。
uuidはActivityPubライブラリ用で、他の目的はありません。
authorはブログメタタグの下の投稿著者になります。
dateはブログメタタグの下の投稿日時になります。
thumbnail/public/static/articleにある投稿のサムネイル画像(オプション)になります。
thumborientは投稿のサムネイル向きで、"top"、"center"、"bottom"から選択(オプション、デフォルト"center")。
categoryはブログメタタグの下のカテゴリ(複数時はカンマ区切り)になります。
css/public/staticディレクトリ下の追加CSSファイル(複数時はカンマ区切り、オプション)。

ヘッダーは4つのハイフンで終了し、其の下に投稿本文があります。

Maronテンプレート

Maronテンプレートエンジンは、HTMLから大きく逸脱せずにHTMLライクなテンプレートを優雅に管理する方法を提供します。
内部的には、本質的に見栄えの良いPHPです。
例として、従来の:

<?php include("view/common/footer.php"); ?>
の代わりに:
{@ include(common/footer) @}
そして、従来の:
<?php
  foreach ($menu as $m) {
    if ($m['show']) {
?>
      <a class="<?= $m['class'] ?><?php $curPage == $m['page'] ? ' active' : '' ?>" href="<?= $m['href'] ?>"><?= $m['text'] ?></a>
<?php
    }
  }
?>
の代わりに:
{@  foreach ($menu as $m) @}
  {@  if ($m['show']) @}
    <a class="menu-item" href="https://076.moe/repo">レポジトリ</a>
  {@  endif @}
{@  endforeach @}
但し、更に多くの構文があり、以下です:
構文 説明
{@ kys($val) @}
テンプレート描画を終了し、値をダンプ
{@ foreach ($val as $v) @}
  ...
{@ endforeach @}
foreachループとネストした内容の処理
{@ for ($i = 0; i < 10; ++$v) @}
  ...
{@ endfor @}
forループの処理
{@ if ($val as $v) @}
  ...
{@ elif ($val as $v) @}
  ...
{@ else @}
  ...
{@ endif @}
if-elif-else-endifの処理
{{{ $val }}}
変数の出力(エスケープ処理なし)
{{ $val }}
変数の出力(エスケープ処理あり)
{$ $val = 'ケロケロ' $}
変数の代入
{# コメント #}
コメント
{! echo explode($array); !}
PHPコードの実行
此れらは全てページのコントローラーに結びついています。
此のページのコントローラーは以下の様になります:
public function littlebeast(array $params): void {
  try {
    $tmpl = new Template('/');
    $pagetit = 'Little Beast';
    $description = 'Little Beastについて';

    $tmpl->assign('pagetit', $pagetit);
    $tmpl->assign('curPage', 'aboutlb');
    $tmpl->assign('custCss', true);
    $tmpl->assign('sns', $this->getSns());
    $tmpl->assign('support', $this->getSupport());
    $tmpl->assign('menu', $this->getMenu());
    $tmpl->assign('description', $description);

    $tmpl->addCss('algebra');
    $tmpl->addCss('blink');
    $tmpl->addCss('table');
    $tmpl->render('littlebeast');
  } catch (\Exception $e) {
    throw new \Exception($e->getMessage());
  }
}
Templateクラスは/viewディレクトリ下に固定ルートを持ち、全てのテンプレートは.maron拡張子でなければなりません。
此の場合、$this->render('littlebeast');/view/littlebeast.maronの内容をレンダリングします。