2010/5/29 CakePHP Study Meetup @tokyo #5 ichikawa (id:cakephper) ‏ (id:ichikaway) CakePHP1.3 Stable
Self-introduction Yasushi Ichikawa Twitter (Japanese) : @cakephper Twitter (English) : @ichikaway  Blog Cakephper diary ( CakePHP 、 MongoDB ) http://d.hatena.ne.jp/cakephper
Self-introduction I've used the Cakephp since Aug 2008. Author of the SQL Explain Component  ->  Contributor of the Debug_kit Author of the Cakephp MongoDB-Datasource My code for Cakephp http://github.com/ichikaway XformHelper  MongoDB-Datasource cakeplus
Topic CakePHP History CakePHP1.3 Resources CakePHP1.3 New Features CakePHP1.3 Migration
CakePHP History CakePHP1.2 Stable Release(2008/12)   CakePHP1.3 Stable Release(2010/4) PHP4, 5  CakePHP2.0 PHP5.2
CakePHP History CakePHP1.3 Stable Release(1.5 year) Thanks a lot, Cakephp Team! Contribution Code Ticket/Patch Document / Translation Donation
CakePHP Donation http://pledgie.com/campaigns/7311
CakePHP Donation
CakePHP Donation Edit profile(paypal email address) after login.
CakePHP Donation http://pledgie.com/campaigns/7311
CakePHP Donation 寄付は $5 以上にした方が良いです。 Paypal 手数料が差し引かれるので。
CakePHP Donation
CakePHP Donation
Easy, Let's try :)
Topic CakePHP History CakePHP1.3 Resources CakePHP1.3 New Features CakePHP1.3 Migration
CakePHP1.3 Resources Cakephp Core Code よく分からない場合はコードを見た方が早い http ://github.com/cakephp/cakephp API マニュアル 各クラスの説明、メソッドの説明 ここにしか書いていない情報もある http://api.cakephp.org Cake CookBook Cake の解説、チュートリアル 英語版と日本語版の不整合に注意 http ://book.cakephp.org/view/875/x1-3-Collection
CookBook difference JP/EN
Topic CakePHP History CakePHP1.3 Resources CakePHP1.3 New Features CakePHP1.3 Migration
CakePHP1.3 New Features Routes Virtual Fields Validation Bake etc http://book.cakephp.org/ja/view/1572/New-features-in-CakePHP-1-3
CakePHP1.3 New Features Routes Prefix Routing Admin ルーティングと同じ扱いに RouteClass ルーティング処理マッチング時に自作クラス呼び出し DB の値を見てマッチング処理を行うなど 例 1:  該当の slug が DB にあれば routing する 例 2: url の一部変更でリダイレクト
CakePHP1.3 New Features RouteClass config/routes.php http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp App::import('Lib', 'routes/SlugRoute'); Router::connect( '/:slug',  array('controller' => 'posts', 'action' => 'view'),  array('routeClass' => 'SlugRoute') );
CakePHP1.3 New Features RouteClass app/libs/routes/slug_route.php http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp class SlugRoute extends  CakeRoute  {  function  parse($url)  { $params = parent::parse($url); App::import('Model', 'Post'); $Post = new Post(); $count = $Post->find('count', array('conditions' =>   array('Post.slug LIKE ?' => $params['slug'] .'%')); if ($count) { return $params;} return false; }}
CakePHP1.3 New Features Virtual Fields DB カラムを仮想定義して、 Field として扱える Field で表示する内容は SQL 文で定義 例: fullname カラムに姓名を表示 'fullname' => “CONCAT(User.Fname, ' ', User.Lname)” 参考:「 VitualFields を使おう!」  hiromi2424 さん http://d.hatena.ne.jp/hiromi2424/20100204/1265274976
CakePHP1.3 New Features Validation マルチバイト対応 maxLength() などは mb_strlen() を利用 mb_strlen() が定義されてなければマルチバイトクラスの Multibyte::strlen() を利用 国別のルールを適用 Phone, postcode, SSN 国別のマッチングルールを適用可能 例:日本の postcode なら 222-3333 というルール http://github.com/cakephp/localized
CakePHP1.3 New Features Validation 国別のルール適用例 // In your Model App::import('Lib',  'Localized.JpValidation' ); class Post extends AppModel { var $validate = array( 'postal' => array( 'valid' => array( 'rule' => array('postal', null, ' jp '), 'message' => ' 郵便番号が違います ' ) ) );}
CakePHP1.3 New Features Bake テンプレート コントローラやモデルの雛形を容易にカスタマイズ cake/console/templates/default 例 :  確認画面の処理を含む bake など Bake fixture Fixture のみを生成 ダミーデータや実 DB データをセット可能 bake fixture -records で実 DB データセット
CakePHP1.3 New Features 他にも色々新機能があります JsHelper Jquery, Prototype, Mootools を透過的に扱う $js->get('#foo')->event('click', $eventCode); Helper::assetTimestamp($path) CSS や画像の URL にタイムスタンプ追加 App::import(' Lib ', 'fooBar');  imports app/ libs /foo_bar.php Validation::ip($someAddress, 'IPv4'); //IPv6 もあるよ
CakePHP1.3 New Features より詳細な情報は New features in CakePHP 1.3 参照 CakeBook 11.2 章 付録 日本語 http://book.cakephp.org/ja/view/1572/New-features-in-CakePHP-1-3 英語 http://book.cakephp.org/view/1572/New-features-in-CakePHP-1-3
Topic CakePHP History CakePHP1.3 Resources CakePHP1.3 New Features CakePHP1.3 Migration
CakePHP1.3 Change from 1.2 Helper, Component の自動読み込み廃止 Session, html ヘルパー、 Session コンポーネント del() は delete() に $this->Session->delete(); Model->delete(); View Helper 呼び出し  $this->Helper->method() $this->element() (renderElement() の廃止 ) echo  $this->Session->flash();
CakePHP1.3 Change from 1.2 タイトル Controller::pageTitle 廃止 $this->set('title_for_layout', $var); SQL ダンプ表示は Layout に下記必須 <?php echo $this->element('sql_dump'); ?> Find findAll は、 find('all') に
CakePHP1.3 Change from 1.2 Bootstrap フォルダ構成を自由に定義可能 plugin, model, view, controller, datasource, behavior, component, helper, vendor, shell, locale 複数 Path 定義可能 App::build(array( 'plugins' => array('/full/path/to/plugins/', '/next/full/path/to/plugins/'), 'models' =>  array('/full/path/to/models/', '/next/full/path/to/models/'), 'controllers' => array('/full/path/to/controllers/', '/next/full/path/to/controllers/'), 'behaviors' => array('/full/path/to/behaviors/', '/next/full/path/to/behaviors/'), 'helpers' => array('/full/path/to/helpers/', '/next/full/path/to/helpers/'), ));
Migration CakePHP1.2 to 1.3 より詳細な情報はマイグレーションガイドを参照 CakeBook の 11.1 章 付録 英語  http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3 日本語 http://book.cakephp.org/ja/view/1561/Migrating-from-CakePHP-1-2-to-1-3 使用しない方が良い / できないメソッド等の一覧 (MASA-P) http://blog.ecworks.jp/archives/1120
まとめ CakePHP History CakePHP1.3 Resources CakePHP1.3 New Features Routes, Model, Validation, Bake CakePHP1.3 Migration はまったらすぐにマイグレーションガイド
ありがとうございました Thank you

Cakephp tokyo5

  • 1.
    2010/5/29 CakePHP StudyMeetup @tokyo #5 ichikawa (id:cakephper) ‏ (id:ichikaway) CakePHP1.3 Stable
  • 2.
    Self-introduction Yasushi IchikawaTwitter (Japanese) : @cakephper Twitter (English) : @ichikaway Blog Cakephper diary ( CakePHP 、 MongoDB ) http://d.hatena.ne.jp/cakephper
  • 3.
    Self-introduction I've usedthe Cakephp since Aug 2008. Author of the SQL Explain Component -> Contributor of the Debug_kit Author of the Cakephp MongoDB-Datasource My code for Cakephp http://github.com/ichikaway XformHelper MongoDB-Datasource cakeplus
  • 4.
    Topic CakePHP HistoryCakePHP1.3 Resources CakePHP1.3 New Features CakePHP1.3 Migration
  • 5.
    CakePHP History CakePHP1.2Stable Release(2008/12) CakePHP1.3 Stable Release(2010/4) PHP4, 5 CakePHP2.0 PHP5.2
  • 6.
    CakePHP History CakePHP1.3Stable Release(1.5 year) Thanks a lot, Cakephp Team! Contribution Code Ticket/Patch Document / Translation Donation
  • 7.
  • 8.
  • 9.
    CakePHP Donation Editprofile(paypal email address) after login.
  • 10.
  • 11.
    CakePHP Donation 寄付は$5 以上にした方が良いです。 Paypal 手数料が差し引かれるので。
  • 12.
  • 13.
  • 14.
  • 15.
    Topic CakePHP HistoryCakePHP1.3 Resources CakePHP1.3 New Features CakePHP1.3 Migration
  • 16.
    CakePHP1.3 Resources CakephpCore Code よく分からない場合はコードを見た方が早い http ://github.com/cakephp/cakephp API マニュアル 各クラスの説明、メソッドの説明 ここにしか書いていない情報もある http://api.cakephp.org Cake CookBook Cake の解説、チュートリアル 英語版と日本語版の不整合に注意 http ://book.cakephp.org/view/875/x1-3-Collection
  • 17.
  • 18.
    Topic CakePHP HistoryCakePHP1.3 Resources CakePHP1.3 New Features CakePHP1.3 Migration
  • 19.
    CakePHP1.3 New FeaturesRoutes Virtual Fields Validation Bake etc http://book.cakephp.org/ja/view/1572/New-features-in-CakePHP-1-3
  • 20.
    CakePHP1.3 New FeaturesRoutes Prefix Routing Admin ルーティングと同じ扱いに RouteClass ルーティング処理マッチング時に自作クラス呼び出し DB の値を見てマッチング処理を行うなど 例 1: 該当の slug が DB にあれば routing する 例 2: url の一部変更でリダイレクト
  • 21.
    CakePHP1.3 New FeaturesRouteClass config/routes.php http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp App::import('Lib', 'routes/SlugRoute'); Router::connect( '/:slug', array('controller' => 'posts', 'action' => 'view'), array('routeClass' => 'SlugRoute') );
  • 22.
    CakePHP1.3 New FeaturesRouteClass app/libs/routes/slug_route.php http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp class SlugRoute extends CakeRoute { function parse($url) { $params = parent::parse($url); App::import('Model', 'Post'); $Post = new Post(); $count = $Post->find('count', array('conditions' => array('Post.slug LIKE ?' => $params['slug'] .'%')); if ($count) { return $params;} return false; }}
  • 23.
    CakePHP1.3 New FeaturesVirtual Fields DB カラムを仮想定義して、 Field として扱える Field で表示する内容は SQL 文で定義 例: fullname カラムに姓名を表示 'fullname' => “CONCAT(User.Fname, ' ', User.Lname)” 参考:「 VitualFields を使おう!」 hiromi2424 さん http://d.hatena.ne.jp/hiromi2424/20100204/1265274976
  • 24.
    CakePHP1.3 New FeaturesValidation マルチバイト対応 maxLength() などは mb_strlen() を利用 mb_strlen() が定義されてなければマルチバイトクラスの Multibyte::strlen() を利用 国別のルールを適用 Phone, postcode, SSN 国別のマッチングルールを適用可能 例:日本の postcode なら 222-3333 というルール http://github.com/cakephp/localized
  • 25.
    CakePHP1.3 New FeaturesValidation 国別のルール適用例 // In your Model App::import('Lib', 'Localized.JpValidation' ); class Post extends AppModel { var $validate = array( 'postal' => array( 'valid' => array( 'rule' => array('postal', null, ' jp '), 'message' => ' 郵便番号が違います ' ) ) );}
  • 26.
    CakePHP1.3 New FeaturesBake テンプレート コントローラやモデルの雛形を容易にカスタマイズ cake/console/templates/default 例 : 確認画面の処理を含む bake など Bake fixture Fixture のみを生成 ダミーデータや実 DB データをセット可能 bake fixture -records で実 DB データセット
  • 27.
    CakePHP1.3 New Features他にも色々新機能があります JsHelper Jquery, Prototype, Mootools を透過的に扱う $js->get('#foo')->event('click', $eventCode); Helper::assetTimestamp($path) CSS や画像の URL にタイムスタンプ追加 App::import(' Lib ', 'fooBar'); imports app/ libs /foo_bar.php Validation::ip($someAddress, 'IPv4'); //IPv6 もあるよ
  • 28.
    CakePHP1.3 New Featuresより詳細な情報は New features in CakePHP 1.3 参照 CakeBook 11.2 章 付録 日本語 http://book.cakephp.org/ja/view/1572/New-features-in-CakePHP-1-3 英語 http://book.cakephp.org/view/1572/New-features-in-CakePHP-1-3
  • 29.
    Topic CakePHP HistoryCakePHP1.3 Resources CakePHP1.3 New Features CakePHP1.3 Migration
  • 30.
    CakePHP1.3 Change from1.2 Helper, Component の自動読み込み廃止 Session, html ヘルパー、 Session コンポーネント del() は delete() に $this->Session->delete(); Model->delete(); View Helper 呼び出し $this->Helper->method() $this->element() (renderElement() の廃止 ) echo $this->Session->flash();
  • 31.
    CakePHP1.3 Change from1.2 タイトル Controller::pageTitle 廃止 $this->set('title_for_layout', $var); SQL ダンプ表示は Layout に下記必須 <?php echo $this->element('sql_dump'); ?> Find findAll は、 find('all') に
  • 32.
    CakePHP1.3 Change from1.2 Bootstrap フォルダ構成を自由に定義可能 plugin, model, view, controller, datasource, behavior, component, helper, vendor, shell, locale 複数 Path 定義可能 App::build(array( 'plugins' => array('/full/path/to/plugins/', '/next/full/path/to/plugins/'), 'models' => array('/full/path/to/models/', '/next/full/path/to/models/'), 'controllers' => array('/full/path/to/controllers/', '/next/full/path/to/controllers/'), 'behaviors' => array('/full/path/to/behaviors/', '/next/full/path/to/behaviors/'), 'helpers' => array('/full/path/to/helpers/', '/next/full/path/to/helpers/'), ));
  • 33.
    Migration CakePHP1.2 to1.3 より詳細な情報はマイグレーションガイドを参照 CakeBook の 11.1 章 付録 英語 http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3 日本語 http://book.cakephp.org/ja/view/1561/Migrating-from-CakePHP-1-2-to-1-3 使用しない方が良い / できないメソッド等の一覧 (MASA-P) http://blog.ecworks.jp/archives/1120
  • 34.
    まとめ CakePHP HistoryCakePHP1.3 Resources CakePHP1.3 New Features Routes, Model, Validation, Bake CakePHP1.3 Migration はまったらすぐにマイグレーションガイド
  • 35.