Slide 1

Slide 1 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Forteeを バージョンアップしてみた https://www.lancers.jp/ Yuki Kanazawa

Slide 2

Slide 2 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Speaker Biography 2 Yuki Kanzawa Lancers, Inc. / Site Reliability Engineer (2013/11 -) Live in Tokyo, Japan Github:yKanazawa Twitter: @yakitori009 Language: C++, Java, PHP, Go Hobby: Shogi(Japanese Chess)

Slide 3

Slide 3 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター About Lancers https://www.lancers.jp/ Genre: Crowdsourcing Start: 2008/4 PHP 5.2 → 5.3 → 5.6 → 7.3 CakePHP 1.2 → 1.3 → 2.8 → 2.10

Slide 4

Slide 4 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Upgrade History (https://www.lancers.jp/) 1.3 -> 2.8 2.8 -> 2.10 2.10 -> 3.x .. more 5.3 -> 5.6 5.6 -> 7.3 -> PHP5.6 requires 2017/6/6 2 months 1.7 year 2019/2/5 1.8 month 2019/3/27 2019/3/28 1 day 2019/5/28 2 months CakePHP2.10 requires PHP7.3 requires

Slide 5

Slide 5 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 2019/11/9 CakeFest2019開催 5 ●CakeFest Conferenceに登壇 ○テーマ:「CakePHP3への滑らかなバージョンアップを考える

Slide 6

Slide 6 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Forteeの構成

Slide 7

Slide 7 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター foteeのサーバー構成 php-cli smtp DB 3306 web ディレクトリ 共有 SQLクライアント 開発環境(エディタ) PHP 7.2 CakePHP 3.5 MySQL 5.7 WWWブラウザ 80

Slide 8

Slide 8 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 開発環境のセットアップ

Slide 9

Slide 9 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 開発環境 ●セットアップ手順 ●Windows環境で動かない ○Docker for Windows ○git for Windows ■makeコマンドがない ●Make for Windowsをインストール ■Cypressが動かない ●結局Macを使うことに。。。 git clone https://github.com/hasegawa-tomoki/fortee.git cd fortee cp config/.env.local config/.env make up make install make migrate docker-compose run web bin/cake records import all

Slide 10

Slide 10 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター テスト環境 ●PHPUnit ●Cypress ○E2Eテスト環境 % make test ... ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%) I.IIIIIIIII.IIIIIIIII 86 / 86 (100%) ... FAILURES! Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6. make: *** [test] Error 1

Slide 11

Slide 11 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター composer update

Slide 12

Slide 12 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター composer update - Updating symfony/filesystem (v3.4.11 => v4.3.8): Downloading (100%) - Updating symfony/config (v3.4.11 => v3.4.35): Downloading (100%) - Updating theseer/tokenizer (1.1.0 => 1.1.3): Downloading (100%) - Updating myclabs/deep-copy (1.8.1 => 1.9.3): Downloading (100%) - Updating friendsofcake/bootstrap-ui (1.4.0 => 1.4.1): Downloading (100%) - Updating twig/twig (v1.35.3 => v1.42.4): Downloading (100%) - Updating ajgl/breakpoint-twig-extension (0.3.1 => 0.3.4): Downloading (100%) - Updating wyrihaximus/twig-view (4.3.4 => 4.3.5): Downloading (100%) - Updating symfony/process (v3.4.11 => v4.3.8): Downloading (100%) - Updating symfony/finder (v3.4.11 => v4.3.8): Downloading (100%) - Updating seld/jsonlint (1.7.1 => 1.7.2): Downloading (100%) - Updating justinrainbow/json-schema (5.2.7 => 5.2.9): Downloading (100%) - Installing composer/xdebug-handler (1.4.0): Downloading (100%) - Updating composer/spdx-licenses (1.4.0 => 1.5.2): Downloading (100%) - Updating composer/semver (1.4.2 => 1.5.0): Downloading (100%) - Updating composer/ca-bundle (1.1.1 => 1.2.4): Downloading (100%) - Updating composer/composer (1.6.5 => 1.9.1): Downloading (100%) - Updating m1/env (2.1.1 => 2.1.2): Downloading (100%) - Removing seld/cli-prompt (1.0.3) - Removing doctrine/lexer (v1.0.1) - Removing doctrine/inflector (v1.2.0) - Removing doctrine/collections (v1.4.0) - Removing doctrine/annotations (v1.4.0) - Removing doctrine/common (v2.7.3) - Updating cakephp/plugin-installer (1.1.0 => 1.1.1): - Updating paragonie/random_compat (v2.0.15 => v2.0.18): Downloading (100%) - Installing ralouphie/getallheaders (3.0.3): Downloading (100%) - Updating guzzlehttp/psr7 (1.4.2 => 1.6.1): Downloading (100%) - Updating guzzlehttp/guzzle (6.3.3 => 6.4.1): Downloading (100%) - Updating league/oauth2-client (2.3.0 => 2.4.1): Downloading (100%) - Updating symfony/polyfill-mbstring (v1.8.0 => v1.12.0): Downloading (100%) - Updating symfony/polyfill-ctype (v1.11.0 => v1.12.0): Downloading (100%) - Updating symfony/dom-crawler (v3.4.11 => v4.3.8): Downloading (100%) - Updating symfony/css-selector (v3.4.11 => v4.3.8): Downloading (100%) - Updating symfony/browser-kit (v3.4.11 => v4.3.8): Downloading (100%) - Updating fabpot/goutte (v3.2.2 => v3.2.3): Downloading (100%) - Installing markbaker/matrix (1.2.0): Downloading (100%) - Installing markbaker/complex (1.4.7): Downloading (100%) - Updating phpoffice/phpspreadsheet (1.3.1 => 1.9.0): Downloading (100%) - Updating phpoffice/phpexcel (1.8.1 => 1.8.2): Downloading (100%) - Updating react/promise (v2.7.0 => v2.7.1): Downloading (100%) - Updating mpyw/cowitter (v1.0.3 => v1.0.5): Downloading (100%) - Updating fzaninotto/faker (v1.8.0 => v1.9.0): Downloading (100%) - Updating doctrine/cache (v1.6.2 => 1.9.1): Downloading (100%) - Installing doctrine/event-manager (1.1.0): Downloading (100%) - Updating doctrine/dbal (v2.5.13 => v2.10.0): Downloading (100%) - Updating lapaz/quick-brown-fox (0.1.2 => 0.1.3): Downloading (100%) - Updating symfony/yaml (v3.4.17 => v3.4.35): Downloading (100%) - Installing symfony/polyfill-php72 (v1.12.0): Downloading (100%) - Updating symfony/var-dumper (v3.4.11 => v4.3.8): Downloading (100%) - Updating zendframework/zend-diactoros (1.7.2 => 1.8.7): Downloading (100%) - Updating psr/log (1.0.2 => 1.1.2): Downloading (100%) - Updating cakephp/chronos (1.1.4 => 1.2.8): Downloading (100%) - Updating cakephp/cakephp (3.5.17 => 3.5.18): Downloading (100%) - Updating fusic/encount (2.0.5 => 2.0.9): Downloading (100%) - Updating jakub-onderka/php-console-color (0.1 => v0.2): Downloading (100%) - Updating jakub-onderka/php-console-highlighter (v0.3.2 => v0.4): Downloading (100%) - Updating nikic/php-parser (v4.0.2 => v4.3.0): Downloading (100%) - Updating symfony/debug (v3.4.11 => v4.3.8): Downloading (100%) - Updating symfony/console (v3.4.11 => v3.4.35): Downloading (100%) - Updating psy/psysh (v0.9.6 => v0.9.9): Downloading (100%) - Updating squizlabs/php_codesniffer (3.3.0 => 3.5.2): Downloading (100%) - Updating cakephp/cakephp-codesniffer (3.0.5 => 3.1.2): Downloading (100%) - Updating doctrine/instantiator (1.2.0 => 1.3.0): Downloading (100%) - Updating sebastian/exporter (3.1.0 => 3.1.2): Downloading (100%) - Updating webmozart/assert (1.4.0 => 1.5.0): Downloading (100%) - Updating phpdocumentor/reflection-common (1.0.1 => 2.0.0): Downloading (100%) - Updating phpdocumentor/type-resolver (0.4.0 => 1.0.1): Downloading (100%) - Updating phpdocumentor/reflection-docblock (4.3.0 => 4.3.2): Downloading (100%) - Updating phpspec/prophecy (1.8.0 => 1.9.0): Downloading (100%)

Slide 13

Slide 13 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHPUnit ●正常終了 ○Twitterのテストだけスルー % make test ... ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%) I.IIIIIIIII.IIIIIIIII 86 / 86 (100%) ... FAILURES! Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6. make: *** [test] Error 1

Slide 14

Slide 14 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Cypress ●正常終了

Slide 15

Slide 15 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター CakePHP3.5 -> CakePHP3.6

Slide 16

Slide 16 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 修正内容 ●composer.jsonの修正 ●composer update Downloading (100%) - Updating cakephp/migrations (1.7.2 => 1.8.1): Downloading (100%) - Updating cakephp/debug_kit (3.14.2 => 3.16.7): Downloading (100%) - Updating wyrihaximus/twig-view (4.3.5 => 4.3.8): Downloading (100%) - Updating cakephp/bake (1.6.4 => 1.8.7): Downloading (100%)

Slide 17

Slide 17 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHPUnit Encount¥Error¥EncountErrorHandler::handleError() - ROOT/vendor/fusic/encount/src/Error/EncountErrorHandler.php, line 22 deprecationWarning - CORE/src/Core/functions.php, line 311 Cake¥Core¥Plugin::routes() - CORE/src/Core/Plugin.php, line 306 Cake¥Core¥Plugin::routes() - CORE/src/Core/Plugin.php, line 310 include - ROOT/config/routes.php, line 326 Cake¥Routing¥Router::_loadRoutes() - CORE/src/Routing/Router.php, line 1170 Cake¥Routing¥Router::url() - CORE/src/Routing/Router.php, line 610 App¥Classes¥MisocaCore::__construct() - APP/Classes/MisocaCore.php, line 28 App¥Test¥TestCase¥Classes¥MisocaCoreTest::setUp() - ROOT/tests/TestCase/Classes/MisocaCoreTest.php, line 23 ... You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php ●正常終了 ○以下のdeprecationWarningが出力されるようになった

Slide 18

Slide 18 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Cypress 2019-11-17 18:43:12 Notice: Deprecated (16384): You no longer need to call `Plugin::routes()` after upgrading to use Http¥Server. See https://book.cakephp.org/3.0/en/development/application.html#adding-the-new-http- stack-to-an-existing-application for upgrade information. - /var/www/html/config/routes.php, line: 326 2019-11-17 18:43:18 Notice: Deprecated (16384): Accessing url as a property will be removed in 4.0.0. Use getPath() instead. - /var/www/html/src/Classes/UsersCore.php, line: 192 2019-11-17 18:43:20 Notice: Deprecated (16384): Router::parse() is deprecated. Use Router::parseRequest() instead. This will require adopting the Http¥Server library. - /var/www/html/src/Classes/UsersCore.php, line: 195 2019-11-17 18:43:20 Notice: Deprecated (16384): Response::type() is deprecated. Use setTypeMap(), getType() or withType() instead. - /var/www/html/src/Controller/AppController.php, line: 219 … ●正常終了 ○debug.logにNoticeが出力されるようになった

Slide 19

Slide 19 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 対策 ●CakePHP4で削除予定の機能にNoticeが出力される ○Config/app.php に出力しない設定を追加

Slide 20

Slide 20 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター CakePHP3.6 -> CakePHP3.7

Slide 21

Slide 21 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 修正内容 ●composer.jsonの修正 ●composer update Downloading (100%) - Updating cakephp/debug_kit (3.16.7 => 3.21.0): Downloading (100%) - Updating cakephp/bake (1.8.7 => 1.10.1): Downloading (100%)

Slide 22

Slide 22 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHPUnit ●正常終了 ○Twitterのテストだけスルー % make test ... ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%) I.IIIIIIIII.IIIIIIIII 86 / 86 (100%) ... FAILURES! Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6. make: *** [test] Error 1

Slide 23

Slide 23 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Cypress ●fortee.sponsor.spec.jsでテスト失敗 ○スポンサーグループの設定時

Slide 24

Slide 24 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Cypress ●error.log ●以下のcontainをコメントアウトすれば発生しない。。。 ○スポンサープラングループ(親要素)をselect ○ついでに子要素(スポンサープラン)をselect ■そのorderを取得する処理 public function index() { $sponsorPlanGroups = $this->SponsorPlanGroups->find() // ->contain(['SponsorPlans' => function (¥Cake¥ORM¥Query $q) { // return $q->where(['SponsorPlans.sort' => 'asc']); // }]) ->where(['SponsorPlanGroups.conference_id' => $this->activeConference->id]) ->order(['SponsorPlanGroups.sort' => 'asc']); $this->set(compact('sponsorPlanGroups')); } Error: [InvalidArgumentException] Cannot convert value of type `string` to integer

Slide 25

Slide 25 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 修正内容 ●containの修正

Slide 26

Slide 26 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター CakePHP3.7 -> CakePHP3.8

Slide 27

Slide 27 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 修正内容 ●composer.jsonの修正 ●composer update Package operations: 0 installs, 2 updates, 0 removals - Updating cakephp/cakephp (3.7.9 => 3.8.6Loading from cache - Updating cakephp/bake (1.10.1 => 1.11.2): Loading from cache

Slide 28

Slide 28 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHPUnit ●正常終了 ○Twitterのテストだけスルー % make test ... ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%) I.IIIIIIIII.IIIIIIIII 86 / 86 (100%) ... FAILURES! Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6. make: *** [test] Error 1

Slide 29

Slide 29 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Cypress ●正常終了

Slide 30

Slide 30 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHP7.2 -> PHP7.3

Slide 31

Slide 31 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 修正内容 ●Dockerfileの修正 ○libzip-devのインストールが必要になった configure: error: Please reinstall the libzip distribution

Slide 32

Slide 32 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHPUnit ●正常終了 ○Twitterのテストだけスルー % make test ... ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%) I.IIIIIIIII.IIIIIIIII 86 / 86 (100%) ... FAILURES! Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6. make: *** [test] Error 1

Slide 33

Slide 33 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Cypress ●正常終了

Slide 34

Slide 34 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター deprecatedライブラリの 置き換え

Slide 35

Slide 35 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Composerのdeprecatedライブラリ ●mpyw/twistoauth ○Use mpyw/cowitter instead ●phpoffice/phpexcel ○Use phpoffice/phpspreadsheet instead ●phpunit/phpunit-mock-objects ○No replacement was suggested Package mpyw/twistoauth is abandoned, you should avoid using it. Use mpyw/cowitter instead. Package phpoffice/phpexcel is abandoned, you should avoid using it. Use phpoffice/phpspreadsheet instead. Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.

Slide 36

Slide 36 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Composerのdeprecatedライブラリ ●mpyw/twistoauth ○Use mpyw/cowitter instead ■cowitterに置き換え

Slide 37

Slide 37 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Composerのdeprecatedライブラリ ●phpoffice/phpexcel ○Use phpoffice/phpspreadsheet instead ■既に移行済だったので削除 ●移行例

Slide 38

Slide 38 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Composerのdeprecatedライブラリ ●phpunit/phpunit-mock-objects ○No replacement was suggested ■PHPUnitをバージョンアップすれば消えそう

Slide 39

Slide 39 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター CakePHP3.8 -> CakePHP4.0

Slide 40

Slide 40 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター CakePHP4のインストール "require": { "php": ">=7.2", "cakephp/cakephp": "4.x-dev", "cakephp/plugin-installer": "^1.0", "mobiledetect/mobiledetectlib": "2.*" }, "require-dev": { "cakephp/bake": "4.x-dev", "cakephp/cakephp-codesniffer": "dev-next", "cakephp/debug_kit": "4.x-dev", "cakephp/migrations": "4.x-dev", "josegonzalez/dotenv": "3.*", "phpunit/phpunit": "^8.0", "psy/psysh": "@stable" }, ●依存関係が複雑 ○https://github.com/cakephp/app/blob/4.x/composer.json をベースにcompser.json作り直し ○CakePHP4に対応してなかったライブラリ "adayth/cakephp-cipher-behavior": "^1.0", "fusic/encount": "^2.0", "pgbi/cakephp3-soft-delete": "^1.3", "sizuhiko/cake_fabricate": "^0.2.2"

Slide 41

Slide 41 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター CakePHP4.0 Upgrade Guide https://book.cakephp.org/4/en/appendices/4-0-upgrade-guide.html

Slide 42

Slide 42 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター CakeFestのMark Storyのセッション https://www.slideshare.net/markstory/safer-more-helpful-cakephp

Slide 43

Slide 43 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター ctpファイルのphp化 ●CakePHP4からctpがphpになる ●Templateディレクトリの位置が変わる ○appと同じ階層になる

Slide 44

Slide 44 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター CakePHP4対応 ●CakePHP4で削除される機能の対応 ○E_USER_DEPRECATEDを復活させる

Slide 45

Slide 45 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター CakePHP Upgrade toolを使う ●CakePHP Upgrade tool ○https://github.com/cakephp/upgrade ■4.xブランチに切り替え ●実行 ○/src/Template → /templates に移動 ○ctp → phpに変更 root@localhost:~/upgrade# ./bin/cake filename locales /var/www/html … root@localhost:~/upgrade# ./bin/cake templates locales /var/www/html Moving sub directories of /var/www/html/templatesfatal: source directory is empty, source=templates/Layout/Email, destination=templates/Layout/email_fatal: bad source, source=templates/Layout/email_, destination=templates/Layout/email/email_fatal: source directory is empty, source=templates/Element/Flash, destination=templates/Element/flash_fatal: bad source, source=templates/Element/flash_, destination=templates/Element/flash/flash_ …

Slide 46

Slide 46 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Rectorを使う ●https://github.com/rectorphp/rector ○CakePHP4でないと動かない ■PHPUnit 8.4以上を要求する ●インストール

Slide 47

Slide 47 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター Rectorを使う ●実行 ○失敗。ここで時間切れ。。。 root@localhost:/var/www/html# ./bin/cake upgrade rector src/ [27-Nov-2019 17:46:37 Asia/Tokyo] PHP Fatal error: Declaration of App¥Application::middleware($middlewareQueue) must be compatible with Cake¥Http¥BaseApplication::middleware(Cake¥Http¥MiddlewareQueue $middleware): Cake¥Http¥MiddlewareQueue in /var/www/html/src/Application.php on line 30 Fatal error: Declaration of App¥Application::middleware($middlewareQueue) must be compatible with Cake¥Http¥BaseApplication::middleware(Cake¥Http¥MiddlewareQueue $middleware): Cake¥Http¥MiddlewareQueue in /var/www/html/src/Application.php on line 30

Slide 48

Slide 48 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHP7.3 -> PHP7.4

Slide 49

Slide 49 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHP7.4 ●PHP7.4 ○2019/11/28リリース ●php-7.4-apache コンテナ ○2019/11/29リリース ●修正内容 2 0 1 9 /1 1 /3 0 大改修!PHPレガシーコードビフォーアフター PHP7.4 ●PHP7.4 ○2019/11/28リリース ●php-7.4-apache コンテナ ○2019/11/29リリース ●修正内容

Slide 50

Slide 50 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 修正内容 ●Dockerfileの修正 ○ENV PHP_OPENSSL=yes の設定が必要になった ○libonig-devのインストールが必要になった

Slide 51

Slide 51 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHPUnit ●エラーが1つ増えた。。 ●imagecreatefromjpeg 関数が見つからない ○php-gdが正しく入っていない? % make test ... ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%) I.IIIIIIIII.IIIIIIIII 86 / 86 (100%) ... ERRORS! Tests: 87, Assertions: 99, Errors: 2, Failures: 1, Warnings: 3, Incomplete: 43, Risky: 6. make: *** [test] Error 2 There were 2 errors: 1) App¥Test¥TestCase¥Classes¥ForteeUtilTest::testCrop Error: Call to undefined function App¥Classes¥imagecreatefromjpeg() /var/www/html/src/Classes/ForteeUtil.php:118 /var/www/html/tests/TestCase/Classes/ForteeUtilTest.php:64 2) App¥Test¥TestCase¥Classes¥OctavCoreTest::testImport Error: Call to undefined function App¥Classes¥imagecreatefromjpeg()

Slide 52

Slide 52 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHPUnit ●phpunit-mock-objectsからdeprecated ○PHPUnit のバージョンアップが必要そう ■CakePHP3はPHPUnit 6からバージョンアップは不可 ●deprecatedは我慢するしかないかも Deprecated (8192) : Function ReflectionType::__toString() is deprecated [ROOT/vendor/phpunit/phpunit-mock-objects/src/Generator.php,

Slide 53

Slide 53 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター PHP7.4で表示されるNotice 'Error' => [ 'errorLevel' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED, ● config/app.php

Slide 54

Slide 54 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 最後に

Slide 55

Slide 55 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 会社概要

Slide 56

Slide 56 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター エンジニア採用してます! ●エントリーはこちら! ○https://www.wantedly.com/companies/lancers/projects

Slide 57

Slide 57 text

2019/11/30 大改修!PHPレガシーコードビフォーアフター 利用技術 React