CakePHP - The point of upgrade
Upcoming SlideShare
Loading in...5
×
 

CakePHP - The point of upgrade

on

  • 1,952 views

 

Statistics

Views

Total Views
1,952
Views on SlideShare
1,758
Embed Views
194

Actions

Likes
3
Downloads
6
Comments
0

3 Embeds 194

http://mawatari.jp 156
https://twitter.com 36
https://si0.twimg.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

CakePHP - The point of upgrade CakePHP - The point of upgrade Presentation Transcript

  • CakePHPThe Point of Upgradefrom 1.3 to 2.x and for 3.x @slywalker (Yasuo Harada)
  • abou t me
  • @slywalker
  • follo @slywalker w me!
  • github.com/slywalker
  • forkgithub.com/slywalker m e!
  • TwitterBootstrap Plugingithub.com/slywalker/TwitterBootstrap
  • TwitterBootstrap Plugingithub.com/slywalker/TwitterBootstrap r s ★ s t a 8 2 1
  • 題 お本 日 CakePHP の1.3 2.x から への 移行ガイド そして 3.x へ...
  • ok book.cakephp.org/2.0/ja/ kb o appendices.htmlCo o ここを読んでもらったら終わってしまう話なんですが…
  • 要 Cookbookには 書いていない 経験から学んだ点 ←をお届け
  • これが基本だ一日にして成らず将来に備えて
  • 柔道で言えば受身これが基本だ
  • 1.3 から 2.x へ★ ディレクトリ構造、ファイル名およびクラス名の変更★ __() → echo __() $html->link() → $this->Html->link()★ 廃止されたグローバル関数や定数★ cakeError → 例外処理★ $this->data → $this->request->data★ Componentクラスの継承元 Object → Component★ Configure::read() → Configure::debug(debug)
  • 結構これって面倒くさいですよねぇ…そこはCakePHPのコアデベロッパーさすがです!
  • 便利な道具があるんです!
  • Up便利な道具が grad e shあるんです!l el
  • まぁ、コアデベロッパー自身が多くのCakePHP製の案件を抱えてるでしょうから当然でしょう。
  • Usage: Console/cake upgrade -hcake upgrade [subcommand] [-h] [-v] [-q]Subcommands:all Run all upgrade commands.tests Update tests class names to FooTest rather than FooTestCase.locations Move files and folders to their new homes.i18n Update the i18n translation method calls.helpers Update calls to helpers.basics Update removed basics functions to PHP native functions.request Update removed request access, and replace with $this->request.configure Update Configure::read() to Configure::read(debug)constants Replace Obsolete constantscomponents Update components to extend Component class.exceptions Replace use of cakeError with exceptions.
  • だいたいのことは Upgrade u pgra de a ll shell ke この人が書いたよ /ca n sole @ichikawayCo詳しく載ってます!
  • 会場には筆者の方々が来られています。懇親会のときにグリグリ突っ込んだ質問を皆さんしてみましょう。
  • Upgradeshellでできないこと?
  • 要.htaccess 書core.php 換bootstrap.phpindex.php
  • 基本的にはコピペでいけます。ここらへんのファイルをグリグリいじってしまった方はご愁傷様です。
  • 特にややこしいことをしていないアプリケーションだったら、Upgrade shellとファイルのコピペで動くようになります。
  • すごいですね
  • ちなみに先ほどの「ややこしいこと」とはSecurityComponentAuthComponentなど使っていると、要修正です。
  • このへんの修正は、Upgrade shellのあとエラーを潰していく感じです。CookbookとかAPI見ながらとか…
  • 一日にして成らずやっぱり手間やん…
  • Up gradeその前に!
  • 1.3本当に最新のコード?
  • 良く 悪く も も後方互換がしっかりしてる
  • 知らずしらずのうちに時代遅れのコードを書いていることがよくあります。(だってそれで動くんだもの…)
  • 例えば find$articles = $this->Article->find( all, array( conditions => array( Article.status => enable ) 1.3 2.x ));
  • Model::find( $conditions = null,1.3 $fields = array(), $order = null, $recursive = null )
  • 懐かしい引数たちです。null,nullフレームワークと呼ばれていた頃の名残です。
  • Model::find(2.x $type = first, $query = array() )
  • 見事にバッサリとキレイになってますね。メジャーバージョンが上がると非推奨の部分はこのように切り捨てられます。
  • Folder::mkdir()Folder::mv()Folder::ls() 非 1.3 推Folder::cp()Folder::rm() 奨Set::isEqual()String::getInstance()CakeSession::del()
  • この他にも、引数が変更になったり新しいオプションが増えたりしています。
  • 今まで面倒くさかったりそもそも、できなかったことがコッソリと簡単にできるようになっていることは、よくあることです。
  • 非推奨 1.3を全てなくす!コード
  • 来たるべき将来に備えて
  • te d aこれまでの説明で e cアップグレードの r 重要な点がe pお解りいただけた でしょうか?
  • 非推奨が出てくるタイミング2.2.3 バグフィックス 機能の追加改良・非推奨の追加PHPのバージョンサポート変更・ 非推奨のサポート停止
  • 1.x系はグダグダでしたが2.x系はこのポリシーがしっかりと守られているようです。
  • すでに2.0の段階で非推奨になってしまったかわいそうなクラスもあります。
  • 非 推EmailComponent 奨CakeEmail
  • CakeEmail<?phpApp::uses(CakeEmail, Network/Email);$email = new CakeEmail();$email->template(welcome, fancy) ->emailFormat(both) ->to(bob@example.com) ->from(app@domain.com) ->send();
  • コンポーネント形式ではなく、ライブラリ形式で提供されるようになりました。チェーンメッソドなモダンなつくりになっています。ShellやModelの中でも使いやすくなりました。
  • 2.x もうすぐ 非推奨 ?
  • 正式に非推奨のアナウンスはありませんが、今後そうなりそうなものもいくつか見受けられます。
  • 非推RequestHandler 奨かComponent ?CakeRequest
  • <?php$this->RequestHandler->isAjax();$this->request->is(ajax);$this->request->isAjax();$this->RequestHandler->isPost();$this->request->is(post);$this->request->isPost();$this->RequestHandler->isSSL();$this->request->is(ssl);$this->request->isSsl();
  • RequestHandlerでできることで、CakeRequestでできるものがあれば、今のうちに変更しておいたほうがいい。RequestHandler自体はなくならないと思います。ちゃんと独立した役割を持ってるので。
  • Cake 超便利 $this->requestRequest
  • CakeRequest<?php// 1.x$this->params[controller];// 2.x$this->request->controller; オススメ$this->request[controller];$this->request->params[controller];
  • CakeRequest<?php// Passed arguments// 1.x$this->params[pass];// 2.x$this->request->pass; オススメ$this->request[pass];$this->request->params[pass];
  • CakeRequest<?php// named parameters// 1.x$this->params[named];// 2.x$this->request->named; オススメ$this->request[named];$this->request->params[named];
  • CakeRequest<?php// url is /posts/index?page=1&sort=title// 1.x$this->params[url][page];// 2.x$this->request[url][page];$this->request->query[page];$foo = $this->request->query(not_exist);// $foo === null オススメだが、まだ実装されてない
  • CakeRequest<?php// 1.x$value = $this->data[Post][title];// 2.x$value = $this->request->data[Post][title];$value = $this->request->data(Post.title);$foo = $this->request->data(not_exist);// $foo === null$this->request->data(Post.title, New post) ->data(Comment.1.author, Mark);
  • メソッドが実装されているものはそれを使ったほうが後々よさそうな雰囲気です。3.xはオブジェクトObjectしたフレームワークになりそうですね。2.xも徐々にその方向で準備されていくと思います。
  • (業務連絡: 〆の話をお願いします。)
  • 質問ありますか?
  • 聴いて頂いてありがとうございました!