【メモ】PHPで標準クラスを使う

PHP logo
PHPでデータを扱うのに今までは基本的に配列(連想配列)を使っていました。それでも良いんですけど、データの扱い方を考えるとオブジェクト型の方が参照しやすいことは多いですし、Unitテストするときにも使いやすいです。というわけで、標準クラスを使ってみます。



サンプルデータ

stdClass Object
(
   [soup] => 豚骨
   [tare] => 醤油
   [men] => 大盛り
)



基本的なやり方:stdClassを使う

今まではこんな感じで作成してデータを入力していました。

$ramen = new stdClass;
$ramen->soup = '豚骨';
$ramen->tare = '醤油';
$ramen->men  = '大盛り';



型キャストを使ったやり方

一方でキャストを使って作成する方法もあり、こっちの方がスマートに見えます。

$ramen = (object) [
   'soup'  => '豚骨'
   ,'tare' => '醤油'
   ,'men'  => '大盛り'
];

多段にしたい場合も、キャストして渡せば大丈夫です。

$ramen = (object) [
   'soup'  => '豚骨'
   ,'tare' => '醤油'
   ,'men'  => '大盛り'
   ,'topping' => [
       'chashu' => true
       ,'menma' => false
       ,'negi'  => true
   ]
];

$ramen->topping->negi    //true



使い分けが必要

汎用性の高いデータの場合は、きちんとクラスを定義してデータを受け渡すべきですが、実際にコーディングしているとそこまでではないデータというのも多くあります。使い捨てにするデータとか、1つの処理の中だけで使うデータとか、api越しに渡すだけのデータとか。そういうときにはごちゃごちゃと配列で渡すよりも、オブジェクト型で渡す方がスッキリします。一方で配列の方が標準関数が豊富に揃っており、あとでデータを加工する場合には配列の方が便利なことも多いです。要はケースバイケースですね。使い分け。

とりあえず、標準クラスを使いたいときはこうすると良いよってことで。



参考

stdClassのオブジェクトを作る方法 – Qiita
PHP標準クラスのstdClassについて – phpspot