【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を使用しているプロジェクトも多いですが、バージョンアップはもちろんの事、常に新バージョンの動向は見守っていきたいですね。