2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Phalconのバージョンアップ対応についてざっくりまとめ

Last updated at Posted at 2020-05-13

はじめに

筆者はPHP歴1年半、Phalcon歴1ヶ月程度のひよっこです。
記事は調査した上で実際に手を動かして検証した内容にしていますが、もしかしたら誤りがあるかもしれません。
その際は遠慮なくご指摘ください!

Phalconとは?

PHPの軽量フレームワークで、メジャーなPHPフレームワークでは最速レベルのようです。
理由はフレームワークの本体がC言語 or Zephirで書かれているPHP拡張モジュールだからです。
MVCモデルでフルスタックフレームワークでもありますが、ディレクトリ構造のしばりがゆるくて自由な実装が可能です。
その分玄人向けで、日本語情報も少ないので学習コストは高めのようです。

1系~3系と4系以降の違い

バージョンアップ時に大事なのが後方互換性です。
メジャーバージョンが同じである場合は確実な後方互換性があるようです。
メジャーバージョンは変わっていますが、1系~3系は後方互換性が高いです。
4系以降とそれ以前はかなり仕様が変わっていて、1系~3系から4系以降にバージョンアップする場合はある程度大きな改修になることを覚悟したほうが良さそうです。

Phalconのインストール方法

いくつかインストール方法はありますが、一番楽なのはpeclコマンドを用いた方法です。

$ pecl channel-update pecl.php.net
$ pecl install phalcon

peclコマンドだと最新バージョンが指定されるので、バージョンを指定する場合はGit経由でソースを取得してビルドする必要があります。

$ yum -y install git
$ git clone git://github.com/phalcon/cphalcon.git \
$ cd cphalcon/build \
$ git checkout 3.4.x \
$ ./install

フレームワークの有効化

PHP拡張モジュールなので、他の拡張モジュールと同じ場所に配置されます。
php.ini等で読み込んであげる必要があります。

phalcon.ini
extension=psr.so
extension=phalcon.so

コードを修正

参考資料

  1. 公式ドキュメント
    王道ですね。
    Phalconは公式が複数言語のドキュメントを提供しており、日本語も対応してます。
    が、有志による翻訳作業のようで一部英語だったり、ページよってはほとんど英語の場合も…。
    その場合はGoogle翻訳などで頑張りましょう。
    公式ページを見る限りVer3.4とVer4.0のドキュメントがありますが、多少バージョン違いでも参考にできると思います。
    また、新・旧の変更内容についてはリリースノートが参考になります。
    4系へのアップグレードガイドもあるようです。

  2. Google先生
    困ったときのGoogle先生ですが、Phalconについては日本語で検索するとあまり情報が出てきません。
    まずは公式ドキュメントで関連する箇所の仕様を把握した上で、英語情報も積極的に対象に含めつつ調べたほうが良さそうです。

静的解析

多くの場合、PhalconだけでなくPHPのバージョンアップを伴うと思います。
そういった場合は、PHPStanなどの静的解析ツールを使用すると修正が必要な箇所を洗い出しできます。
PHPStanを実行するPHPがPhalconのPHP拡張モジュールを読み込んだ状態で実行すれば、フレームワーク部分の処理は認識してくれるみたいです。
※私はオートロードを上手く解決できなかったのでPHPStanでの解析は諦めました…

デバッグ

強引ですが最終的に確実なのは、アプリケーションを動かしながらエラーを潰していく方法です。
Xdebugを導入したり、PHPのエラー出力(display_errors・error_reportingなどの指定)範囲をできるだけ低くしてみるのが手っ取り早いと思います。
事前に調査・解析して修正しても最終的には動作検証は必要でしょう。
テストコードがちゃんと書かれている場合はもっと楽できるかもしれませんね。

バージョンアップでエラーになりがちだった箇所

私はPhalcon 1系 → 3系、PHP 5.3 → 7.3へのバージョンアップを行いました。
Phalconの処理でエラー(実際には警告レベルも含む)になった箇所は、非推奨になったメソッドやForm系のクラスの挙動が微妙に変わっててハマったぐらいです。(いまだに細かい仕様は理解できてないですが…)
非推奨になった箇所は代替が全て存在していたので公式ドキュメントを読んで置き換えていくだけでした。

PHP5.3 → PHP 7.3に上がったことによって今まで顕在化しなかったバグの修正のほうがはるかに多かったです…。

おわり

ざっくりした内容になってしまいましたが参考になれば嬉しいです。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?