OTOBANK Engineering Blog

オトバンクはコンテンツが大好きなエンジニアを募集しています!

symfony1.5を導入してみよう

おはこんばんちは!!
尾藤 a.k.a. BTO です。

symfony1

みなさん symfony 使ってますかー。
symfony1 まだ使ってますかー。

symfony1 のサポートが終了してから、2年が経とうとしています。 とはいえ、フレームワークのアップデートはコストがかかりすぎます。 symfony1 で始めたプロジェクトを、まだ symfony1 で運用しているサイトも多いのではないでしょうか。

そんなあなたに朗報です。 やはり同じ問題を抱えている人がいるらしく、有志が symfony1 の後継である symfony1.5 を開発してくれています!! それが今回紹介する LExpress/symfony1 です。

LExpress/symfony1 とは

symfony1 を fork して、最新のPHPでも使えるようにしてくれているものです。 最新バージョンは、1.5.3 になってます。

大きな特徴は次のようになります。

  • PHP5.5をサポート
  • composer対応
  • symfony2 ライクなDIコンテナ
  • 高速化
  • 新規の widget, validator を追加
  • 放置されてた不具合を修正

オッス!!オラ、ワクワクしてきたぞ!!

LExpress/symfony1 の導入

では、既存のプロジェクトに LExpress/symfony1 を導入しましょう。

注意: 新規プロジェクトは Symfony2 を使ってください
注意: 新規プロジェクトは Symfony2 を使ってください

注意: 新規プロジェクトは Symfony2 を使ってください

大事なことなので3回言いました。

導入の仕方は簡単。composer で追加するだけです。 弊社の場合、symfony1.4 も composer で入れていたので、LExpress/symfony1 に書き換えました。

-    "pear-pear.symfony-project.com/symfony": "1.4.*",
+    "lexpress/symfony1": "1.5.*",

インストールすると doctrine1 と sfPropelORMPlugin をオススメされたので、ついでに追加しました。名前からして、無いと動作に支障がありそうなものなので、入れておいた方が無難ではないかと思います。

+    "lexpress/doctrine1": "*",
+    "propel/sf-propel-o-r-m-plugin": "dev-master",

symfony1 だと composer 使ってないプロジェクトも多いかと思います。 でも、そんなんじゃダメだ!!
じゃ、いつ使うか。
今でしょ!!

autoload の変更

LExpress/symfony1 は composer の autoload に対応しています。 (symfony1.4 までは、composer の autoload 非対応) なので、config/ProjectConfiguration.class.php の autoload の所を書き換えます。

-require_once dirname(__FILE__).'/../vendor/pear-pear.symfony-project.com/symfony/symfony/lib/autoload/sfCoreAutoload.class.php';
-sfCoreAutoload::register();
+require_once dirname(__FILE__).'/../vendor/autoload.php';

configureDoctrine() を呼び出す

以前は configureDoctrine() が自動で呼び出されてたのですが、それがなくなったようなので、手動で呼び出すようにしました。

+    $this->configureDoctrine(Doctrine_Manager::getInstance());

jpSimpleMailPlugin

日本語メールの送信に jpSimpleMailPlugin のお世話になっている方は多いのではないのでしょうか。 LExpress/symfony1 では Swift Mailerのバージョンが上がっているので、日本語メールが問題なく送信できます。 しかし、インターフェースに旧バージョンとの互換性がないので、jpSimpleMailPluginが動きません。

そこで jpSimpleMailPlugin のラッパークラスを作って、急場をしのぎました。 今の所うまく動作しているようです。 とりあえず公開しておきますので、興味のある方はどうぞ。 全てのメソッドを実装しているわけではないので、自己責任で。

https://gist.github.com/bto/51175706642cb2ac1f3c

結論

オトバンクではPHPエンジニアを募集してます!!