PHP
PHPUnit
Laravel
PHP7

stdClassのオブジェクトを作る方法


  1. データベースから取ってくるデータがstdClassの配列だったりします。

  2. そのstdClassの配列を処理するコードを作ったりします。

  3. コードを作るとPHPUnitでテストしたりします。

  4. そうすると期待値や引数がstdClassだったりします。

  5. すると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());



参考