CakePHPはじめました。
CakePHPを勉強するために、何か簡単なものを作ろうと思い立ったので、CakeUploaderなるものを作ろうと思います。ようはアップローダーです。
Ver 1.0では単純なアップローダーの機能のみの実装に徹して、CakePHPに慣れようかと思います。開発にはDreamweaver 8とXAMPP、ER図のモデリングにはDBDesigner 4を使用しています。
作業手順を記述していきます。Dreamweaver固有の作業も含まれているのであしからず。
1.CakePHPの本体(stable版)を本家からダウンロード。
2.解凍し、適当な開発ディレクトリに配置。
3.Dreamweaverに".thtml"拡張子をPHP ファイルだと認識させるために設定ファイルを変更。
3.1 C:\Documents and Settings\ユーザー名\Application Data\Macromedia\Dreamweaver 8\Configuration\Extensions.txt の"すべてのドキュメント"と"PHP ファイル"の行にTHTMLを追加。詳細は「Dreamweaver 拡張子 追加」などでググってほしい。
3.1.1 もし、上記のパスにファイルが無ければ、C:\Program Files\Macromedia\Dreamweaver 8\Configuration\Extensions.txt のファイルに上記の処理を行う。
3.2 C:\Program Files\Macromedia\Dreamweaver 8\Configuration\DocumentTypes\MMDocumentTypes.xml のファイル内のphpの定義部分に、thtmlを2箇所挿入。詳細は「Dreamweaver 拡張子 追加」などでググってほしい。
4.Dreamweaverを開き、でサイト管理を新規作成して先の開発ディレクトリを登録。
4.1 アップロード先はXAMPPのドキュメント公開ディレクトリ(標準ではC:\Program Files\xampp\htdocs)の直下のディレクトリを指定。例えば、C:\Program Files\xampp\htdocs\uploader1.0\
5.DBDesigner 4を利用してER図を作成し、SQL文を吐き出す。とりあえず、暫定的に以下のようになった。
MySQL:
5.1 ちなみに、テーブル名がfilesではなくupfilesなのは、cakeのappディレクトリ内のwebrootディレクトリの下に、filesというディレクトリがあり、files/というアドレスがコントローラ名ではなくURL的にそのfilesディレクトリにアクセスしてしまうため。
5.2 ちなみに、descriptionフィールドは、できれはcommentという名前にしたかったが、DBDesigner 4によると、どこかのSQLの予約語であるため、その名前は使用できなかった。
6.XAMPPのphpMyAdmin(標準ではhttp://localhost/phpmuadmin/)にユーザーやDBの設定を行った後、上記のSQLでテーブルを作成する。ここでは暫定的に以下のようにする。
hostname : localhost
username : test
password : pass
database : cake
7.[root]\app\config\database.php.defaultを[root]\app\config\database.phpとして同じフォルダ内にコピーした後、コピーしたdatabase.phpを手順6の通りに設定する。
PHP:
-
class DATABASE_CONFIG
-
{
-
'host' => 'localhost',
-
'login' => 'test'
-
'password' => 'pass',
-
'database' => 'cake',
-
'prefix' => '');
-
}
8.[root]\cake\app_controller.phpと[root]\cake\app_model.phpを[root]\app\直下にコピーする。
8.1 "SET NAMES UTF-8"などのクエリをDBコネクションの最初に行う必要があれば、さきほどコピーした、[root]\app\app_model.phpに以下のように記述する。今回は記述した。
PHP:
9.[root]\cake\libs\view\layouts\default.hthtmlを[root]\app\views\layouts\default.hthtmlにコピーし、<title>タグの1行前に以下の行を追加する。
PHP:
-
echo $html->charset('utf-8');
とりあえず、今回はここまで。まとまった時間が取れたときに続きを書きます。