【CakePHP3.x】気付いたらソースコードが非推奨ばかりになってた話

みなさんこんにちは
皆さま年末年始はいかがお過ごしでしたでしょうか?
夜遅く家に帰り、年越しそばを茹でていたら年を越していたyamashitaです。
本年もよろしくお願い致します。

さて皆さま、新年のご挨拶と一緒にシーブレイン社員で次の年号を予想してみました。
是非ご覧ください。
平成31年 新年特別企画 新元号予想選手権

話は変わりますが、恥かしながらCakePHP2.xやWordPressにうつつを抜かしている間にCakePHP3.xの仕様に置いて行かれてました。
単純な事ですが、CakePHP3.xで気づいたら非推奨になってた機能を一部紹介したいと思います。

簡易的な例のコード

上の元号予想の投票機能はJSONでやり取りをして動いてます。
投票時にwebページ側から投票データを管理しているサーバーにリクエストを送りますがその時の形式チェックで使ってました。

public function index($name = null) {
    // リクエストがputなら投票データを返す
    if (!$this->request->is('put')) {
        $this->viewClass = 'Json';
        $json = $this->getTouhyouData();
        $this->set(compact('json'));
    } else {
        // 
        $this->response->statusCode(404);
        $this->set('json', []);
    }
    $this->set('_serialize', 'json');
}

これだとCakePHP3.xで多くの非推奨のメッセージを受け取ることになります。

$this->response->statusCode()

こちらはCakePHP3.4.0から非推奨です。
今までは
$this->response->statusCode(404);
のように設定していましたが、
今は
$this->response->withStatus(404);
とします。
また取得の際には$this->response->getStatusCode();を使用します。

$this->viewClass

こちらはCakePHP3.1.0から非推奨です。
とんでもない浦島感です。
今まで
$this->viewClass = "json";
としてjson形式である事を指定していましたが
$this->viewBuilder()->setClassName("json")
と書くようになりました。

言いたいこと

プロジェクトとプロジェクトの間に以下のページを読みました。
CakePHP 3.7 Migration Guide
見知った機能やよく使いそうな機能がガッツリDeprecations(非推奨)になっていたので昨年のご挨拶のコードを見たら案の定といった感じでした。
まだ非推奨となっているだけで動きますが、These features will continue to function until 4.0.0 after which they will be removed.という記述もあるように、多くの機能がCakePHP4.0からは動かなくなることが考えられます。

弊社では長いプロジェクトだとまだCakePHP2.xやPHP5.xを使用しているプロジェクトも多いですが、バージョンアップはもちろんの事、常に新バージョンの動向は見守っていきたいですね。

Source: SEO