###エラーメッセージ
PHP
1Fatal error: Class declarations may not be nested in
###コード
PHP
1public function export(){ 2 $results = $query = $this->Hoges->find('all'); 3 4 // 改行コードをPHP_EOLからCR+LFに置換するフィルタ 5 class eol_filter extends php_user_filter { 6 function filter($in, $out, &$consumed, $closing) { 7 while ($bucket = stream_bucket_make_writeable($in)) { 8 $bucket->data = str_replace(PHP_EOL, "\r\n", $bucket->data); 9 $consumed += $bucket->datalen; 10 stream_bucket_append($out, $bucket); 11 } 12 return PSFS_PASS_ON; 13 } 14 } 15 16 // 文字コードをUTF-8からShift-JISに置換するフィルタ 17 class encode_filter extends php_user_filter { 18 function filter($in, $out, &$consumed, $closing) { 19 while ($bucket = stream_bucket_make_writeable($in)) { 20 $bucket->data = mb_convert_encoding($bucket->data, 'SJIS-win', 'UTF-8'); 21 $consumed += $bucket->datalen; 22 stream_bucket_append($out, $bucket); 23 } 24 return PSFS_PASS_ON; 25 } 26 } 27 28 // フィルタを登録 29 stream_filter_register("eolFilter", "eol_filter"); 30 stream_filter_register("encodeFilter", "encode_filter"); 31 32 $fp = fopen('php://output', 'w'); 33 34 // フィルタを開いたストリームに付加する 35 stream_filter_append($fp, "eolFilter"); 36 stream_filter_append($fp, "encodeFilter"); 37 38 // ダウンロードさせる 39 header("Content-Type: application/octet-stream"); 40 header("Content-Disposition: attachment; filename=".$this->filename); 41 42 // 検索結果を書き込む 43 foreach ($results as $data) { 44 fputcsv($fp, $data); 45 } 46 47 fclose($fp); 48 }
###その他
クラスフィルタの書き方がいけないのでしょうか?
変数を変更してみても同じエラーが出てしまいます。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/11 06:34
2017/04/11 06:39
2017/04/11 06:43
2017/04/11 08:19