初心者のみなさん、関数
使ってますか?
普通に使ってるってツッコミありがとうございます笑
公式から
公式の例から
<?php
function foo(引数1, 引数2, /* ..., */ 引数_n)
{
echo '関数の例' . '<br>';
return $retval;
}
?>
上の例は単に関数ってこんな形だよ
ってだけの例ですね。
あんまり参考になりません。
ちょっと使える形にしてみます。
改造後
<?php
function add(num1, num2)
{
$sum = num1 + num2;
return $sum;
}
//call
$num1 = 5;
$num2 = 10;
echo add(num1, num2);
//-> 15
?>
使えない??
たしかに使えない
ですね笑
そもそも1行で書ける足し算を関数にしただけなので。
では関数ってどんなときに使うと効果的
なんでしょうか?
関数を使う場面
例えばこんな処理
DBに接続してユーザーがいたら、
ユーザー情報を取ってきて、
選択した値によって表示するカラムを変更して出力。
関数を使った例
<?php
$input_column_int = 3;
$dbh = connectDb();
$user = findUser($dbh, $id));
if ($user) {
outputColumn($user, $input_column_int);
} else {
echo 'ユーザーが見つかりません';
}
connectDb();
//->PDOを使ってDBに接続する関数
findUser();
//SQLをPDOで走らせて$idに対応するユーザー情報を取ってくる関数
outputColumn()
//-> $userのカラム番号=$input_column_intの値を表示する関数
詳しいコードは書きませんが、関数を使っているとスッキリ
見えますよね?
全部のコードをベタ書き
すると読むのがウンザリする
のはなぜでしょうか?
処理が2つ以上存在してくるとややこしくなる
なのでこういうことです!
関数で処理を隠す
関数名でなんの処理かわかるようにする
一気に可読性があがる
関数を作るときに意識したいこと
関数は大きく分けて2種類
に分かれます。
1.状態を変化させる
2.数式などで値やオブジェクトを返す
-
1
は例えば出力
です。 やっている処理ブロック
に名前をつけてあげるイメージ
です。 ここでは1行の処理ですが20行ぐらいあって、それに適切な関数名
をつけてあげたらどうでしょう?関数名がコメントの役割を果たしてくれる
ってわけです!
1.状態を変化させる
function outputColumn($user, $id) {
echo $user[$id];
}
-
2
は返り値のあるパターン
です 引数に入力された値を元に計算やDB処理を行い、値やオブジェクト
を返します。 関数はブラックボックスにすることができます。
2.数式などで値やオブジェクトを返す
function findUser($dbh, $id) {
$sql = 'select * from users where ?';
$stmt = $dbh->prepare($sql);
$stmt->execute([$id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
return $user;
}
関数を1処理にすることのメリット
-
テスト
が容易になる -
使い回し
やすくなる -
関数名が明確
になり、コード内の可読性
があがる
まとめ
・関数化するときに一番気をつけることは、読みやすくすること
です。
・そして関数化した部分は十分なテスト
をし、ブラックボックス化して後々チェックする部分
を極力減らしましょう
。
・最初から関数化
しようとせずに、処理が増えてきた後にやる
ほうが無難です。
・最初からやってやろう
はあまりうまくいきません笑
お願い
LGTMお願いします!
ストックのついでにお願いします!
モチベーションがあがります!