CakePHPのしくみ
セッションについて色々と調べていて,その関連でsession.php(いくつかの場所にある)のソースを眺めていたら不思議なことを発見しました。sessionのクラスのコンストラクタが__constuctなのです。これはPHP5の言語仕様で,PHP4ではクラス名と同じメソッドがコンストラクタなはず。これでちゃんとPHP4でも動いているのが不思議。そもそもCakePHPってどのように動いているんだろう。PHPの言語使用も含めてよくわからない点について勉強してみました。
そもそもDelphiプログラマの僕には,phpで他のファイルの関数を利用する方法がそもそもわからない。Delphiならば他のユニットを使うときには,uses節にユニット名を書くんだけどな。CakePHPのコントローラを書いても,そこには他のファイルを参照する記述はない。どうなっているんだろう。
単純に考えることにして,ある単独のphpファイルはどのように実行されるか。php.exeに渡されるかブラウザで開かれたら実行される。CakePHPの場合,最初に実行されるのは何,index.phpでは?ということでwebappのindex.phpのソースを覗いてみた。するとそこにrequireが沢山,ググってみるとこれはCの#includeみたいな文だということ。なるほど,こうして必要なファイルを読み込んでいるのかと納得。
コンストラクタについては,CakePHPを使う というpdf資料に解説がありました。ObjectというクラスがうまくPHP4とPHP5の差異を吸収しているようです。CakePHPではすべてのクラスがObjectを継承するんですね。そうすればPHP4でも__constuctがコンストラクタになるんですね。わかりました。
同じ資料に,(しかも次のページに)「CakePHPの処理の主な流れ」という図がありました。ソースを覗いて想像していた流れとそう違っていなかったのでちょっと安心です。
CAKE_ADMIN
最初に作成してみようと思っているアプリケーションはタイムカードです。非常に簡単に単にアクセスしてきた人が自分の職員番号と出勤か退勤かを入れてボタンをクリックするとタイムカードを押したことになるというものを考えます。この場合ですと,一般のユーザに必要な画面はタイムカードを打つ画面だけで,従業員を登録したりするのは管理者のみが使用することになります。
こういうページを見つけました。この機能を利用するとその当たりの動作をうまく実装できそうです。
この管理者用アクションですが,bake.phpでのコード生成の時に
Would you like to create the methods for admin routing? (y/n)
という質問にyと答えたら管理者用のアクションと対応するビューが生成されます。
MSSQLへの接続テスト
業務で使っているRDBMSがMSSQLなのでそれに接続するテストをやってみようと思いました。CakePHP データベースにMSSQLを使うには というページを発見。このリンクには非常に簡単に繋がるという風に書いてあるのですが,僕の環境ではうまくつながりません。今後の研究課題です。
→この問題,解決しました。
CakePHPガイドブック
ここまではネット上の情報をつなぎ合わせて勉強してきましたが,一本筋の通った知識体系を持ちたいなと思い,CakePHPガイドブック という本をAmazonに注文しました。
コメントする