CakePHPのコンポーネントでカレンダーがあるかと思って探してみたのですが、今のところよさそうなものが見つかりませんでした。CakePHPはあくまでフレームワークなので、PHPのライブラリとしてはやはりPEARを使うのがよさそうです。
CakePHPでは、サードパーディ製のものはcakeのコアディレクトリの並びかAPPの下にある"vendors"ディレクトリに入れることになっています。cakeのコアディレクトリの並びにあるvendorsには複数のアプリケーションから使用される可能性のあるものを、APPの下のvendorsにはそのアプリケーション特有のものを入れることになります。(参照)
Calendarのインストールの例は次のようになります。
1. PEARのCalendarパッケージをダウンロードして展開
PEARのインストールは"pear install"コマンドを使うこともできますが、ここではどんな環境でも使えるようにするために、PEARのパッケージダウンロードのページからtarファイルをダウンロードしました。
ダウンロードしたtarファイルは、cakeのコアディレクトリの並びにある"vendors"ディレクトリの下にPEARというディレクトリを作って展開しました。
+-cake +-vendors +- PEAR +-Calendar
2. コントローラ内でインポート
vendorsディレクトリのファイルを使用するには、コントローラ内でApp::import()メソッドを使います。
App::import('Vendor',
'Calendar_Month_Weekdays',
array('file' => 'PEAR' . DS . 'Calendar' . DS . 'Month' . DS . 'Weekdays.php'));
importメソッドでは、
- 1番目の引数には'Vendor'
- 2番目の引数には使用するPHPのクラス名
- 3番目の引数にはロードするPHPファイルのパス
を、それぞれ指定します。
これでコントローラのアクションメソッドの中でCalendar_Month_Weekdaysクラスを使えるようになりました。
参考:CakePHPマニュアル 3.4.4.5 Loading Vendor Files





