PHP Refactoring Browser2013/04/22@第67回PHP勉強会LT@shimooka
まずは・・・• 株式会社Engine Yardさん、会場提供ありがとうございます。• @yandoさん、@MugeSoさん、企画ありがとうございます。
自⼰紹介• id:shimookaです• PHP歴だけは⻑い⽅です• サイトとかblogとか– http://www.doyouphp.jp/– hatena shimooka– mixi id=2905457– twitter @shimoo...
時間がないのでいきなり本題
アジェンダ• Refactoringとは• PHP Refactoring Browserとは• デモ• まとめ
リファクタリングとは?
さっきやったので省略
PHP Refactoring Browserとは?
さっk(ry
内部構造• Symfony2のConsoleコンポーネント– ApplicationクラスとCommandクラス• リファクタリングクラス– 名前空間"QafooLabs¥Refactoring¥Application“– Commandクラス...
処理シーケンスの概要
HunkクラスとOperationインターフェース• Hunkクラス– 1つのHunk(塊)を表すクラス– ⾏番号と変更内容を管理• Operationインターフェース– HunkオブジェクトへのAPIを提供• PatchBuilderクラス–...
Hunkクラス※第1引数(int)は対象の⾏番号※第2引数はコード⽂字列(の配列)
Operationインターフェース
Operationの拡張はそんなに難しくない
例) Encapsulate Field• データを外部から隠蔽し、そのデータに対するアクセサを用意することで、データと振舞いを分離する– getter/setterメソッド+非publicなフィールド• Commandクラス– Encapsu...
デモ
まとめ• 発表資料とコード⼀式– https://github.com/shimooka/phpstudy-67– https://github.com/shimooka/php-refactoring-browser/tree/encapsu...
ありがとうございました
Upcoming SlideShare
Loading in …5
×

第67回PHP勉強会LT(その2)

2,376 views

Published on

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
2,376
On SlideShare
0
From Embeds
0
Number of Embeds
1,907
Actions
Shares
0
Downloads
3
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

第67回PHP勉強会LT(その2)

  1. 1. PHP Refactoring Browser2013/04/22@第67回PHP勉強会LT@shimooka
  2. 2. まずは・・・• 株式会社Engine Yardさん、会場提供ありがとうございます。• @yandoさん、@MugeSoさん、企画ありがとうございます。
  3. 3. 自⼰紹介• id:shimookaです• PHP歴だけは⻑い⽅です• サイトとかblogとか– http://www.doyouphp.jp/– hatena shimooka– mixi id=2905457– twitter @shimooka• 発表(と参加)は2年ぶり
  4. 4. 時間がないのでいきなり本題
  5. 5. アジェンダ• Refactoringとは• PHP Refactoring Browserとは• デモ• まとめ
  6. 6. リファクタリングとは?
  7. 7. さっきやったので省略
  8. 8. PHP Refactoring Browserとは?
  9. 9. さっk(ry
  10. 10. 内部構造• Symfony2のConsoleコンポーネント– ApplicationクラスとCommandクラス• リファクタリングクラス– 名前空間"QafooLabs¥Refactoring¥Application“– Commandクラスと1対1の関係• diffの⽣成– Hunkクラス• PHPコードのparse– PHP Token Reflection• https://github.com/Andrewsville/PHP-Token-Reflection– メソッドやフィールド定義の開始・終了⾏が取得できる
  11. 11. 処理シーケンスの概要
  12. 12. HunkクラスとOperationインターフェース• Hunkクラス– 1つのHunk(塊)を表すクラス– ⾏番号と変更内容を管理• Operationインターフェース– HunkオブジェクトへのAPIを提供• PatchBuilderクラス– Hunkオブジェクト郡(パッチ全体)を管理
  13. 13. Hunkクラス※第1引数(int)は対象の⾏番号※第2引数はコード⽂字列(の配列)
  14. 14. Operationインターフェース
  15. 15. Operationの拡張はそんなに難しくない
  16. 16. 例) Encapsulate Field• データを外部から隠蔽し、そのデータに対するアクセサを用意することで、データと振舞いを分離する– getter/setterメソッド+非publicなフィールド• Commandクラス– EncapsulateFieldCommandクラス• リファクタリングクラス– EncapsulateFieldクラス
  17. 17. デモ
  18. 18. まとめ• 発表資料とコード⼀式– https://github.com/shimooka/phpstudy-67– https://github.com/shimooka/php-refactoring-browser/tree/encapsulateFieldSpike
  19. 19. ありがとうございました

×