面倒な処理は関数にまとめて使い回していく

はじめに

初心者がPHPの勉強をしたのでアウトプットしていく。
とにかく最速でアプリを作るための勉強なので、作りたいものに特化したアウトプットになる。
今回は関数の作成について。

複数個所で使用される処理は関数に

関数とは「ひとつもしくは複数の処理に名前を付けて、呼び出されたときに処理を実行するもの」と考えるとわかりやすい。
同じような処理を繰り返し行う場合に、何度も同じことを書かずに済むというメリットがある。

関数を作ってみる

基本的な構文はこんな具合。

function 関数名() {
 処理;
}

まずは関数を作成する。

<?php
// 関数を作成する
function sayHello() {
 echo 'HELLO';
}
?>

次に、実行の処理を書く。

<?php
// 関数を作成する
function sayHello() {
 echo 'HELLO';
}
// 実行の処理を書く
sayHello();
sayHello();
sayHello();
sayHello();
?>

結果、

HELLOHELLOHELLOHELLO

実行処理分の「HELLO」が表示された。

外部ファイルに関数をまとめる

前回書いたXSSの処理を外部ファイルに関数化し複数箇所で呼び出せるようにする。
まずはエスケープ処理を関数にまとめる。

<!-- test_defense.php -->
<?php
/**
 * XSS対策:エスケープ処理
 * @param string $str 対象の文字列
 * @return string 処置された文字列
 */
function h($str) {
 return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}
?>

次に処理が必要な箇所で上記ファイルを呼び出し、処理を実行する。

<?php
// 関数を記入したファイルを読み込む
require_once 'test_defense.php';

$test = $_POST['test'];
// 関数を実行
echo h($test);
?>

これでエスケープ処理は完了される。
元の記述と比較すると、

// 関数未使用
echo htmlspecialchars($test, ENT_QUOTES, 'UTF-8');
// 関数使用
echo h($test);

相当簡略化されていることがわかる。
エスケープ処理は多くの箇所で必要になるので、これによりソースの可読性も向上する。