Skip navigation.

Technote

by sizuhiko

「CakePHPによる実践Webアプリケーション開発」が出ます

Amazonにupされていたので、もう告知してもいいかな。

3/26(木)3/31(Amazonでは4/8になってますね)に発売される「CakePHPによる実践Webアプリケーション開発」という本を企画&共著しました。

内容は入門的な内容はほとんどなく、淡々とサンプルアプリケーション(サイボウズ的なスケジュール表)を作っていくというものです。
今までCakePHPではこの手の本がなかったので、1冊ぐらいあっても良いかな?ということで。皆様、手にとって・・・というかぜひ買ってください!:cry:

CakePHP1.2stableをベースとした最初の書籍となる・・・・なんて書いたのですが、なんとその2週間ぐらい前の14日に、秀和システムさんから題名も良く似た「CakePHPによるWebアプリケーション開発」という本も出るようです(こちらはAmazonに登録がないので、実体はよくわかりません)。うーん執筆中に他の本の状況はわからないですからねー。

CakePHPハンズオン@Tokyo#2が実施されました。第42回PHP勉強会@関東に参加しました。

Comments

jan533425 24. April 2009, 13:48

購入させて頂きました。

こちらで良いか分かりませんが、間違い(じゃないかな?)と思うところをお知らせします。
結構致命的なミスが多いような:cry:

サンプルをダウンロード出来るのを気付かずにずっと手打ちでやっていたのと、以下の間違いをどう修正したら動くか思案していたのとで、なかなか思うように読み進められませんでした。
サンプルが用意されているのに気付いてからは手打ちは止めましたけどね:smile:

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

m-k-mさん>
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

cakephp.jp に書くとゴッチャになるかも知れないのでこちらに書きます。

追伸:多言語対応はあのように使うんですね。ちょっと感動しました:smile:


P83:3行目

array('alphaNumeric')

サンプルでは array('notEmpty') となっています。


P47:下から5行目、P90:5行目、P53~P82までのほとんどの画像

Weeky → Weekly では?(サンプルも同様)


P94:NOTE(正誤というか質問)

HABTMの場合の関連モデルの名前は、規約ではアルファベット順となっていますが、実際のところはどうなんでしょう?順不同でも動くそうですし、あくまでも規約上の話なんですかね。

sizuhiko 28. April 2009, 11:52

jan533425さん>
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

m-k-mさん>
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

漸く、「2-2-5 月、週、日単位に表示する」を入力してソースの動作を確認しています。

ところで、P.47
views\schedules\index.ctp
で、
echo $scheduleTable->$scope($schedules, $times);

とありますが、Helperを呼んでHTMLを吐き出しているのは、理解できるのですが、
この行の解釈が、良くわかりません。

どの様に解釈すれば、よろしいのでしょうか?

$scopeの値で、$scheduleTableのfunctionを振り分けているということでしょうか?


sizuhiko 4. May 2009, 10:42

m-k-mさん>
> $scopeの値で、$scheduleTableのfunctionを振り分けているということでしょうか?
そうですね。

Write a comment

You must be logged in to write a comment. If you're not a registered member, please sign up.

Download Opera, the fastest and most secure browser
December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31