「CakePHPによる実践Webアプリケーション開発」が出ます
Wednesday, 11. March 2009, 08:55:39
Amazonにupされていたので、もう告知してもいいかな。
3/26(木)3/31(Amazonでは4/8になってますね)に発売される「CakePHPによる実践Webアプリケーション開発」という本を企画&共著しました。
内容は入門的な内容はほとんどなく、淡々とサンプルアプリケーション(サイボウズ的なスケジュール表)を作っていくというものです。
今までCakePHPではこの手の本がなかったので、1冊ぐらいあっても良いかな?ということで。皆様、手にとって・・・というかぜひ買ってください!
CakePHP1.2stableをベースとした最初の書籍となる・・・・なんて書いたのですが、なんとその2週間ぐらい前の14日に、秀和システムさんから題名も良く似た「CakePHPによるWebアプリケーション開発」という本も出るようです(こちらはAmazonに登録がないので、実体はよくわかりません)。うーん執筆中に他の本の状況はわからないですからねー。
内容は入門的な内容はほとんどなく、淡々とサンプルアプリケーション(サイボウズ的なスケジュール表)を作っていくというものです。
今までCakePHPではこの手の本がなかったので、1冊ぐらいあっても良いかな?ということで。皆様、手にとって・・・というかぜひ買ってください!
CakePHP1.2stableをベースとした最初の書籍となる・・・・なんて書いたのですが、なんとその2週間ぐらい前の14日に、秀和システムさんから題名も良く似た「CakePHPによるWebアプリケーション開発」という本も出るようです(こちらはAmazonに登録がないので、実体はよくわかりません)。うーん執筆中に他の本の状況はわからないですからねー。









jan533425 # 24. April 2009, 13:48
こちらで良いか分かりませんが、間違い(じゃないかな?)と思うところをお知らせします。
結構致命的なミスが多いような
サンプルをダウンロード出来るのを気付かずにずっと手打ちでやっていたのと、以下の間違いをどう修正したら動くか思案していたのとで、なかなか思うように読み進められませんでした。
サンプルが用意されているのに気付いてからは手打ちは止めましたけどね
P45:下から3行目
$from_time = mktime(0,0,0,date('n'),1 - date('w', $firstday),$year);
$year が用意されていない。
P52:
private function timeSchedule($schedule, $maxtime) {
パラメーターに $mintime が無い。
P67:中程
C:\CalendarNote\app\calendarnote\utils\abstract_holidays.php
holidays ディレクトリが抜けている。
P73:本文の下から3行目
制御しずらい→制御しづらい
sizuhiko # 27. April 2009, 01:53
フィードバックと、訂正をまとめて、cakephp.jp のスレッドにupしたいと思います。
よろしくお願いします。
m-k-m # 27. April 2009, 14:08
初心者のため、わからないところがいくつかあるので、質問させてください。
Q1:P.30
CakePHP本体とは、何を指すのでしょう?
できれば、Directory構造がこうなるなどと教えていただけると助かります。
Q2:P.30
C:\CalendarNote\xampp\apache\bin\php.ini
とありますが
C:\CalendarNote\xampp\php\php.ini
ではないでしょうか?
まだ、読み始めでこんなところで躓いております。
sizuhiko # 28. April 2009, 06:44
Cake本体とは、CakePHPのコアモジュールのことです。ディレクトリは書いてあるとおりの場所にCakePHPのソースコードをすべて配置するようなイメージです。CakePHPはソースコードをコピーするだけで動作します。
CakePHP本体のソースコードはアーカイブを解凍した後にできるcakeディレクトリと、その配下すべてです。
それからXAMPPを使った場合、Apache経由で利用されるphp.iniはapache\bin\php.iniになります。php\php.iniはPHPをCLIから実行した場合に利用されるものです。
本書は対象者が上級者向けとなっているので、内容が難しいと思いますが、頑張ってください。
Cookbookのブログチュートリアルなどを一度やってみて感触を掴んでおくと多少入りやすいのじゃないかと思います。
jan533425 # 28. April 2009, 07:41
追伸:多言語対応はあのように使うんですね。ちょっと感動しました
P83:3行目
array('alphaNumeric')
サンプルでは array('notEmpty') となっています。
P47:下から5行目、P90:5行目、P53~P82までのほとんどの画像
Weeky → Weekly では?(サンプルも同様)
P94:NOTE(正誤というか質問)
HABTMの場合の関連モデルの名前は、規約ではアルファベット順となっていますが、実際のところはどうなんでしょう?順不同でも動くそうですし、あくまでも規約上の話なんですかね。
sizuhiko # 28. April 2009, 11:52
typo の件は、出版後にすぐ気付かれた方がいて、教えてもらっていたのですが、とりあえず動くので、正誤に入れるか保留にしてました。すみません。補足として入れておくことにします。
HABTMの命名規則は、気がついていませんでした。現場では with を使って中間テーブルを検索できるように対応してしまうので、規約違反していても問題がなかったようです。
with も joinTables も両方指定しないと、アルファベット順(というかPHPのsort関数順)に並び替えてテーブル名にするようになっているみたいです。
こちらも補足として書いておきます。
m-k-m # 28. April 2009, 22:52
>Cake本体とは、CakePHPのコアモジュールのことです。ディレクトリは書いてあるとおりの場所にCakePHPのソースコードをすべて配置するようなイメージです。CakePHPはソースコードをコピーするだけで動作します。
CakePHP本体のソースコードはアーカイブを解凍した後にできるcakeディレクトリと、その配下すべてです。
こういうことですか?
1)cake_1.2.2.8120.zipを解凍すると
\cake_1.2.2.8120ができその下に
\app
\cake <----これがcake本体?
\vendors
ができる。
2)この\cakeをフォルダごとC:\CalendarNote\appに移動して、
C:\CalendarNote\app\cakeを作ると
\config
\console
\libs
\tests
basics.php
bootstrap.php
dispatcher.php
LICENSE.txt
VERSION.txt
と言った構成ができる。
漸く、P.35迄きました。
schemaを実行すると以下のようなwarningが出てしまうのですが?
Generating Schema...
Warning: mysql_connect(): Access denied for user calendarnote'@'localhost' (using password: YES) in C:\CalendarNote\app\cake\libs\model\datasources\dbo\dbo_mys
ql.php on line 374
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\CalendarNote\app\cake\libs\model\datasources\dbo\dbo_mysql.php on line 379
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\CalendarNote\app\cake\libs\model\datasources\dbo\dbo_mysql.php on line 411
Warning: mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in C:\CalendarNote\app\cake\libs\model\datasources\dbo\dbo_mysql.php on line 387
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\CalendarNote\app\cake\libs\model\datasources\dbo\dbo_mysql.php on line 411
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\CalendarNote\app\cake\libs\model\datasources\dbo\dbo_mysql.php on line 411
Schema file: schema.php generated
とりあえず、config\sql\schema.phpはできているので気にしなくていいのでしょうか?
sizuhiko # 29. April 2009, 13:07
Cake本体の理解は問題ありません。
しかしMySQLでAccess deniedが出てますので、CakePHPからMySQLに接続できていないようです。
もっと前の段階(おそらくP34あたりの接続設定あたり)で失敗しているんじゃないかと思います。
database.phpのid,passwordではMySQLに接続できない!と怒られているようですので。
たぶん、この状態では先に進んでもうまく動作しないんじゃないかと思います。
database.phpを削除して、データベースの接続設定をやり直すと良いと思います。
m-k-m # 1. May 2009, 14:04
アドバイスに従ったところ、おかげさまで、P.41までたどり着けました。
明日から、5連休ですので集中して、勉強したいと思ってます。
どうぞよろしくお願いします。
m-k-m # 2. May 2009, 05:31
ところで、P.47
views\schedules\index.ctp
で、
echo $scheduleTable->$scope($schedules, $times);
とありますが、Helperを呼んでHTMLを吐き出しているのは、理解できるのですが、
この行の解釈が、良くわかりません。
どの様に解釈すれば、よろしいのでしょうか?
$scopeの値で、$scheduleTableのfunctionを振り分けているということでしょうか?
sizuhiko # 4. May 2009, 10:42
> $scopeの値で、$scheduleTableのfunctionを振り分けているということでしょうか?
そうですね。