会員登録時に必要なモデルを作成する。PHPでSNSを作成してみる#11

今回は、会員登録情報を格納するモデルを作成について記します。

前回の記事では、サービスクラスの内部ファイルの作成と、会員登録用のサービスクラスを作成しました。今回は、サービスクラスからapiへリクエスト、受け取った値を格納するモデルの作成をします。

処理の流れ

モデルの作成

今回は、model部分の処理を作成します。
以前の章で記しました、コントローラやサービスと違って親クラスを持ちません。そのため内部に処理を記述する必要もないです。

モデルの作成(詳細)

この画像の赤く囲ってある部分が本記事で記す内容です。

必要なファイルの作成

今回作成するファイルのみ記しています。
※下記のみだと正常に実行されないのでシリーズの過去記事をご覧ください

sns_training

      └── app

              └── models    
                        ├── inputModels
                        │            └── A00001InputModel.php
                        └── outputModels
                                     └── A00001OutputModel.php

今回は、モデルクラスの作成です。モデルのファイル名は、「AXXXXX」のようにしています。というのも、役割ごとのモデル名で作ると名前の規則性が失われます。
そして、モデルは基本的、一つのAPIに対してinput、outputの二つのモデルが紐づきます。
そのため、API名と統一した方が分かりやすいのです。

例えば、「A00001」は、一致するユーザID数を返すというAPIとします。
このリクエストには、ユーザIDが必要です。そのため、A00001InputModelには、ユーザIDを。A00001OutputModelには、一致するユーザID数が入るようにします。

では、ファイルに記述していきます。

A00001InputModel.php

今回は、A00001というAPIに紐づくモデルの作成です。
このAPIでは、一致するユーザID数を返すというAPIとします。

仮に、A00001のsqlは

select count(usr.user_id) as COUNT from users usr where usr.user_id = :USER_ID and usr.available = 1;

とします。

必要となるのがuser_id(ユーザID)。
会員登録画面を作成してみる。PHPでSNSを作成してみる#09を見てみるとビューから送られる値は、userId(ユーザID)、userName(ユーザ名)、userPassWord(ユーザパスワード)ということが分かります。

<?php
namespace App\Models\InputModels;

class A00001InputModel {
    public $USER_ID;
}
?>
PHPは、PHP 7.4.0以降を除いて型の指定ができません。そのため型を使用しない場合、モデルの必要性がイマイチありません。ですが、クラス間での受け渡しで極力形を揃えるために使用しています。

A00001OutputModel.php

inputModelとフォーマットは同じように記します。

<?php
namespace App\Models\OutputModels;

 class A00001OutputModel {
   public $COUNT;
 }
?>

戻り値はユーザIDが一致する数なので、COUNTとします。

今回は、以上となります。

おわりに

今回は、Modelクラスを作成しました。
Modelは、基本的に形は変わりません。

次回は、前回作成したサービスクラスとコントローラクラスの紐付けと、
実際にモデルにデータを格納するところを記します。

 

コメント

スポンサーリンク
スポンサーリンク
タイトルとURLをコピーしました