タイトルが長すぎるとうまく説明できないので、さらに詳しく説明させてください。
従来のシステムで使用するために、SF2 の上にミニ フレームワークを構築しています。私たちはミニでシンプルなプラグイン システムを開発しました。各プラグインには、次のような独自の routing.xml があります。
routes:
admin_plugins:
pattern: /manager/
defaults: { _controller: plugins\riCore\AdminController::indexAction }
これらのルートを routeCollection に追加したいのは明らかですが、1 つの調整があります。ルート パターンと id をプラグイン名の先頭に追加します。以前は、プラグインのリストをループして、次のように手動で実行していました。
self::$container->get('router')->getRouteCollection()->add($plugin_lc_name . '_' . $key, new Route($route['pattern'], $route['defaults'], $route['requirements'], $route['options']));
しかし、SF2 カーネルを使用してコンテナーのコンパイルを行うようになったため、次の問題が発生し始めました。
[21-Oct-2012 08:40:57] PHP Fatal error: Call to undefined method Symfony\Component\Routing\RouteCollection::__set_state() in plugins\cache\prod\pluginsProdProjectContainer.php on line 791
getRouteCollection() を試行するのが早すぎたことが原因である可能性があり、おそらく回避策があるのではないかと考えました。