【PHP8】関数とクラスの書き方を比較してみた

  •  
 
MAXIMUM に投稿

タグ

今回はPHP小規模開発で用いられる関数のみでの書き方と、
大規模開発でよく使われるクラス化する書き方を比較していこうかと思います。

1.関数版のソース例

先ずは口座に貯金していくシーンを仮定して関数で書いてみます。
上から順番に追っていけば良いので、比較的読みやすいかと思います。
function deposit(int $balance, int $amount): int
{
   return $balance + $amount;
}
$balance = 0;
$balance = deposit($balance, 1000);
$balance = deposit($balance, 500);
echo "残高: {$balance}円\n";

2.関数版のメリット・デメリット

この書き方のメリットとしては単純に読みやすいです。
あとは行数が減るので試しに実装する際には重宝するかもです。

デメリットとしてはデータ状態がそのままむき出しになっているので、どこでも書き換えられるため規模感が大きくなると処理を追いにくくなります。

3.クラス版のソース例

同じように1500円を表示するようにクラスで書いてみます。
今度は行数が少し増えます。読みにくくなった感じはします。
class BankAccount
{
   private int $balance = 0;
   public function deposit(int $amount): void
   {
       $this->balance += $amount;
   }
   public function showBalance(): void
   {
       echo "残高: {$this->balance}円\n";
   }
}
$account = new BankAccount();
$account->deposit(1000);
$account->deposit(500);
$account->showBalance();

4.クラス版のメリット・デメリット

$balance に private をつけることで、クラスの外からの書き換えを出来なくしています。(オブジェクト指向で言うカプセル化)
あとはデータとルールを1つの入れ物に閉じている為、どこに処理があるのかの検索がしやすくなります。

5.まとめ

基本的にはクラス化する方の書き方になりそうですが、関数のみで使うやり方の方が見やすくて良いなと思いました。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。