Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP 升版絕活 - 給你一劑面對 Legacy 專案的還魂丹

PHP 升版絕活 - 給你一劑面對 Legacy 專案的還魂丹

在這份簡報中,我們將介紹 Legacy 專案有什麼特徵,該怎麼面對它,以及我們在面對 Legacy 專案的過程中所發生的故事,最後,我們會針對一些處理 Legacy 可以用到的小技巧作 Live Demo,如怎麼透過 xdebug trace PHP 底層程式、如何透過 PhpStorm 快速建立好物件及如何處理我們所面對的 Legacy Code。

簡報中使用的 Demo 如下:
https://github.com/mouson/20200722-jetbrians-phpstorm-demo

mouson(墨嗓)

July 22, 2020
Tweet

More Decks by mouson(墨嗓)

Other Decks in Programming

Transcript

  1. 參加這場 Webinar 的⽬的? • 1) 想知道怎麼處理 Legacy • 2) 想了解

    PhpStorm 可以帶來什麼幫助 • 3) 聖佑辦的參加就對了
  2. ⼤綱 • 1) Legacy Code ? • 2) 我們與 Legacy

    搏⾾的故事 • 3) Live Demo: 搭配 PhpStorm 處理 Legacy
  3. ⼤綱 • 1) Legacy Code ? • 2) 我們與 Legacy

    搏⾾的故事 • 3) Live Demo: 搭配 PhpStorm 處理 Legacy
  4. 怎麼處理 Legacy ? • ⾯對它 • 接受它 • 處理它 •

    放下它 REF: 重構或重寫 Legacy code 的幾個階段 https://jaceju.net/steps-of-refactoring-or-rebuilding/
  5. ⼤綱 • 1) Legacy Code ? • 2) 我們與 Legacy

    搏⾾的故事 • 3) Live Demo: 搭配 PhpStorm 處理 Legacy
  6. ⾯對它-概況 • Apache 1.3 • PHP 4.1.2 • 核⼼為使⽤ C

    編寫之 PHP Extension • PHP 程式碼超過 1,000 隻 PHP 程式 • Lines of Code 超過 20 萬(單 PHP 未計算前端程式) • 使⽤常⾒的商⽤資料庫
  7. 升級 PHP 7 - 處理它 • 導入 Code Review 原則

    • 導入持續整合並持續改善流程 • 以 TDD 的⽅法,重寫核⼼元件
  8. ⼤綱 • 1) Legacy Code ? • 2) 我們與 Legacy

    搏⾾的故事 • 3) Live Demo: 搭配 PhpStorm 處理 Legacy
  9. PhpStorm 使⽤概況 • macOS 10.15.6 • PhpStorm 2020.1.3 • 套件:ideavim

    • Brew 安裝之 PHP 7.4.6 • 已設定完成 XDebug
  10. Demo - Topic • 1) 透過 PHPUnit - Trace Laravel

    Eloquent • 2) 簡單的 TDD 步驟 • 3) 處理 Global Variable • Demo Git Repo: • https://bit.ly/3hkAmC0 • Question Branch: master • Sample Branch: demo
  11. Demo 01 • PHPUnit With XDebug trace Eloquent Blueprint Code

    • test code: • tests/Unit/Demo01EloquentTest.php
  12. Demo 02 • TDD with PhpStorm • test code: •

    tests/Unit/Demo02PhpUnitSampleTest.php • production code: • app/Calculator.php
  13. Demo 03-De Legacy Code • test code: • tests/Feature/Demo03RefactorExampleTest.php •

    production code: • app/Legacies/Demo03Example01.php • app/Legacies/Demo03Global01.php • app/Legacies/Demo03Global02.php • app/Legacies/Demo03Global03.php