DEVELOPERS BLOGデベロッパーズブログ
- HOME >
- 加藤 正人のデベロッパーズブログ >
- Google Chart へのアクセスをヘルパーで実装してみる【その1】
加藤 正人のデベロッパーズブログ
- 氏名
- 加藤 正人
- 役職
- 多分SE
- 血液型
- 秘密
- 出没
- 美味しいもののあるところ
- 特色
- タヒチ大好き。ちょいメタボ。
- 2020/12/15
- CakePHP3 のリダイレクトがうまく行かない例
- 2020/11/12
- Apache Bench
- 2020/10/05
- PhpSpreadsheet でExcel ファイルを読み込む (CakePHP3)
先日仕事で Google Charts を利用する機会があった。
この機能を使うと、グラフやチャートを簡単に表示できとても便利だ。今後も使う機会は多そうなので、CakePHP のプラグイン化しておくと便利そうなので、作ってみた。
使う場合はコントローラで $helpers に GoogleCharts を指定しておく必要がある。
チャートを表示する際には、まず GoogleChartsHelper::chartStart() を呼び出し、チャート環境を初期化したあと各チャート機能を利用し、最後に GoogleChartsHelper::chartEnd() を呼び出すことで必要なコードを出力する。
Google Charts は表示するチャートやグラフごとにパッケージが分離されているので、表示する対象に応じたパッケージをコーディング者が明示する必要があるが、このヘルパーでは実際に描画する対象に応じて自動的に必要なパッケージを判定し事前に呼び出すようにコードを生成する。
1つのページ表示に際し、chartStart() あるいは/および chartEnd() を2回以上呼び出してはならない。2回以上呼び出した場合の動作は規定されていない。
また、各チャートの呼び出しは diff チャート以外はマジックメソッド呼び出しで実装される。マジックメソッド呼び出しで与えられたメソッドが実在するかどうかは、GoogleChartHelper クラスのプライベート変数 $_chart_info に保持されている情報で判定する。この変数には、チャート名とそれが含まれる Google Chart パッケージ名、およびその JavaScript コンストラクタ名が格納されている。呼び出そうとしているメソッドがマジックメソッドとして無効な場合は、Exception クラスの例外が throw され処理は中断される。
GoogleChartsHelper::chartStart() を呼び出した後、各チャートを呼び出すと当該チャートに必要な情報 (Google Chart のパッケージ名や当該チャートのコンストラクタ名) がクラス内部の変数に蓄積され、GoogleChartsHelper::chartEnd() を呼び出した時点でそれらが必要な順序で 呼び出されるよう Script タグを生成する。Script タグの生成には HtmlHelper::scriptBlock() を使用する。
各チャートメソッドの詳細は次回に。
関連エントリー
- 2014/09/06
- Google reCAPTCHA を使いやすくする
2020/12/15
2020/11/12
2020/10/05
2020/09/11
2020/08/03