SVNからのミラー

This commit is contained in:
2025-11-07 22:48:07 +09:00
commit 438c7d8aef
68 changed files with 7619 additions and 0 deletions

34
doc/ja/about.md Normal file
View File

@@ -0,0 +1,34 @@
# Little Beast
Little Beast は、元々076.moeとtechnicalsuwako.moeの
為に作られたPHPフレームワークで、
これらのウェブサイトが以前使用していた静的サイトジェネレーターを置き換える為に
開発されました。
然し時間が経つに連れて、次々と機能を追加していき、
最終的には完全なPHPフレームワークに近い物になった為、
他の人々にも役立つかもしんと考えました。
然し、 Little Beast の開発者は、PHPフレームワークが知識とスキルを奪い、
複雑で重いという理由で、その使用に反対しています。
その為、 Little Beast は逆のアプローチを取り、
ユーザーが裏側でどの様に動作しているかを理解出来る様に、
出来るだけシンプルで軽量に保つ様にしています。
これは大量生産用に作られた物ではなく、
寧ろ一からフレームワークを作る方法の参考として提供されています。
実際には貴方が考えるよりもずっと簡単なのです。
この為に、以下の原則が確立されています:
* composerやその他のパッケージマネージャーは使用しません。
* 全てのクラスと関数は一から書かれています。
* 開発者がフレームワークのコードを探索する事を推奨している為、
全てのクラスは徹底的に文書化されています。
* 全てのクラスは要点を押さえた物でなければならず、
クラス間の移動は許可されていません。
* コンテナ化の必要性を排除し、必要なのはPHPとウェブサーバーだけです。
* 常に最新のPHPバージョンに対応し、警告や非推奨の通知は許容されません。
* 不要と判断されたコードは全て削除します。
全てのライブラリは特に他の何にも依存しない様に設計されているので、
使用する予定のないクラスを削除する事を恐れないで下さい。
後で必要と判断された場合でも、シンプルなドラッグアンドドロップで追加し
直す事が出来ます。

34
doc/ja/how-it-works.md Normal file
View File

@@ -0,0 +1,34 @@
# 仕組み
Little Beastには魔法の様に動作する5つの主要ファイルが含まれていますが、
どれも複雑ではありません。
Webサーバーの設定で、ルートディレクトリを `/public`
、インデックスファイルを `index.php` 設定します。
このindex.phpファイルがすることは、 `/public` ディレクトリの
下にある `route.php` ファイルをインクルードするだけです。
この設定により、クライアントは `/public` ディレクトリ内のファイルにのみ
アクセス出来る様になります。
これには画像、スタイルシート、JavaScript等が含まれます。
従って、設定、ルート、コントローラー等の機密データは、プログラマーが明示的に
アクセス可能にしない限りアクセス出来ません。
`/public/index.php` は編集しない様に設計されています。
`route.php` ファイルには、以下のファイルがインクルードされています:
* autoload.php
* config/config.php
* util.php
`autoload.php` ファイルは、バックエンド操作を全て含むsrcディレクトリ内で
オブジェクト指向プログラミングを可能にする為の物です。
このファイルは、何をしているか理解している場合を除き、
編集すべきではありません。
`config/config.php` ファイルには、シンプルな `define` 文として全ての
設定が含まれています。
設定可能な物は全てサンプルファイルに含まれています。
プログラマーは必要に応じて他の変数を追加する事が出来ますが、
事前定義された物を削除しない事をお勧めします。
そして、 `util.php` ファイルには、通常のPHPでは利用出来ない便利なカスタム
機能が全て含まれています。
プログラマーは必要に応じて追加機能を加える事が出来ます。

89
doc/ja/maron.md Normal file
View File

@@ -0,0 +1,89 @@
# Maron テンプレートの仕組み
Maron は Little Beast のカスタム HTML テンプレートエンジンです。
## 構文
構文は以下の通りです:
```
{@ include(common/header.maron) @} // これは別の Maron ファイルを含めます。
// シングルクォートやダブルクォートを
// 追加しないで下さい!
{@ kys($var) @} // これは変数を読み易い形式で出力し、
// その後テンプレートの残りの実行を終了します。
{@ if (true) @}
// 何かを実行
{@ elif (null) @}
// 別の事を実行
{@ else @}
// その他を実行
{@ endif @}
{@ foreach ($array as $value) @}
{{ $value }}<br />
{@ endforeach @}
{@ foreach ($array as $key => $value) @}
{{ $key }}: {{ $value }}<br />
{@ endforeach @}
{@ for ($i = 0; $i < 10; $i++) @}
{{ $i }}<br />
{@ endfor @}
{# This is a comment #}
{{ $var }} // これは特殊文字をエスケープして変数を出力します
{{{ $var }}} // これは変数をそのままの形で出力します
{$ $var = 200 $} // これは $var を 200 として定義します
{! echo "hello world"; !} // これは生の PHP コードをそのまま実行します
```
## コントローラー機能
更に、Little Beast では Maron テンプレート内で使用出来る
コントローラー用の機能も提供しています。
多言語ウェブサイトを使用する場合、
`new Template()` の後にその言語のルートディレクトリを指定出来ます。
但し、これには `/view` ディレクトリ内にそれらのルートディレクトリも
設定する必要があります。
例えば、構造が `/view/en/index.maron` の場合、
`new Template('/en')` と定義します。
然し構造が `/view/index.maron` の場合は、
単に `new Template()` とします。
### assign()
`->assign()` メソッドを使用すると、
Maron テンプレートで使用したい変数を割り当てます。
例:
```
$tmpl = new Template();
$sum = 1 + 1;
$tmpl->assign('total', $sum);
```
この場合、Maron テンプレートで `{{ $total }}`
使用して `2` を出力します。
### addCss()
デフォルトでは、 `style.css` は常に含まれています。
但し、全てのページ又は大部分のページで使用する
予定の物だけを `style.css` に入れ、
特定のページでのみ使用する予定の全ての物は、
`style-` の接頭辞を付けた独自のファイルに入れる事をお勧めします。
例えば、お問い合わせページがあり、
そのページでのみ使用する CSS がある場合は、
`/public/static` に新しい `style-contact.css` ファイルを作成し、
`render` メソッドの前に `$tmpl->addCss('contact');` を追加します。
### render()
`render()` メソッドは Maron テンプレートの内容を取得し
、ウェブブラウザが理解出来る有効な HTML と PHP に全てを変換します。
Maron ファイルが `/view/index.maron` の場合、
`$tmpl->render('index');` を実行しますが、
`/view/en/index.maron` の場合、
`$tmpl = new Template('/en');` に続いて `$tmpl->render('index');` か、
`$tmpl = new Template();` に続いて `$tmpl->render('en/index');`
いずれかを実行出来ます。

16
doc/ja/routes.md Normal file
View File

@@ -0,0 +1,16 @@
# ルートの仕組み
`route.php` では、 `use Site\Lib\Route; `というインクルードもある事に
気づくでしょう。
これが全てのルートを処理します。
ルートの基本的な流れは次の通りです:
1. 配列を定義します。
2. `Route::add(メソッドタイプ, クラス名 + メソッド, オプションのパラメータ);`
配列内に新しいルートを追加します。
3. `Route::init(ルート配列)` でルートを初期化します。
4. ルートが見つからない場合に備えて、
`Route::setFallback(コントローラークラス, そのクラス内のメソッド)`
フォールバックを設定します。
5. これで `Route::dispatch()` はクライアントが行くルートをチェックし、
正しいページに送信する事が出来ます。