LoginSignup
2
1

More than 5 years have passed since last update.

FuelPHPのObserver_Typingでjsonをarrayに変換する

Posted at

検索しても出てこなかったのでメモ。
バージョン:FuelPHP 1.8

Observerについてはこちらを参考にしました。
http://qiita.com/moroya/items/80f1746909aaf2fc6867

data_typeを指定すると連想配列をjson文字列に変化してDBに保存してくれるが、DBから取り出すとsrdClassに変換されてしまう。
この挙動はPHPのjson_decodeのデフォルト挙動と同じです。
http://php.net/manual/ja/function.json-decode.php
assoc = trueを指定すれば連想配列に変換してくれます。

FuelPHPでもjson_assoc => trueを指定することで同様の挙動になりました。

'colname' => [
  'data_type'  => 'json',
  'json_assoc' => true,
],

fuel/packages/orm/classes/observer/typing.phpの該当部分

  /**
   * Decodes the JSON
   *
   * @param   string  value
   *
   * @return  mixed
   */
  public static function type_json_decode($var, $settings)
  {
    $assoc = false;
    if (array_key_exists('json_assoc', $settings))
    {
      $assoc = (bool) $settings['json_assoc'];
    }
    return json_decode($var, $assoc);
  }

json_assocという名前でオプションを投げればいいと分かりました。
調べても分からなかったらソースを見るのが一番ですね。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1