ThinkPHP は非常に人気のある PHP 開発フレームワークで、さまざまな強力な機能を提供し、迅速な開発をサポートします。中でもCRUD(CRUD)はWeb開発において欠かせない基本操作です。アプリケーションの動作をより適切に追跡するには、動作ログを記録することが非常に重要です。この記事では、ThinkPHP 5.1 で追加、削除、変更、クエリ操作のログを実装する方法を説明します。
1. ThinkPHP 5.1 のログ機能の紹介
ThinkPHP 5.1 には、ログ機能が組み込まれています。これをアプリケーションで使用して、エラー メッセージ、デバッグ情報、ユーザー アクションなどのさまざまなイベントを記録できます。このフレームワークは、DEBUG、INFO、NOTICE、ERROR の 4 つのレベルのロギングを提供します。
組み込みのログ レベルに加えて、独自のログ レベルを定義することもできます。たとえば、ログ レベル「CRUD」を作成して、追加、削除、変更、クエリ操作を記録できます。
デフォルトでは、ログはアプリケーションのルート ディレクトリの下のログ ディレクトリに記録されます。ログの保存場所を変更する必要がある場合は、構成ファイルを変更することで変更できます。構成ファイルは通常、アプリケーションの config ディレクトリにあります。
2. 追加、削除、変更、クエリ操作のログ記録の実装
ThinkPHP 5.1 で追加、削除、変更、クエリ操作のログ記録を実装する方法を見てみましょう。これを実現するには、次の手順に従います。
まず、カスタム構成ファイルをアプリケーションの config ディレクトリ。このファイルに common_extra.php という名前を付けます。
$config = [
'crud_log' => true, // 记录增删改查日志 'crud_ignore_fields' => ['create_time', 'update_time'] // 忽略日志记录的字段
];
設定では、2 つのオプションを設定します。 1 つ目は crud_log で、ログのオンとオフを切り替えるために使用されます。 2 番目は crud_ignore_fields で、ログに記録されないフィールドを指定するために使用されます。
次に、追加、削除、変更、およびクエリ操作を記録するために、いくつかのフィールドをデータ テーブルに追加する必要があります。各データ テーブルに次のフィールドを追加できます:
次に、ログを実装するために、モデルの追加、削除、および変更メソッドを書き直す必要があります。これを実現するには、グローバル クエリ スコープを使用します。 create、update、delete メソッドをオーバーライドします。
各メソッドでは、対応する操作の種類とデータを記録します。次に、log クラスを使用してログをログ ファイルに書き込みます。
ここにサンプル コードをいくつか示します:
namespace app\common\model;
use think\Model;
class User extends Model
{
protected $table = 'users'; // 添加全局查询范围 protected static function init() { // 添加操作记录 static::beforeInsert(function ($item) { if (config('common_extra.crud_log')) { $item->user_id = session('user_id'); $item->action = 'add'; $item->table_name = $this->table; $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE); $item->created_at = date('Y-m-d H:i:s', time()); Db::table('log')->insert($item->toArray()); } }); // 修改操作记录 static::beforeUpdate(function ($item) { if (config('common_extra.crud_log')) { $item->user_id = session('user_id'); $item->action = 'update'; $item->table_name = $this->table; $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE); $item->created_at = date('Y-m-d H:i:s', time()); Db::table('log')->insert($item->toArray()); } }); // 删除操作记录 static::beforeDelete(function ($item) { if (config('common_extra.crud_log')) { $item->user_id = session('user_id'); $item->action = 'delete'; $item->table_name = $this->table; $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE); $item->created_at = date('Y-m-d H:i:s', time()); Db::table('log')->insert($item->toArray()); } }); }
}
最後に、ロギングを行います。前の例では、「log」という名前のデータ テーブルにログを書き込みました。ただし、必要に応じて、ログをファイルに書き込んだり、ログ サーバーに送信したり、他の場所に送信したりすることができます。
上記の手順により、追加、削除、変更、クエリ操作のログ機能を ThinkPHP 5.1 に実装することができました。
結論
この記事では、ThinkPHP 5.1 での追加、削除、変更、クエリ操作のログを記録する方法を紹介しました。従来の操作方法を比較した結果、ログを使用するとアプリケーションの操作をより適切に追跡でき、分析のために他のツールとより適切に組み合わせることができることがわかりました。読者の皆様がこの記事の経験を活用して、アプリケーションの保守性とスケーラビリティを向上できることを願っています。
以上がThinkPHP 5.1 で追加、削除、変更、およびクエリ操作のログを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。