- データベースから取ってくるデータがstdClassの配列だったりします。
- そのstdClassの配列を処理するコードを作ったりします。
- コードを作るとPHPUnitでテストしたりします。
- そうすると期待値や引数がstdClassだったりします。
- するとstdClassのオブジェクトを作らねばなりません。
- 環境
- macOS Mojave バージョン10.14.3
- PHP 7.3.1
- Laravel Framework 5.7.26
方法1. 配列をオブジェクトでキャストする
controlStdClassArray->createStdClassArrayCast
public function createStdClassArrayCast(): array
{
$stdArray = [
(object)['name' => 'イタリアンパセリ', 'otherName' => 'パースレー', 'gakumei' => 'Petroselinum neapolitanum', 'bunrui' => 'セリ科オランダゼリ属'],
(object)['name' => 'グラジオラス', 'otherName' => '唐菖蒲', 'gakumei' => 'Gladiolus', 'bunrui' => 'アヤメ科グラジオラス属'],
(object)['name' => 'アボカド', 'otherName' => 'ワニナシ', 'gakumei' => 'Persea americana', 'bunrui' => 'クスノキ科ワニナシ属'],
(object)['name' => 'マロウ', 'otherName' => 'ウスベニアオイ', 'gakumei' => 'Malva sylvestris', 'bunrui' => 'アオイ科ゼニアオイ属'],
];
return $stdArray;
}
$ php controlStdClassArray.php
array(4) {
[0]=>
object(stdClass)#2 (4) {
["name"]=>
string(24) "イタリアンパセリ"
["otherName"]=>
string(15) "パースレー"
["gakumei"]=>
string(25) "Petroselinum neapolitanum"
["bunrui"]=>
string(30) "セリ科オランダゼリ属"
}
[1]=>
object(stdClass)#3 (4) {
["name"]=>
string(18) "グラジオラス"
["otherName"]=>
string(9) "唐菖蒲"
["gakumei"]=>
string(9) "Gladiolus"
["bunrui"]=>
string(33) "アヤメ科グラジオラス属"
}
[2]=>
object(stdClass)#4 (4) {
["name"]=>
string(12) "アボカド"
["otherName"]=>
string(12) "ワニナシ"
["gakumei"]=>
string(16) "Persea americana"
["bunrui"]=>
string(30) "クスノキ科ワニナシ属"
}
[3]=>
object(stdClass)#5 (4) {
["name"]=>
string(9) "マロウ"
["otherName"]=>
string(21) "ウスベニアオイ"
["gakumei"]=>
string(16) "Malva sylvestris"
["bunrui"]=>
string(30) "アオイ科ゼニアオイ属"
}
}
方法2. new \stdClass
をして1つ1つ設定する
controlStdClassArray->createStdClassArrayNew
public function createStdClassArrayNew()
{
$stdArray = [];
$stdObj = new \stdClass();
$stdObj->name = 'イタリアンパセリ';
$stdObj->otherName = 'パースレー';
$stdObj->gakumei = 'Petroselinum neapolitanum';
$stdObj->bunrui = 'セリ科オランダゼリ属';
$stdArray[] = $stdObj;
$stdObj = new \stdClass();
$stdObj->name = 'グラジオラス';
$stdObj->otherName = '唐菖蒲';
$stdObj->gakumei = 'Gladiolus';
$stdObj->bunrui = 'アヤメ科グラジオラス属';
$stdArray[] = $stdObj;
$stdObj = new \stdClass();
$stdObj->name = 'アボカド';
$stdObj->otherName = 'ワニナシ';
$stdObj->gakumei = 'Persea americana';
$stdObj->bunrui = 'クスノキ科ワニナシ属';
$stdArray[] = $stdObj;
$stdObj = new \stdClass();
$stdObj->name = 'マロウ';
$stdObj->otherName = 'ウスベニアオイ';
$stdObj->gakumei = 'Malva sylvestris';
$stdObj->bunrui = 'アオイ科ゼニアオイ属';
$stdArray[] = $stdObj;
return $stdArray;
}
$ php controlStdClassArray.php
array(4) {
[0]=>
object(stdClass)#2 (4) {
["name"]=>
string(24) "イタリアンパセリ"
["otherName"]=>
string(15) "パースレー"
["gakumei"]=>
string(25) "Petroselinum neapolitanum"
["bunrui"]=>
string(30) "セリ科オランダゼリ属"
}
[1]=>
object(stdClass)#3 (4) {
["name"]=>
string(18) "グラジオラス"
["otherName"]=>
string(9) "唐菖蒲"
["gakumei"]=>
string(9) "Gladiolus"
["bunrui"]=>
string(33) "アヤメ科グラジオラス属"
}
[2]=>
object(stdClass)#4 (4) {
["name"]=>
string(12) "アボカド"
["otherName"]=>
string(12) "ワニナシ"
["gakumei"]=>
string(16) "Persea americana"
["bunrui"]=>
string(30) "クスノキ科ワニナシ属"
}
[3]=>
object(stdClass)#5 (4) {
["name"]=>
string(9) "マロウ"
["otherName"]=>
string(21) "ウスベニアオイ"
["gakumei"]=>
string(16) "Malva sylvestris"
["bunrui"]=>
string(30) "アオイ科ゼニアオイ属"
}
}
全貌
controlStdClassArray.php
<?php
namespace App;
class controlStdClassArray
{
public function createStdClassArrayCast(): array
{
$stdArray = [
(object)['name' => 'イタリアンパセリ', 'otherName' => 'パースレー', 'gakumei' => 'Petroselinum neapolitanum', 'bunrui' => 'セリ科オランダゼリ属'],
(object)['name' => 'グラジオラス', 'otherName' => '唐菖蒲', 'gakumei' => 'Gladiolus', 'bunrui' => 'アヤメ科グラジオラス属'],
(object)['name' => 'アボカド', 'otherName' => 'ワニナシ', 'gakumei' => 'Persea americana', 'bunrui' => 'クスノキ科ワニナシ属'],
(object)['name' => 'マロウ', 'otherName' => 'ウスベニアオイ', 'gakumei' => 'Malva sylvestris', 'bunrui' => 'アオイ科ゼニアオイ属'],
];
return $stdArray;
}
public function createStdClassArrayNew()
{
$stdArray = [];
$stdObj = new \stdClass();
$stdObj->name = 'イタリアンパセリ';
$stdObj->otherName = 'パースレー';
$stdObj->gakumei = 'Petroselinum neapolitanum';
$stdObj->bunrui = 'セリ科オランダゼリ属';
$stdArray[] = $stdObj;
$stdObj = new \stdClass();
$stdObj->name = 'グラジオラス';
$stdObj->otherName = '唐菖蒲';
$stdObj->gakumei = 'Gladiolus';
$stdObj->bunrui = 'アヤメ科グラジオラス属';
$stdArray[] = $stdObj;
$stdObj = new \stdClass();
$stdObj->name = 'アボカド';
$stdObj->otherName = 'ワニナシ';
$stdObj->gakumei = 'Persea americana';
$stdObj->bunrui = 'クスノキ科ワニナシ属';
$stdArray[] = $stdObj;
$stdObj = new \stdClass();
$stdObj->name = 'マロウ';
$stdObj->otherName = 'ウスベニアオイ';
$stdObj->gakumei = 'Malva sylvestris';
$stdObj->bunrui = 'アオイ科ゼニアオイ属';
$stdArray[] = $stdObj;
return $stdArray;
}
}
$clas = new controlStdClassArray();
var_dump($clas->createStdClassArrayCast());
var_dump($clas->createStdClassArrayNew());