ラベル cakephp3 の投稿を表示しています。 すべての投稿を表示
ラベル cakephp3 の投稿を表示しています。 すべての投稿を表示

2015年1月26日月曜日

cake3.0.0-beta から cake3.0.0-RCへのmigration

beta2ぐらいからRCで結構細かく変わってきている。


config/bootstrap.php

load()で.phpをつけてはいけなくなった。
- Configure::load('app.php', 'default', false);
+ Configure::load('app', 'default', false);


config/routes.php

RoutingのCase insensitiveの設定方法が変わった。
+ Router::defaultRouteClass('InflectedRoute');
// Router::extensions(['html', 'json', 'txt']); <-- あとこれはRCで追加されたわけではないけどbeta3位で追加しないと動かなかった。

config/app.php

'path'でpathを指定する必要が出てきた。
 'debug' => [
  'className' => 'Cake\Log\Engine\FileLog',
+  'path' => LOGS,
  'file' => 'debug',
  'levels' => ['notice', 'info', 'debug'],
 ],

src/Model/Table/*Table.php

メソッド名が変わった。古いvalidatePresenceは使用不能に。
-   ->validatePresence('name', 'create')
+   ->requirePresence('name', 'create')

validationタイミングの変更?

validation指定のタイミングの変更。
// old
$entity = $table->newEntity([/* some entity data array */]);
$table->save($entity, ['validate' => false]);

// new
$entity = $table->newEntity([/* some entity data array */], ['validate' => false]);
$table->save($entity);
これはRCからなのか詳しく見てないけど'validate' => 'someMyValidation'みたいな指定が出来るようになったっぽい。


他にもbakeがplugin化してたりなんか色々あるぽいけど、RCから使い出すならその辺は気にせず使える。
ライブラリ自体の修正でなくてskeletonで作成したPHPテンプレに互換性が無くなると対応めんどい。
Zend Frameworkのノリでbetaからstableまでそんな変わらんだろと思ってたけどちょこちょこ変わる。

3.0.0もRCなのでもう変わることはないかな〜。今くらいから使いはじめるのがベストではないかと思われる。

2014年11月17日月曜日

CakePHP3の環境切り分け

CakePHP3でのdevelopment/productionなどの環境ごとの設定をどうするか。
公式ドキュメントを読むと、どうもbootstrapで設定を追加読み込みするよう促しているのでそれに倣う。

以下の設定で、基本は本番環境になり、developmentの環境変数を設定することで、開発環境の設定を上書きする形になる。

config/bootstrap.php

app.phpの読み込みをした後に、追加の設定を環境に応じて読み込む。config/app_development.phpに開発環境で上書きする設定を記述する。
try {
 Configure::config('default', new PhpConfig());
 Configure::load('app.php', 'default', false);

 // Add this 3 lines
 if (env("APPLICATION_ENV") == "dev" || env("APPLICATION_ENV") == "development") {
  Configure::load('app_development.php', 'default', true);
 }
 
} catch (\Exception $e) {
 die('Unable to load config/app.php. Create it by copying config/app.default.php to config/app.php.');
}

Server setting

nginxの場合はvirtualhostなどserverの設定でphpに渡す環境変数を設定する。
server {
    location ~ \.php$ {
        fastcgi_param  APPLICATION_ENV development;
    }
}

Apacheの場合は
SetEnv APPLICATION_ENV development
かな。最近触ってないから忘れたけど。

2014年9月23日火曜日

CakePHP3.0でDBを使わずBasic認証

CakePHPのBasic認証はdb使わなくちゃいけなくて不便。そんなユーザ増やすわけでもないしソースに記述があれば十分。みたいな時に使う。
passワードの記述は適当なsalt混ぜてmd5とかでハッシュ化しとくとより良さそう。

代替クラス

# src/Auth/BasicwodbAuthenticate.php
 $p) {
   if ($username === $u && $password === $p) {
    return array('username' => $username);
   }
  }
  return false;
 }
}

設定

# src/config/app.php
return [
    'App' => [
        'Basicwodb' => ['some-username' => 'some-pass'],
    ],
];

CakePHP3.0でURLを小文字でもControllerにつなぐ

config/routes.phpでオプション設定する。”['routeClass' => 'InflectedRoute']”を追加すると小文字のコントローラ名をinflectしてくれる。

connect('/', ['controller' => 'Index', 'action' => 'index']);
// $routes->connect('/:controller/:action/*');
 $routes->connect('/', ['controller' => 'Index', 'action' => 'index'], ['routeClass' => 'InflectedRoute']);
 $routes->connect('/:controller/:action/*', [], ['routeClass' => 'InflectedRoute']);