levis: PHP Framework

levisとは

levis(レヴィス)は、「MVC」「フロントコントローラー」「非オブジェクト指向」といった特徴を持つ、敷居の低さを重視した軽量なPHPフレームワークです。
ラテン語の「軽い」「早い」から名付けています。
PHP8、PHP7、PHP5、PHP4に対応しています。

以下はコントローラーとビューのサンプルプログラムです。

コントローラー:app/controllers/blog/list.php

<?php

$_view['articles'] = select_articles(array(
    'order_by' => 'id DESC',
));

ビュー:app/views/blog/list.php

<!DOCTYPE html>
<html>
    <head>
        <title>Blog</title>
    </head>
    <body>
        <ul>
            <?php foreach ($_view['articles'] as $article) : ?>
            <li><?php h($article['title']) ?></li>
            <?php endforeach ?>
        </ul>
    </body>
</html>

ダウンロード

フレームワーク本体

旧バージョン

開発中バージョン

開発中バージョンでの、主な変更点は以下のとおりです。

モデルの読み込み

以下のように model 関数を使って、モデルを呼び出せるようにしました。(従来の呼び出し方法も引き続き使えます。)

$categories = model('select_categories', [
    'order_by' => 'sort, id',
]);
モデルの自動読み込み

モデルを自動で読み込むかどうかを、config.php の以下で設定できるようにしました。

define('AUTOLOAD_MODEL', true);

これを false に設定した場合、コントローラなどで以下などのようにして、明示的にモデルを読み込む必要があります。

model('users.php');

デフォルトで true になっているので、これまでと同じ挙動になります。

サービスの自動読み込み

サービスを自動で読み込むかどうかを、config.php の以下で設定できるようにしました。

define('AUTOLOAD_SERVICE', false);

これを false に設定した場合、コントローラなどで以下などのようにして、明示的にモデルを読み込む必要があります。

import('app/services/user.php');

デフォルトで false になっているので、これまでとは異なる挙動になります。

ファイルとディレクトリのパーミッション

フレームワークが設定するパーミッションを、config.php の以下の部分で設定できるようにしました。

define('PERMISSION_DIRECTORY', 0707);
define('PERMISSION_FILE', 0606);
デバッグレベルの追加

デバッグレベルを config.php の以下で設定できますが、従来の 12 に加えて 3 を指定できるようにしました。

define('DEBUG_LEVEL', 1);

デバッグレベルの内容は以下のとおりです。

  • DEBUG_LEVEL1 に設定すると、エラー発生時に詳細が表示される。また、データベース管理ツールなども利用できるようになる。
  • DEBUG_LEVEL2 に設定すると、さらに画面下部に error() を呼び出したときのスタックトレースも表示されるようになり、実行したSQLも表示されるようになり、実行時間やメモリ使用量が表示されるようになる。
  • DEBUG_LEVEL3 に設定すると、さらに実行したSQLがその都度画面に表示されるようになる。
コマンドラインからの実行

いくつかの命令を、コマンドラインから実行できるようにしました。

$ php index.php
levis: PHP Framework
Version => 9.0.0-b9
Update => 2023-12-10
その他
  • データベースに自動接続するか否か、設定で選択できるようにしました。
  • データベース管理ツールを強化しました。
  • 任意のタイミングでトークンを破棄できるようにしました。
  • オートリンク関数を強化しました。
  • デバッグモードを強化しました。
  • 細かな不具合を修正しました。

サンプル

記事管理プログラム

フレームワークの使用例として作成した、簡易なアプリケーション

設置方法
  • フレームワークを配置します。
  • 作成例のファイルを配置します。
  • files/articles/ のパーミッションを 707 に設定します。
  • app/config.php (独自に追加した設定ファイル)でログイン情報を設定します。
  • index.php/setup にアクセスすると、データベースにテーブルが作成されます。
  • index.php にアクセスして、エラーが表示されなければ完了です。
  • 管理画面から記事を登録します。

名簿管理プログラム

実用的なプログラムの土台用に作成した、多機能なアプリケーション。

設置方法
  • フレームワークを配置します。
  • 作成例のファイルを配置します。
  • files/classes/files/members/ のパーミッションを 707 に設定します。
  • app/config.php (独自に追加した設定ファイル)で公開URLとログイン情報を設定します。
  • index.php/setup にアクセスすると、データベースにテーブルが作成されます。
  • index.php にアクセスして、エラーが表示されなければ完了です。
  • 管理画面からユーザと教室を登録し、次に名簿を登録します。

フォームメールプログラム

データベースを使わない例として作成した、簡易なフォームメール

設置方法
  • フレームワークを配置します。
  • 作成例のファイルを配置します。
  • app/config.php (独自に追加した設定ファイル)でメールの送信先を設定します。
  • index.php にアクセスして、エラーが表示されなければ完了です。

ユーティリティ

アプリケーションを作成するにあたって役立つツールなど。