PHP
サイト内のページ(ソース設定)にて、PHPを実行することができます。
実行結果はThymeleafを使用し、ページのbody(ソース設定)およびブロック(ソース設定)に渡すことができます。
外部サービスのAPIやSPIRAL ver.2のAPIと連携することで、多機能なアプリケーションを構築することができます。
仕様
SPIRAL ver.2で提供するPHPの構成
各機能の役割
機能 | 説明 |
---|---|
PHP |
実行するプログラムを記述します。 実行結果をechoやprint_r()でPHP設定画面に出力することはできません。Thymeleaf経由でページに表示します。 Thymeleafに値をセットする方法などはこちらをご覧ください。 |
Thymeleaf |
PHPの実行結果を受け取り、ページおよび認証エリアに渡します。 |
ページおよび認証エリアページのbody(ソース設定)およびブロック(ソース設定) |
Thymeleafを使用して、PHPの実行結果を画面に表示します。 エラー発生時はエラー文言を画面に表示します。 ThymeleafでPHP実行結果を呼び出す方法はこちらをご覧ください。 |
PHP環境変数 |
APIキーやAPIエンドポイントURLなど、サイト内で何度も使用する値を登録しておき、独自クラス「$SPIRAL」を使用して、ページのPHPやPHPモジュールで呼び出すことができます。 設定方法については、こちらをご覧ください。 |
PHPモジュール |
APIへのリクエストなど、サイト内で何度も使用するPHPプログラムを登録しておき、ページのPHPやPHPモジュールで呼び出すことができます。 PHPモジュールの仕様については、こちらをご覧ください。 |
PHPエラーログ |
ページのPHPでエラーが発生した場合、エラーログを確認することができます。 PHPエラーログの仕様については、こちらをご覧ください。 |
設定順
1.ページのPHPタブにプログラムを設定します。
必要に応じて、PHP環境変数やPHPモジュールを呼び出します。
2.Thymeleafに実行結果をセットします。
3.ページや認証エリアのbodyタブやブロックのソースにて、Thymeleafで値を呼び出します。
提供するPHPのバージョン
使用可能なPHPバージョンについてはPHPバージョンについてをご参照ください。
PHP実行タイミング
PHPを記載しているページへアクセスした時、PHPを実行します。
以下の順で処理されます。
1.PHP
2.Thymeleaf
3.body(head、CSS、JavaScript)
※フォームで使用する ${values['f0XXX']} などのコードはThymeleaf機能上で処理されます。
※CSS/JavaScriptの記述場所による実行順についてはこちらをご参照ください。
設定できるPHPの数とサイズ
1つのページにつき、1つのPHPソース(最大300,000bytes)を設定できます。
利用方法
PHPの基本的な設定方法
1.ページ
ページでPHPを使用する場合、サイト管理>サイト>ページ一覧>ページにて、「PHP」タブを表示し、プログラムを記述します。
2.認証エリア
認証エリアページでPHPを使用する場合、サイト管理>サイト>認証エリア>認証エリアページにて、「PHP」タブを表示し、プログラムを記述します。
PHPの実行バージョン
指定可能なPHPの実行バージョンを設定できます。
サイト機能については、サイト単位ごとに設定するPHPバージョンと、各ページごとに設定するPHPバージョンの指定があります。
詳細はPHPバージョンについてをご確認ください。
独自クラス・関数
PHP実行結果をThymeleafに渡したり、認証エリアの機能である認証レコード値をPHPで取得するなど、PHPを使いやすくするため、独自クラス「$SPIRAL」を用意しています。
以下の関数を使用できます。
setTHValue($key, $value)
PHP実行結果をThymeleafにセットします。
$valueはオブジェクトも扱えます。
シンプルなデータ
PHP
<?php $SPIRAL->setTHValue("seminar","LINE活用セミナー"); ?>
body
<!-- LINE活用セミナー --> <p th:text="${cp.result.value['seminar']}"></p>
オブジェクトを扱う場合
PHP
<?php class Student{ public $name; public $age; } $student = new Student(); $student->name = "鈴木一郎"; $student->age = "26"; $SPIRAL->setTHValue("student", $student); ?>
body
<!-- 鈴木一郎--> <p th:text="${cp.result.value['student'].name}"></p> <!-- 26--> <p th:text="${cp.result.value['student'].age}"></p>
setTHValues($array)
PHP実行結果をThymeleafに複数個まとめてセットします。
$arrayは連想配列である必要があります。
PHP
$arrayparam = array("name"=>"スパイラル太郎","email"=>"spiral@spiral-platform.co.jp"); $SPIRAL->setTHValues($arrayparam);
body
<!-- 鈴木一郎--> <p th:text="${cp.result.value['name']}"></p> <!-- spiral@spiral-platform.co.jp--> <p th:text="${cp.result.value['email']}"></p>
getEnvValue($key)
PHP環境変数を呼び出します。
PHP
//APIURL、APIキーを取得 $apiurl = $SPIRAL->getEnvValue("apiurl"); $apikey = $SPIRAL->getEnvValue("apikey");
getAuthRecordByFieldId($fieldId)
認証エリアのPHPにて、認証レコード値を取得します。
$fieldIdには、値を取得するフィールドのID(1、2など)を指定します。
PHP
//認証レコード値を取得 $SPIRAL->getAuthRecordByFieldId("1");
フィールドのIDを確認する方法
アプリ管理>DB>フィールドから、IDを確認します。
getParam($paramName)
別のページからGETやPOSTで送信されてきた値やクエリパラメータの値を一つ取得します。
同じパラメータ名で送信されてきた場合、1つのみ取得します。
GETとPOSTで同じパラメータ名で送信されてきた場合、POSTで送信されたきた値を優先して取得します。
PHP
//パラメータを取得 $SPIRAL->getParam("seminar_id");
getParams($paramName)
別のページから送信されてきた配列やクエリパラメータの配列を取得します。
PHP
//パラメータを配列で取得 $SPIRAL->getParams("seminar_id");
getQueryParam($paramName)
ページURLのクエリパラメータの値を一つ取得します。
PHP
//パラメータを取得 $SPIRAL->getQueryParam("seminar_id");
getQueryParams($paramName)
ページURLのクエリパラメータの配列を取得します。
PHP
//パラメータを取得 $SPIRAL->getQueryParams("seminar_ids");
getPostParam($paramName)
別のページからPOSTで送信されてきた値を一つ取得します。
PHP
//パラメータを取得 $SPIRAL->getPostParam("seminar_id");
getPostParams($paramName)
別のページからPOSTで送信されてきた配列を取得します。
PHP
//パラメータを取得 $SPIRAL->getPostParams("seminar_ids");
フォームブロックのステップ取得
フォームのどのステップが表示されているかを取得します。
getRecordValue()
登録フォームまたは更新フォームの完了ステップにて、登録または更新した値を取得します。
PHP
$registForm = $SPIRAL->getRegistrationForm("登録フォーム識別名"); //完了ステップでのみ実行する if ($registForm->isCompletedStep()) { $record = $SPIRAL->getRecordValue(); $recordId = $record['item']['_id']; $SPIRAL->setTHValue("newRecordId", $recordId); }
APIエラーを取得する方法
SPIRAL ver.2のAPIで発生したエラーをページに出力する方法は以下の通りです。
PHP
if(array_key_exists('status', $data)){//APIのエラーが発生した場合、APIのレスポンスにstatusが200以外で返ってくるので、statusをチェック if($data["status"] != 200){ $SPIRAL->setTHValue("APIERROR", $data["message"]);//APIのエラーをThymeleafにセット } }else{ $docbody = $data["item"]["docbody"];//データを取得 $SPIRAL->setTHValue("docbody", $docbody);//データをThymeleafにセット }
body
<div th:if="${cp.result.isSuccess}"> <p th:text="${cp.result.value['APIERROR']}"></p><!-- APIエラー文言を出力 --> <p th:text="${cp.result.value['docbody']}"></p> </div> <div th:if="${!cp.result.isSuccess}"> <p th:text="${cp.result.errorMessage}">error message</p> </div>
ThymeleafでPHP実行結果を呼び出す方法
基本フォーマット
ThymeleafでPHP実行結果を出力するには ${cp.result} を使用します。
<div th:if="${!cp.result.isSuccess}"> <p th:text="${cp.result.errorMessage}">error message</p> </div>
${cp.result}には、以下の情報が含まれます。
成功の場合
"result": { "executionTime": "xxxms", "isSuccess": true, "value": { "amount":"100", "totalOrder": "60000" } }
エラーの場合
"result": { "executionTime": "xxxms", "isSuccess": false, "errorMessage": "xxxxx" }
JavaScriptに値を渡す方法
SPIRAL ver.2では、Thymeleafのth:inlineを使用して、JavaScriptに値を渡すことができません。
JavaScriptにPHPの実行結果を渡す場合、ページ内のhiddenなどに出力した値をJavaScriptで取得して渡します。
boby
<input type="hidden" id="seminar" th:value="${cp.result.value['seminar']}"> <script> let seminar= document.querySelector("#seminar"); alert(seminar.value); </script>
制約事項
実行時間を制限
PHP実行開始から30秒以内に処理が完了しない場合、以下のエラーを返します。
server time out
PHPの一部機能を制限
一部の関数、PHPクラス、およびパラメータについて、使用を制限しています。
制限している関数等については以下のリンク先をご参照ください。
PHP7.4で使用できない関数・PHPクラス・パラメータ一覧
PHP8.1で使用できない関数・PHPクラス・パラメータ一覧
制限している関数等を使用された場合、エラーを返します。
例)file_get_contents()
PHP7.4
file_get_contents() has been disabled for security reasons on line xx
PHP8.1
Call to undefined function file_get_contents() on line xx
ページのプレビューでの実行制限
ページのプレビュー画面では、PHPは動作しません。
サンプルプログラム
PHPを使用したサンプルプログラムをご案内します。