6
6

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 5 years have passed since last update.

Silexを1.3系から2.0系にアップグレードしたメモ

Posted at

Silexを1.3系から2.0系にアップグレードしたメモ #php #silex - mimemo からの転載です。


Silex 1.3系から2.0系にアップグレードしたので、自分が使っている範囲で気が付いたことをメモ。内部で使われているDIコンテナであるPimpleのバージョンが3系になったのが一番大きな変化。

Serviceのコンテナへの登録方法が変わった

Services - Documentation - Silex - The PHP micro-framework based on the Symfony Components

// 1.3まで $app['xxx'] = $app->share(function () use ($app) { /* 返す */ };
$app['xxx'] = function () use ($app) { /* 返す */ };

今まで同一のインスタンスを取得するためにshareを書いていたが、いちいち書かなくてよくなった。shareはメソッドごとなくなった。

ServiceProviderの仕組みが変わった

Providers - Documentation - Silex - The PHP micro-framework based on the Symfony Components

今までSilex\ServiceProviderInterfaceを実装していたのがPimple\ServiceProviderInterfaceを実装するように変わった。またregisterメソッドの引数もSilex\ApplicationからPimple\Containerに変わった。

さらにbootメソッドを実装していた場合はSilex\Api\BootableProviderInterfaceの実装として行うこととなった(こちらの引数はSilex\Applicationのまま変わらず)。

もちろん、2つのインターフェースを1つのクラスで実装すれば1.3系のころと同じように使える。

エラーハンドラーの引数が変わった

Usage - Documentation - Silex - The PHP micro-framework based on the Symfony Components

// 1.3まで $app->error(function (\Exception $e, $code) {
$app->error(function (\Exception $e, Request $request, $code) {

エラーハンドラーにSymfony\Component\HttpFoundation\Requestのインスタンスが渡るようになった。エラーハンドラー内でステータスコードで処理を分岐させていた場合、今までコードが渡っていた位置にRequestにインスタンスが渡ってくるのでうまく動かなくなるので注意。

細かいやつ

$app['request']がなくなった

今までだと$appSymfony\Component\HttpFoundation\Requestのインスタンスが格納されていたのだけれど、入らなくなった。今のコードをできるだけ変えたくないのであれば、自分でbeforeミドルウェアの内部などで格納しておく必要がある。

Silex\Provider\UrlGeneratorServiceProviderがなくなった

なくなった。

6
6
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
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?