WEBシステムの開発プラットフォーム LIB PHP Framework! 高速でセキュアなフルスクラッチ開発を今すぐ開始できます。

PHP基礎学習

Chapter6. フレームワーク関数

関数にはユーザー定義関数とビルトイン関数の他に、LIB PHP Frameworkに定義されているフレームワーク関数があります。
これらは一般的に、クラスライブラリと呼ばれる再利用可能な関数の集まりです。

1. Pageクラス

Chapter5. Classとオブジェクト指向で、継承について解説がありましたが、WebStudioでページを追加するとHTMLファイルとクラスファイルが作成されます。
このクラスファイルはページクラスと言って、Pageクラス(基底クラス)のデータや機能を受け継いだ派生クラスです。

ユーザー定義関数では、基底クラスで定義されているメソッドを実行することができます。
フレームワーク実践講習の「Chapter3. ロードイベントとセッション管理」では、下記ようにログインページのリダイレクト処理を記述しました。
if (!$_SESSION["member.profile"]) {
header("Location: /member/login.html");
exit();
}

これを、フレームワーク関数に置き換えると下記のように、よりシンプルな記述になります。
if (!$_SESSION["member.profile"]) $this->location("/member/login.html");

ユーザー定義関数は、作成されたページクラスのメソッドですので、$thisは作成されたページクラスをさしますが、
基底クラスの機能を受け継いでいるため、location()を呼び出すことができるわけです。

POSTイベントの処理では、下記のようにresponse()を呼び出すことで、jsonフォーマットの文字列を出力しています。
$res["url"] = "/member/index.html";
$this->response($res, true);

Pageクラスには他にも、アップロードファイルを保存するsaveFile()や、CSVなどのテキストデータをダウンロードするdownload()など、様々なメソッドが定義されています。
フレームワーク関数の定義内容と使い方については、リファレンス(https://libframework.org/reference/)を参照してください。


2. Mailクラス

ユーザ定義関数からメールを送信する際には、Mailクラスを使用します。
Mailクラス呼び出し前に、イベント編集画面でライブラリ「MailClass」を選択し保存してください。

$mail = new MailClass("mail", "UTF-8");
$mail->subj = "メール送信テスト";
$mail->body = "メール送信テストの内容";
$mail->from = "contact@barmansoft.co.jp";

if (!$mail->send($email)) $this->response($mail->message, false);
else $this->response("メールを送信しました。", true);

Mailクラスのプロパティに件名、本文、送信元を設定し、send()メソッドで送信します。
Mailクラスには上記以外にも、送信文のテンプレートを使用するLoadTemplate()や、テンプレートに文字埋め込むSetContent()など、
便利なメソッドが定義されています。

3. Filterクラス

スタティックに定義されたメソッドは、下記のようにして使用することができます。
呼び出し前に、イベント編集画面で必要なライブラリを選択し保存してください。

<form>
<dl>
<dt>性別</dt>
<dd><?= Lib\Tag::getRadio("gen", ["1" => "男性", "0" => "女性"], $page->values["gen"]) ?></dd>
</dl>
</form>

上記は、HTMLファイルでショートエコータグを使用した記述例で、配列を使用してラジオボタンを出力しています。
$pageは、このHTMLに対応する、ページクラスのインスタンスをさします。
$page->valuesは、Page基底クラスに定義されている配列で、ロードイベントで値を代入して使用します。


以下のように、Fixedクラスの定義済みの値を使用することで、都道府県のセレクトボックスを一行で出力することも出来ます。

<form>
<dl>
<dt>都道府県</dt>
<dd>
<select name="pref">
<?= Lib\Tag::getOption(Lib\Fixed::pref(), $page->values["pref"]) ?>
</select>
</dd>
</dl>
</form>

クラスライブラリは、他のライブラリとの名前の衝突を防ぐために、ネームスペースと言う概念でグループ化されています。
LIB PHP Frameworkのクラスライブラリは全て、ネームスペース「Lib」に含まれていますので、
HTMLファイルから呼び出す際には、クラス名の前に「Lib\」を付けて、ネームスペースを指定しなければなりません。