
先月の記事で、DjangoのセッションデータをPHPから読み書きするのを試していました。
この際にPHPで実装していた django.core.signing.Signer と互換性のある Signer クラスを調整してライブラリ化、再利用できるようにしました。
Packagistへ登録したパッケージ
nullpobug/django-signing という名前のパッケージで、Packagistに公開しています。 Composerでインストールして利用できます。
GitHub - tokibito/php-django-signing: Django compatible signing library for PHP
PHPStanを導入するPullRequestをtadsanからもらったりして、いい感じに仕上がりました。
Packagistへの登録をしたのは初めてですが、GitHubと連携してしまえば特に難しいことはないと感じました。便利ですね。
サンプルコード
前回の記事のコードをコピーして、作成したパッケージのほうで動くように調整してみました。
https://github.com/tokibito/sample_nullpobug/tree/main/django/django-shared-session2
セッションデータのデコード・エンコードのところを差し替えています。
<?php // 中略 // セッションデータをデコード $session = Api::loads($session_data, APP_SECRET_KEY, APP_SESSION_SALT); // セッションデータをエンコード $session_data = Api::dumps($session, APP_SECRET_KEY, APP_SESSION_SALT, true, true);
このデモのコードがもっと短くなるように練習がてら色々作ってみるのも良いかも知れない。