@ CakePHP

bakeによるMVCの生成

「bake」とは、CakePHPのMVCによるWebアプリケーションの基本部分を自動生成するためのPHPスクリプトです。bakeコマンドを使うと、Model, Controller, Viewファイルの雛形ファイルを自動生成することができます。

データベースの準備

cake_bbs という名前で空のデータベースを作成しておきます。このデータベースでは、書籍情報を保存するためのテーブルを作成します。

books.sql

/* booksテーブルを作成します: */
CREATE TABLE books (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50) NOT NULL,
    author VARCHAR(50) NOT NULL,
    price INT NOT NULL,
    created DATETIME,
    modified DATETIME
);

/* テスト用に記事をいくつか入れておきます: */
INSERT INTO books (title,author,price,created)
    VALUES ('CakePHP入門', '山田太郎', '2980', NOW());
INSERT INTO books (title,author,price,created)
    VALUES ('PHPコーディングベストプラクティス', '佐藤花子', '2780', NOW());
INSERT INTO books (title,author,price,created)
    VALUES ('CakePHPビューデザインブック', '高橋健二', '2800', NOW());

bakeコマンドについて

bake コマンドを引数無しで実行すると可能なタスクを表示できます。

bake command

$ bin\cake bake

The following commands can be used to generate skeleton code for your application.

Available bake commands:

- all
- behavior
- cell
- component
- controller
- fixture
- form
- helper
- mailer
- middleware
- migration
- migration_diff
- migration_snapshot
- model
- plugin
- seed
- shell
- shell_helper
- task
- template
- test

By using `cake bake [name]` you can invoke a specific bake task.

より詳しい各コマンドの情報を得るには、 –help オプションをつけ実行してください。

bake command

$ bin\cake bake controoler --help

The Bake script generates controllers, models and template files for
your application. If run with no command line arguments, Bake guides the
user through the class creation process. You can customize the
generation process by telling Bake where different parts of your
application are using command line arguments.

Usage:
cake bake [subcommand] [options]

Subcommands:

all                 Bake a complete MVC skeleton.
behavior            Bake a behavior class file.
cell                Bake a cell class file.
component           Bake a component class file.
controller          Bake a controller skeleton.
fixture             Generate fixtures for use with the test suite. You
                    can use `bake fixture all` to bake all fixtures.
form                Bake a form class file.
helper              Bake a helper class file.
mailer              Bake a mailer class file.
middleware          Bake a middleware class file.
migration           Bake migration class.
migration_diff      Bake migration class.
migration_snapshot  Bake migration snapshot class.
model               Bake table and entity classes.
plugin              Create the directory structure, AppController class
                    and testing setup for a new plugin. Can create
                    plugins in any of your bootstrapped plugin paths.
seed                Bake seed class.
shell               Bake a shell class file.
shell_helper        Bake a shell_helper class file.
task                Bake a task class file.
template            Bake views for a controller, using built-in or
                    custom templates.
test                Bake test case skeletons for classes.

To see help on a subcommand use `cake bake [subcommand] --help`

Options:

--connection, -c   The datasource connection to get data from.
                   (default: default)
--everything       Bake a complete MVC skeleton, using all the available
                   tables. Usage: "bake all --everything"
--force, -f        Force overwriting existing files without prompting.
--help, -h         Display this help.
--plugin, -p       Plugin to bake into.
--prefix           Prefix to bake controllers and templates into.
--quiet, -q        Enable quiet output.
--tablePrefix      Table prefix to be used in models.
--theme, -t        The theme to use when baking code. (choices:
                   Bake|Migrations)
--verbose, -v      Enable verbose output.

bake allコマンドでMVCを作成する

コマンドラインで、CakePHP アプリケーションのインストールディレクトリーに移動して、下記のコマンドを実行します。

bake command

bin\cake bake all books

コマンドをすると、下記のようなメッセージがコマンドラインに出力され、ファイル類が生成されていきます。

bake allコマンドで生成されるファイル

bake all コマンドでは、MVC関連ファイルとともに、ユニットテスト関連のファイルも生成されます。

/cake3app
├──/src
│  ├── /Controller
│  │  └── BooksController.php
│  ├── /Model
│  │  ├── /Entity
│  │  │  └── Book.php
│  │  └── /Table
│  │     └── BooksTable.php
│  └── /Template
│     └── /Books
│        ├── index.ctp
│        ├── view.ctp
│        ├── add.ctp
│        └── edit.ctp
└── /tests
   ├── /Fixtrue
   │  └── BooksFixtrue.php
   └── /TestCase
      ├── /Controller
      │  └── BooksControllerTest.php
      └── /Model
         └── /Table
            └── BooksTableTest.php

アプリケーションへのアクセス

ブラウザを起動し、以下の URL でアプリケーションにアクセスできます。

< http://localhost/cake3app/books/ >