雑感 †使いこなせてはいませんが、ざっと見た感想です。 メリット †
デメリット †
必要条件 †CakePHP 3.6 の場合 PHP 5.6.0以上 必要なもののインストール †ICUのインストール †ICUが無ければ入れておきます。 # yum install icu libicu-devel intlの有効化 †PHPは intl が有効になっている必要があります。 PHPのバージョンアップ †PHPをソースからではなく、パッケージで管理している場合は、以下の手順で5.6以上に更新できます。 # rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # yum install --enablerepo=remi --enablerepo=remi-php56 php php-cli php-common php-gd php-mbstring php-mysql php-pdo php-pgsql php-xml php-intl MySQLを使用するための準備 †データベースにMySQLを使用する場合は --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd オプションを指定してインストールし直します。 php.ini にsockの位置を指定。 # vi /usr/local/lib/php.ini pdo_mysql.default_socket=/var/lib/mysql/mysql.sock PostgreSQLを使用するための準備 †データベースにPostgreSQLを使用する場合は --with-pdo-pgsql オプションを指定してインストールし直します。 Composerのインストール †CakePHP3系はComposerを利用するため、先にインストールします。 $ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" $ php composer-setup.php $ php -r "unlink('composer-setup.php');" # mv composer.phar /usr/local/bin/composer.phar CakePHPのインストール †my_app_nameというフォルダにアプリケーションを作成する場合。 # exit $ cd /home $ php /usr/local/bin/composer.phar create-project --prefer-dist cakephp/app my_app_name バージョンを指定する場合 $ php /usr/local/bin/composer.phar create-project --prefer-dist cakephp/app:3.6.* my_app_name 作成されたフォルダ内に生成される以下の2つのファイルは残しておくと Composer で引き続き管理ができます。
開発環境から本番環境を構築する場合、2つのファイルをコピーし、以下のコマンドでOKです。 $ composer install MySQLを使用するための設定 †$ vi config/app.php テーブルやカラム名に予約語や特殊文字を使用している場合 true # 'quoteIdentifiers' => false, 'quoteIdentifiers' => true, PostgreSQLを使用するための設定 †PostgreSQLを使用する場合は設定ファイルの default と test の2箇所を書き換えます。 $ vi config/app.php # 'driver' => 'Cake\Database\Driver\Mysql', 'driver' => 'Cake\Database\Driver\Postgres', timezoneの設定 †config/app.php は変更しなくてOK? 'Datasources' => [ 'default' => [ 'timezone' => 'UTC', config/bootstrap.php を変更します。 date_default_timezone_set('Asia/Tokyo'); データベースの作成 †SQL文で作成することはもちろんですが、Migrationsの機能を利用することでDB変更履歴をバージョン管理に含めることができるようです。 http://book.cakephp.org/3.0/ja/migrations.html 先にテーブルを作成してからmigrationファイルを生成する場合は以下で可能です。 $ bin/cake bake migration_snapshot Initial 後からmigrationで管理しときゃよかったなー。なんて思う場合は以下のコマンドで適用したことにしちゃうことができます。 $ bin/cake migrations mark_migrated -t 20170302002523 テーブルprefsのファイルを作成する場合、 $ bin/cake bake migration CreatePrefs name:string created modified これで config/Migrations 以下にファイル名に日付などが付いたファイルが生成されます。 idは自動的に付加されます。 実際に反映させるには以下を実行します。 $ bin/cake migrations migrate ステータスは以下で確認できます。 $ bin/cake migrations status 戻す場合は以下で一つずつ戻ります。 $ bin/cake migrations rollback 現在のデータベースとの差分を出力する場合は、以下を実行します。 $ bin/cake bake migration_diff NameOfTheMigrations up() と down() は同じファイルに書けます。 change() はそれだけしか書けないみたいです。 マニュアル読みましょう 初期データの生成 †以下を実行することで基本となるファイルを生成できます。 $ bin/cake bake seed Prefs config/Seeds/PrefsSeed.php ファイルが生成されるので、この中を編集します。 #$data = []; $data = [ ['id' => 1, 'name' => '北海道'], ['id' => 2, 'name' => '青森県'], ]; 反映するには以下を実行します。 $ bin/cake migrations seed ファイルを指定する場合は以下を実行します。 $ bin/cake migrations seed --seed PrefsSeed seedは履歴管理に含まれないので、実行するたびにデータ投入されるため注意が必要です。 bakeでプログラムの基本を自動生成 †データベースを事前に作成しておくとbakeコマンドで基本的なプログラムを自動的に生成することができます。 なので、データベースの設計をきちんとして作成しておくと後々楽ができそうです。 各テーブルに対して実行することができます。 $ bin/cake bake all prefs src と tests 以下の Controller, Model, Template にそれぞれ生成されます。 使用できる引数のヘルプは以下で確認できます。 $ bin/cake bake 入門 †以下の順番で読み進めると理解が深まりそうです。 CakePHPを最新に保つ †composer.json 内に記述されている制限の範囲内で更新されます。 "require": { "cakephp/cakephp": "~3.2" } $ cd /home/my_app_name $ php /usr/local/bin/composer.phar update updateできない †$ php /usr/local/bin/composer.phar update Loading composer repositories with package information Updating dependencies (including require-dev) Failed to decode response: zlib_decode(): data error Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info composer.json に repositories を追加するとできました。 "repositories": [ { "type": "composer", "url": "https://packagist.org" }, { "packagist": false } ], |