Writing Appropriately

職務経歴

PHP 配列をオブジェクトっぽく扱うクラスを書いてみた

Larabelに配列をオブジェクトっぽく扱うクラスがあるという話を聞き、それを見てしまう前に自分の出せるものを出そうと思って書いてみた。 とりあえず現在やっている業務で必要となる形のものだけ。今後機能は増える。

  • 文字列にしか使えない関数を再帰的に実行
  • $obj->keyの書き方で値を取得できる
  • $obj->key = $val;の書き方で値を設定できる
  • メソッドチェーン(個人的には好みではないコピペしにくくなる)

github.com

テスト

<?php

require  dirname(__FILE__) . '/../ORE_Require.php';

$array = array(
    'hankaku' => 'ハンカクカタカナABC123',
    'lowercase' => 'abcdefg',
    'recursive' => array(
        'trim' => '  trim  ',
        'hoge1' => 'abcハンカクヘンカン',
        'hoge2' => 'edfハンカクヘンカン',
    ),
);
echo 'before ='.print_r($array, true)."\n";

$obj_arr = new ORE_Array($array);
$array = $obj_arr
    ->array_map('trim')
    ->strtoupper()
    ->mb_convert_kana('CKVas')
    ->get_array();

echo 'after  ='.print_r($array, true)."\n";


// キー値アクセス
echo '$obj_arr->hankaku='.$obj_arr->hankaku."\n";
echo '$obj_arr->lowercase='.$obj_arr->lowercase."\n";

// str_replace
$obj_arr->str_replace('ハンカクヘンカン', '全角になりました', true);
$array = $obj_arr->get_array();
echo 'str_replace ='.print_r($array, true)."\n";

結果

よきよき

f:id:naoyuki1019:20190514221549p:plain

そのうち

  • DBのテーブルのカラム名と同じkeyのみの配列を返すフィルタリング機能
  • ソート機能