旧バージョンからの変更点

目次

バージョン9での主な変更点

モデルの読み込み

以下のように 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 になっているので、これまでとは異なる挙動になります。

プラグインの名称変更

プラグインと呼んでいたものを「モジュール」に名称変更しました。格納場所も libs/plugins から libs/modules に変更しました。
なお、使い方に変更はありません。

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

フレームワークが設定するパーミッションを、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がその都度画面に表示されるようになる。
コマンドラインからの実行

いくつかの命令を、コマンドラインから実行できるようにしました。Ver 9.3.0 以降は DEBUG_LEVEL0 でもコマンドラインから実行できるので、本番環境でのマイグレーション実行などに使えます。

$ php index.php                 … 「info_levis」を指定した場合と同じ
$ php index.php info_levis      … フレームワークの情報が表示される
$ php index.php info_php        … phpinfo() の結果が表示される
$ php index.php db_migrate      … マイグレーションが実行される
$ php index.php db_scaffold     … Scaffoldが実行される
$ php index.php test_index      … テストが一覧される
$ php index.php test_exec xxxxx … テストが実行される(テスト名を指定する)

具体的には、以下のように実行されます。

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

バージョン8での主な変更点

フレームワークが管理する変数は、すべて先頭に「_」を付けるように変更しました。

forward関数を実装しました。(処理が途切れるのを防ぎ、トークンの流出も防ぐ。)

error関数をスタックトレースに対応しました。DEBUG_LEVELを2にすると、関数の呼び出し元が分かります。ログファイルへの記録にも対応しています。(トラブル時の調査を容易にするために。)

define('DEBUG_LEVEL', 2);
error('エラーメッセージ');
↓
Application error: error(): エラーメッセージ in /var/www/levis/app/controllers/blog/list.php on line 7

SQL実行エラー時、エラーメッセージだけでなくクエリもログに記録されるようにしました。(トラブル時の調査を容易にするために。)

define('LOGGING_PATH', 'log/');
define('LOGGING_MESSAGE', true);

バージョン7時点の説明書