概要
fuelPHP で “Cannot use object of type Fuel\Core\Request as array”というエラーが出て困った。
Requestオブジェクトを配列みたいに使わないでね、って言われてます。
エラーになった箇所のコード
$tweets = \Request::forge('api/twitter/get_tweets, false)->execute() $tweet_example => $tweets['statuses'][0]['text'] //この行でエラーになる
ちなみに、上記のRequest::forge(…)では、api モジュールの twitter クラスの get_tweets メソッドの返り値を受け取っています。
get_tweets メソッドでは連想配列の形式で return していますが、上記1行目の$tweets
は Request オブジェクトになっています。
状況
上記のコードの詳細はさておき、Request::forge(...)->execute()
で取得できるのは Request オブジェクトです。
それを連想配列みたいに扱おうとしたのでエラーになっています。
解決方法
Request オブジェクトから Response を抜き出し、さらに body 部を抜き出します。Request::forge(...)->execute()->response()->body()
という感じです。
$tweets = \Request::forge('api/twitter/get_tweets.$val, false)->execute()->response()->body(); $tweet_example => $tweets['statuses'][0]['text']
get_tweets メソッドで return した連想配列の形で、1行目の$tweets
に代入することができました!
補足
同じエラーに遭遇した方が、Request オブジェクトの中身を print_r で確認するという記事を書いていました。
https://catherine87.com/archives/287
ただ、私の場合はバッチ処理(fuelPHP の Task)内のエラーだったため、画面出力での確認ができませんでした。\Log::debug(serialize($tweets))
で文字列にした内容をログ出力したりしましたが、結構苦労しました。。
なお、Request クラスの公式ドキュメントはこちらです。
Request – クラス – FuelPHP ドキュメント